定义kickstart文件1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586#platform=x86, AMD64, 或 Intel EM64T#version=DEVEL# Install OS instead of upgradeinstall# Keyboard layoutskeyboard 'us'# Root password# md5 加密的密码 123rootpw --iscrypted $6$dQz7gaBT$IjteQ2XRZmBJD1usRqFv4yaD1Z2UbO2XBCJ8fndZlertVu2DUgsD7K9QDt7k2M5U3usWEc6HN8W0WpowiPo28/# 系统语言#lang zh_CN.UTF-8lang en_US# System authorization informationauth --useshadow --passalgo=sha512# Use CDROM installation media#cdrom# Use text mode install# 使用字符界面安装操作系统text# Do not configure the X Window System# 不配置图形界面系统skipx# SELinux configurationselinux --disabled# Firewall configurationfirewall --disabled# 设置动态获取 IPnetwork --bootproto=dhcp --device=eth0 --onboot=on# 设置静态 IP# network --bootproto=static --device=eth0 --gateway=192.168.122.1 --ip=192.168.122.100 --nameserver=192.168.122.1 --netmask=255.255.255.0 --activate# 系统安装完成后 重启系统#haltreboot# System timezone 系统时区timezone Asia/Shanghai# System services 系统启动时候自动启动的服务services --enable="chronyd"# System bootloader configuration#系统启动引导方式 vda 是kvm 虚拟机时候的第块磁盘名称bootloader --location=mbr --boot-drive=vda# 清除主引导记录zerombr# 删除原来的分区和磁盘标签clearpart --all --initlabel# 磁盘分区信息,这里采用的是 lvm 自动分区autopart --type=lvm# 下面是自定义分区#part /boot --fstype="xfs" --ondisk=vda --size=200#part / --fstype="xfs" --ondisk=vda --size=10040#part /var --fstype="xfs" --ondisk=vda --size=2048#part /home --fstype="xfs" --ondisk=vda --size=2048# 安装软件%packages@^minimal@corechrony%end# 禁用 kdump%addon com_redhat_kdump --disable --reserve-mb='auto'%end# 用户密码策略%anacondapwpolicy root --minlen=6 --minquality=1 --notstrict --nochanges --notemptypwpolicy user --minlen=6 --minquality=1 --notstrict --nochanges --emptyokpwpolicy luks --minlen=6 --minquality=1 --notstrict --nochanges --notempty%end安装全新的虚拟机123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687#!/usr/bin/env bash# 创建虚拟机## 2021/3/28kvm_install(){ set -ue set -o pipefail # 创建相关目录 ls /home/kvm/{ks,virtualhost,virtual-img} 1>/dev/null 2>&1 || mkdir -p /home/kvm/{virtualhost,virtual-img} # 此程序的变量 KVM_HOME=/home/kvm KVM_ISO=${KVM_HOME}/iso/centos7.iso KVM_KS_FILE=${KVM_HOME}/ks.cfg KVM_IMG_DIR=${KVM_HOME}/virtual-img OS_TYPE="linux" DEF_OS_VARIANT="rhel7" DEF_VM_NAME="centos$(date +%Y%m%dT%H%M%S)" # 设置默认内存大小 1024 M,这个单位是固定的 M,不支持其他单位 DEF_MEM_SIZE=1024 DEF_VCPUS=1 DEF_DISK_SIZE=10G # 交互式安装 echo "输入将要创建的KVM虚拟机名称,不是主机名哦" read -p "默认值${DEF_VM_NAME}>>:" VM_NAME echo "输入将要创建的服务器主机名" read -p "默认 localhost>>:" HOST_NAME read -p "输入虚拟机 CPU 核心数默认 1 示例:2>>:" VCPUS echo "输入虚拟机内存大小,默认1024M,不支持其他单位" read -p "只需要添数字即可>>:" MEM_SIZE echo "输入虚拟机使用的磁盘容量" read -p "默认 10G,[示例写法:15G]>>:" DISK_SIZE # 变量替换, 假如没有输入值, 就使用默认值 VM_NAME=${VM_NAME:-$DEF_VM_NAME} HOST_NAME=${HOST_NAME:-localhost.localdomain} VCPUS=${VCPUS:-$DEF_VCPUS} MEM_SIZE=${MEM_SIZE:-$DEF_MEM_SIZE} DISK_SIZE=${DISK_SIZE:-$DEF_DISK_SIZE} OS_VARIANT=${OS_VARIANT:-$DEF_OS_VARIANT} new_disk=${KVM_IMG_DIR}/${VM_NAME}.qcow2 if [[ ! "${DISK_SIZE}" =~ G$ ]] || [[ ! "${DISK_SIZE::-1}" =~ ^[0-9]+$ ]] then echo "格式不正确,正确示例:20G" exit fi if [ ! -f "${new_disk}" ];then qemu-img create -f qcow2 ${new_disk} ${DISK_SIZE} fi # 开始创建 virt-install -v \ --arch x86_64 --virt-type kvm \ --name ${VM_NAME} \ --memory ${MEM_SIZE} \ --vcpus ${VCPUS} \ --os-type ${OS_TYPE} \ --location ${KVM_ISO} \ --network default \ --graphics none \ --os-variant ${OS_VARIANT} \ --initrd-inject "${KVM_KS_FILE}" \ --extra-args "ks=file:/ks.cfg \ console=tty0 console=ttyS0,115200n8 \ hostname=${HOST_NAME}" \ --disk ${new_disk},cache=writeback,io=threads,bus=virtio }