1. 脚本文件
#!/usr/bin/env bash
# 创建虚拟机
## 2021/3/28kvm_install(){set -ueset -o pipefail# 创建相关目录ls /home/kvm/{ks,virtualhost,virtual-img} 1>/dev/null 2>&1 || mkdir -p /home/kvm/{virtualhost,virtual-img}# 此程序的变量KVM_HOME=/home/kvmKVM_ISO=${KVM_HOME}/iso/centos7.isoKVM_KS_FILE=${KVM_HOME}/ks.cfgKVM_IMG_DIR=${KVM_HOME}/virtual-imgOS_TYPE="linux"DEF_OS_VARIANT="rhel7"DEF_VM_NAME="centos$(date +%Y%m%dT%H%M%S)"# 设置默认内存大小 1024 M,这个单位是固定的 M,不支持其他单位DEF_MEM_SIZE=1024DEF_VCPUS=1DEF_DISK_SIZE=10G# 交互式安装echo "输入将要创建的KVM虚拟机名称,不是主机名哦"read -p "默认值${DEF_VM_NAME}>>:" VM_NAMEecho "输入将要创建的服务器主机名"read -p "默认 localhost>>:" HOST_NAMEread -p "输入虚拟机 CPU 核心数默认 1 示例:2>>:" VCPUSecho "输入虚拟机内存大小,默认1024M,不支持其他单位"read -p "只需要添数字即可>>:" MEM_SIZEecho "输入虚拟机使用的磁盘容量"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}.qcow2if [[ ! "${DISK_SIZE}" =~ G$ ]] || [[ ! "${DISK_SIZE::-1}" =~ ^[0-9]+$ ]]thenecho "格式不正确,正确示例:20G"exitfiif [ ! -f "${new_disk}" ];thenqemu-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}
2. 自动应答文件
#platform=x86, AMD64, 或 Intel EM64T
#version=DEVEL
# Install OS instead of upgrade
install
# Keyboard layouts
keyboard 'us'
# Root password
# md5 加密的密码 123
rootpw --iscrypted $6$dQz7gaBT$IjteQ2XRZmBJD1usRqFv4yaD1Z2UbO2XBCJ8fndZlertVu2DUgsD7K9QDt7k2M5U3usWEc6HN8W0WpowiPo28/
# 系统语言
#lang zh_CN.UTF-8
lang en_US# System authorization information
auth --useshadow --passalgo=sha512
# Use CDROM installation media
#cdrom# Use text mode install
# 使用字符界面安装操作系统
text# Do not configure the X Window System
# 不配置图形界面系统
skipx# SELinux configuration
selinux --disabled# Firewall configuration
firewall --disabled# 设置动态获取 IP
network --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# 系统安装完成后 重启系统
#halt
reboot# 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
@core
chrony
%end# 禁用 kdump
%addon com_redhat_kdump --disable --reserve-mb='auto'%end# 用户密码策略
%anaconda
pwpolicy root --minlen=6 --minquality=1 --notstrict --nochanges --notempty
pwpolicy user --minlen=6 --minquality=1 --notstrict --nochanges --emptyok
pwpolicy luks --minlen=6 --minquality=1 --notstrict --nochanges --notempty
%end
搜集自网络
原文:利用脚本界面创建一个新的虚拟机