Linux_批量安装虚拟机

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/sr_1114/article/details/83536781

《Linux基础_安装虚拟机》这篇文章讲述了如何安装虚拟机,但如果需要安装大量的虚拟机这种方法就会显得非常笨拙。所以我决定写一个脚本去完全实现虚拟机的安装过程,只要执行该脚本,不需要有任何的选择就可以得到一个全新的虚拟机。这时就需要一个软件的帮忙kickstart
 在安装虚拟机时,系统会提出很多问题需要用户选择,kickstart就是将这些所有问题的答案记录在一个脚本中,在系统安装时自动读取该文件,实现虚拟机的自动安装。
 要安装虚拟机首先需要相应的镜像,并将其挂载,我将镜像和安装脚本放在了http的发布目录下,在安装时通过网络获取。如何将镜像挂载到http的发布目录下,请参考《Linux_网络yum源配置及常用命令》这篇文章。在确保可以通过网络获取到镜像之后就可以安装kickstart软件了。如下图,就是可以通过网络访问到172.25.254.80主机的镜像了:
在这里插入图片描述
kickstart软件在红帽发布的镜像中就有,所以在配置好yum源后可以直接安装。安装步骤如下:

[root@foundation80 iso7.2]# yum install system-config-kickstart

安装完成后执行以下命令:

[root@foundation80 iso7.2]# system-config-kickstart

执行该命令之后会看到如下窗口:
在这里插入图片描述

Default Language	#操作系统的语言
Keyboard		#键盘类型
Time Zone		#时区
Root password		#管理员密码
Encrypt root password	#在选则了该选项之后,在生成的脚本中的管理员密码是进行加密的,否则为明文。
Target Architecture	#操作系统架构
Reboot system after installtion	#安装完成后重启
Perform installation in text mode(graphical is default)#不安装图形,不打对勾时为开启图形界面

然后选择Installation Method选项:
在这里插入图片描述
 如上图,选择通过http网络获取安装源,安装源在172.25.254.80主机的/var/www/html/rhel7.2目录下挂载,因为/var/www/html目录为http的默认发布目录,所以不用写。
 继续设置Boot Loader Options,选择install new boot loader,表示开启一个全新的引导,如下图:
在这里插入图片描述
编辑Partition Information,配置分区。

Master Boot Record		#将之前的分区记录全部清除
Remove all existing partitions	#将已经存在的分区全部清除
Initialize the disk label	#初始化磁盘

在这里插入图片描述
然后点击Add添加分区
添加boot分区,200M
在这里插入图片描述
添加swap分区,500M
在这里插入图片描述
将剩余的空间全部给/分区
在这里插入图片描述
点击ok添加完成,添加网络设备,选择Network Configuration点击Add Network Device添加网卡
在这里插入图片描述
 有什么网卡就写什么网卡,方式选择为DHCP模式,需要在同一网络中存在DHCP服务器,如何配置DHCP服务器请参考《Linux基础_dhcp动态获取IP》这篇文章。
在这里插入图片描述
添加完网卡如下图:
在这里插入图片描述
Authentication认证,不需要配置,保持默认就可以了
在这里插入图片描述
Firewall Configuration防火墙配置,将SELlinux内核级加强防火墙设置为Disabled,也可以保持默认。
在这里插入图片描述
点击Display Configuration,如图选择,表示不安装图形界面。
在这里插入图片描述
因为软件自身问题Package Selection不能选择。
在这里插入图片描述
Pre-Installation是在安装前做的事情,没有需要,所以么有写。
在这里插入图片描述
Post-Installation是在安装后所执行的命令,我配置了以下yum源,也可以不用写。
在这里插入图片描述
点击左上方的file,保存文件,将文件保存到/var/www/html/目录下,使可以通过网络获取到该脚本。在这里插入图片描述
在这里插入图片描述
保存完成之后在/var/www/html/目录下就会产生一个ks.cfg文件,该文件名为自定义的文件名。
在这里插入图片描述
在浏览上测试,看是否可以通过网络查看到该脚本。
在这里插入图片描述
 是否还记得Package Selection不能选择,如果不手动添加,那么在安装过程中还是需要回答问题,就违背了自动安装的目的,所以可以自行编辑该脚本。

[root@foundation80 html]# vim ks.cfg 
%packages
@base	#@符号表示一个组
lftp	#lftp软件
%end  

可以用以下命令检测该文件是否有语法上的错误。

[root@foundation80 html]# ksvalidator ks.cfg  

ks.cfg这个文件中的内容就是将刚才选择的内容记录成脚本,在安装虚拟机的过程中自动获取该脚本,实现自动安装。文件内容如下:

[root@foundation80 html]# cat ks.cfg 
#platform=x86, AMD64, or Intel EM64T
#version=DEVEL
# Install OS instead of upgrade
install
# Keyboard layouts
keyboard 'us'
# Root password
rootpw --iscrypted $1$zuvQz.oG$aHm3nzvLZrqJI5i9UAmdx.
# System timezone
timezone Asia/Shanghai
# Use network installation
url --url="http://172.25.254.80/rhel7.2"
# System language
lang en_US
# Firewall configuration
firewall --disabled
# System authorization information
auth  --useshadow  --passalgo=sha512
# Use text mode install
text
firstboot --disable
# SELinux configuration
selinux --disabled

# Network information
network  --bootproto=dhcp --device=eth0
# Reboot after installation
reboot
# System bootloader configuration
bootloader --location=mbr
# Clear the Master Boot Record
zerombr
# Partition clearing information
clearpart --all --initlabel
# Disk partitioning information
part /boot --fstype="xfs" --size=200
part swap --fstype="swap" --size=500
part / --fstype="xfs" --grow --size=1

%post
rm -fr /etc/yum.repos.d/*
cat >> /etc/yum.repos.d/yum.repo<<EOF
[rhel7.2]
name=rhel7.2
baseurl=http://172.25.254.80/rhel7.2
gpgcheck=0
EOF
%end

%packages
@base
lftp
%end

下来编辑安装虚拟机的脚本:

[root@foundation80 mnt]# vim vm_create.sh 
#!/bin/bash	#执行环境
virt-install \	#安装虚拟机的命令
--name $1 \	#虚拟机的名字                                                                        
--ram 1024 \	#内存大小
--vcpus 1 \	#cpu个数
--disk /var/lib/libvirt/images/$1.qcow2,size=9,bus=virtio \	#磁盘配置
--network source=br0,model=virtio \		#网络配置
--location http://172.25.254.80/rhel7.2 \	#安装源地址
--extra-args "ks=http://172.25.254.80/ks.cfg"	#调取ks.cfg脚本

 安装脚本完成之后,执行脚本,可以给vm_create1.sh执行权限用绝对路径执行脚本,也可以用sh执行脚本,如下:

[root@foundation80 mnt]# sh vm_create1.sh node2

执行完成之后就可以直接得到一个虚拟机。
在这里插入图片描述
 因为没有安装图形界面,所以么有图形。在安装过程中如果在以下界面之前有错误,则是安装脚本vm_create1.sh的问题,如果在此页面出现错误,就是ks.cfg文件的错误。
在这里插入图片描述
 使用脚本方式适用于大量的安装虚拟机,只需要执行一个命令就可以得到一个全新的虚拟机,大大减小了重复的工作,有效的提高了工作效率。

猜你喜欢

转载自blog.csdn.net/sr_1114/article/details/83536781