使用Kickstart在KVM上自动化RHEL和CentOS安装
虚拟化的主要优势
服务隔离:应用程序隔离和消除兼容性问题改进的系统安全性和可靠性:虚拟机和底层物理硬件之间的抽象更快的服务器配置:使用快照和模板更快的灾难恢复:保持虚拟机的最新快照-容易重新部署动态负载平衡:将过载实时迁移到未充分利用的服务器
什么是Kickstart?
Red Hat为系统管理员创建的工具,可帮助他们自动安装Red Hat Linux发行系列。
必须创建一个文件,其中包含在典型安装过程中通常会问到的所有问题的答案。
Kickstart文件可以保存在单个服务器系统上,并可以在安装过程中由单个计算机读取,以准备在KVM上进行Kickstart。
如何在KVM安装上执行Kickstart?
可以使用本地CD-ROM,本地硬盘驱动器或者通过NFS,FTP或者HTTP执行Kickstart安装。
要使用kickstart,我们必须:创建一个kickstart文件。
使用kickstart文件创建启动媒体或者进行kickstart网络上可用的文件。
使安装树可用。
开始kickstart安装。
在这篇文章中,我将为我们提供基本的kickstart文件以进行快速入门;我们可以对其进行修改和改进,以适合用例和环境设置。
用过的 virt-install
还提供了命令。
为了节省我们很多时间,我编写了一个简单的bash脚本,该脚本使旋转新虚拟机的过程变得简单而又省力。
kickstart文件
这是一个kickstart文件,可入门。
有了目标后,将其编辑并另存为 ks.cfg
在Web服务器根目录下。
############################################################### ## Environment setup ################################################################ # url --url="http://192.168.122.1:8090/cent7" text cdrom auth --enableshadow --passalgo=sha512 keyboard --vckeymap=us --xlayouts='us' lang en_US.UTF-8 eula --agreed reboot ############################################################### ## network configuration ################################################################ network --bootproto=static --ip=192.168.122.100 --gateway=192.168.122.1 --netmask=255.255.255.0 --noipv6 --device=eth0 --nameserver=192.168.122.1,8.8.8.8 --activate #network --bootproto=dhcp --device=eth0 --ipv6=auto --activate network --hostname=server1.example.com timezone Africa/Nairobi --isUtc ############################################################### ## partitioning ################################################################ ignoredisk --only-use=vda bootloader --location=mbr --boot-drive=vda zerombr clearpart --none --initlabel autopart --type=lvm # part swap --asprimary --fstype="swap" --size=1024 # part /boot --fstype xfs --size=200 # part pv.01 --size=1 --grow # volgroup rootvg01 pv.01 # logvol/--fstype xfs --name=lv01 --vgname=rootvg01 --size=1 --grow ########################################################################################### # # User Accounts # Generate encrypted password: python -c 'import crypt; print(crypt.crypt("My Password"))' # Or openssl passwd -1 password ############################################################################################ rootpw password # user --groups=wheel --name=josepy --password=password --gecos="Mutai Josphat" ############################################################### ## SELinux and Firewalld ################################################################ selinux --enforcing #selinux --permissive #selinux --disabled # firewall --enabled --http --ssh --ftp --port=https:tcp --port=ipp:tcp # firewall --disabled ############################################################### ## Software Packages ################################################################ %packages --nobase --ignoremissing @core @base vim bash-completion %end
很少要更改的参数,也许 IP address
和 hostname
。
下面的bash脚本用于安装新的虚拟机-会问我们几个问题
#!/usr/bin/env bash # Update kickstart file echo -en "Enter Hostname: " read HOST_NAME echo -en "Enter IP Address: " read IP_ADDRESS sudo sed -i 's/server1/'$HOST_NAME'/g' /srv/http/ks.cfg sudo sed -i 's/192.168.122.100/'$IP_ADDRESS'/g' /srv/http/ks.cfg ## Pre-defined variables echo "" MEM_SIZE=1024 VCPUS=1 OS_VARIANT="rhel7" ISO_FILE="$HOME/iso/CentOS-7-x86_64-Everything-1611.iso" echo -en "Enter vm name: " read VM_NAME OS_TYPE="linux" echo -en "Enter virtual disk size : " read DISK_SIZE sudo virt-install \ --name ${VM_NAME} \ --memory=${MEM_SIZE} \ --vcpus=${VCPUS} \ --os-type ${OS_TYPE} \ --location ${ISO_FILE} \ --disk size=${DISK_SIZE} \ --network bridge=virbr0 --network bridge=docker0 \ --graphics=none \ --os-variant=${OS_VARIANT} \ --console pty,target_type=serial \ -x 'console=ttyS0,115200n8 serial' \ -x "ks=http://192.168.122.1:8090/ks.cfg"
代替 $HOME/iso/CentOS-7-x86_64-Everything-1611.iso
加上ISO文件的路径, 192.168.122.1:8090
与Web服务器IP地址托管 ks.cfg
文件。
我们可以修改其他参数,例如 VCPU,RAM and Bridge
要适合使用,对于虚拟磁盘大小,只需输入数字,例如 10
为了 10 GB
将脚本保存到名为 create_vm.sh
。
使它可执行并运行
$chmod +x create_vm.sh $./create_vm.sh