使用Kickstart在KVM上自动化RHEL和CentOS安装

时间:2020-02-23 14:31:25  来源:igfitidea点击:

虚拟化的主要优势

服务隔离:应用程序隔离和消除兼容性问题改进的系统安全性和可靠性:虚拟机和底层物理硬件之间的抽象更快的服务器配置:使用快照和模板更快的灾难恢复:保持虚拟机的最新快照-容易重新部署动态负载平衡:将过载实时迁移到未充分利用的服务器

什么是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 addresshostname
下面的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