1. 程式人生 > >kvm使用kickstart文件自動安裝系統

kvm使用kickstart文件自動安裝系統

dhcp服務器 python device iso enable pla args -- bsp

定kvm已經準備好


1、創建磁盤

qemu-img create -f qcow2 /kvm/os/vm-01.qcow2 16G

2、上傳或下載安裝鏡像

mkdir -p /kvm/iso

cd /kvm/iso

上傳事先下載好的鏡像文件到/kvm/iso/目錄下,或在線下載

wget -O /kvm/iso/
CentOS-7-x86_64-Minimal-1804.iso https://mirrors.aliyun.com/centos/7.5.1804/isos/x86_64/CentOS-7-x86_64-Minimal-1804.iso

3、創建kickstart配置文件

生成密碼加密字符串, 即虛擬機的root用戶密碼 :

grub-crypt --sha-512                #centos 6.x
python -c ‘import crypt,getpass;pw=getpass.getpass();print(crypt.crypt(pw) if (pw==getpass.getpass("Confirm: ")) else exit())‘              #centos 7.x
perl -e ‘print crypt("1234abcdefg",q($1$password)),"\n"‘                                                        #centos 7.x

vi /root/ ks.cfg
# install
install
# password
rootpw  --iscrypted $6$yz7YWSt2MmouUuTu$cjz1eZf9lhMke2Ply8P5Jngrwxh5lb8zwmC124JlXdOnSvrKZaD2/IWdVgahFfNIykbYCBnzCqbbVwjZH59YA.
authconfig --enableshadow --passalgo=sha512
firewall --service=ssh
text
firstboot --disable
keyboard us
lang en_US.UTF-8
selinux --disabled timezone Aisa/Shanghai # 配置網絡 network --onboot yes --device eth0 --bootproto static --ip 10.0.91.82 --netmask 255.255.255.0 --gateway=10.0.91.1 --nameserver=1.1.1.1,8.8.8.8 --hostname test.com --noipv6
如果局域網內有dhcp服務器,也可自動獲取網絡配置
#network --bootproto=dhcp --device=eth0 --onboot=on --ipv6=auto
# 指定引導分區 zerombr bootloader
--location=mbr --driveorder=vda # 清除硬盤分區 clearpart --drives=vda --all --initlabel

part /boot --fstype="xfs" --ondisk=vda --size=500
part / --fstype="xfs" --ondisk=vda --grow --size=1
part swap --fstype="swap" --ondisk=vda --recommende

reboot
%packages
@base

註意:

1)、由於安裝源直接在virt-install 命令中指定,因此ks文件中沒有安裝源配置項

2)、由於安裝的是虛擬機,而kvm中中qemu-img創建的磁盤,在kvm中默認識別為vda、vdb...之類的磁盤,因此ks文件中,不能再像安裝物理機一樣指定為sda、sdb之類的磁盤

4、開始安裝, 使用text console

virt-install \
--name=vm-03 \
--disk path=/kvm/os/vm-03.qcow2,device=disk,bus=virtio,perms=rw,cache=writethrough \
--graphics none \
--vcpus sockets=2,cores=2,threads=2 \
--ram=16000 \
--location=/kvm/iso/CentOS-7-x86_64-DVD-1804.iso \
--network bridge=br0 \
--os-type=linux \
--os-variant=rhel7 \
--initrd-inject=/kvm/iso/ks.cfg \
--extra-args="ks=file:/ks.cfg console=tty0 console=ttyS0,115200n8"

如果局域網中配置了nfs或ftp或http服務,可直接從這些服務上拉取鏡像文件

下面以http為例:

yum install httpd -y

mkdir /var/www/html/os

systemctl start httpd && systemctl enable httpd && systemctl status httpd

mount /dev/sr0 /var /var/www/html/os

在瀏覽器中訪問http://IP/os

技術分享圖片

可看到鏡像已經中文件已經可訪問

執行下述指令進行安裝:

virt-install \
--name=vm-05 \
--disk path=/kvm/os/vm-05.qcow2,device=disk,bus=virtio,perms=rw,cache=writethrough \
--graphics none \
--vcpus sockets=2,cores=2,threads=2 \
--ram=16000 \
--location="http://10.0.91.10/os" \
--network bridge=br0 \
--os-type=linux \
--os-variant=rhel7 \
--initrd-inject=/kvm/iso/ks.cfg \
--extra-args="ks=file:/ks.cfg console=tty0 console=ttyS0,115200n8"

等待安裝完成,安裝完成後,會提示登錄界面:

技術分享圖片

註意:使用ks安裝時,也可通過--graphics 選項指定vnc選項,如果指定vnc選項,安裝界面可通過vnsviewer查看,但是當前終端不會顯示安裝過程

指令如下:

virt-install \
--name=vm-05 \
--disk path=/kvm/os/vm-05.qcow2,device=disk,bus=virtio,perms=rw,cache=writethrough \
--graphics vnc,listen=0.0.0.0,port=5934 \
--vcpus sockets=2,cores=2,threads=2 \
--ram=16000 \
--location="http://10.0.91.10/os" \
--network bridge=br0 \
--os-type=linux \
--os-variant=rhel7 \
--initrd-inject=/kvm/iso/ks.cfg \
--extra-args="ks=file:/ks.cfg console=tty0 console=ttyS0,115200n8"

kvm使用kickstart文件自動安裝系統