一,生成自动应答文件
由于安装虚拟机的过程中我们使用到了自动应答文件,而这个文件本身写起来比较复杂,所以我们在已有的虚拟机里面生成一个文件,然后在上面做修改。
1,虚拟机里面安装httpd,system-config-kickstart,启用httpd,关闭防火墙
[[email protected] ~]# yum install httpd
[[email protected] ~]# systemctl start httpd
[[email protected] ~]# systemctl enable httpd
[[email protected] ~]# yum install system-config-kickstart
[[email protected] ~]# systemctl stop firewalld.service
[[email protected] ~]# systemctl disable firewalld.service
2,虚拟机执行system-config-kickstart生成应答脚本
##在真机系统中存在这样一个文件 anaconda-ks.cfg,这个东西就是一个应答文件,这个文件中记录着装机过程中要做的应答##
##encrypt root password是在应答文件中不以明文显示
##perform installtion 图形还是纯文本安装界面
##HTTP Server 这里我们选用真机共享yum源的方式进行安装
##HTTP Directory 这里是镜像挂载点的目录source7.0是在/var/www/html下面的,注意这个挂载点就是可以作为镜像使用的
##点击add添加分区
##Mount Point 选择/boot Fixed size 输入200 OK
##点击add添加分区
##File System Type选择swap Fixed size 输入500 OK
##点击add添加分区
##Mount Point 选择/ 选择Fill all unused space on disk OK
##由应答文件生成的虚拟机是可以再次修改的,所以像这样的项可以大概写一下,安装好之后可以再次修改
##防火墙可以关闭
剩下的四项默认
3,ctrl+s保存应答文件为ks.cfg,保存在/var/www/html/
二,浏览器查看
生成的这个文件放在虚拟机的/var/www/html/,用浏览器查看是否成功
成功!
三,修改自动应答文件,ksvalidator检查错误
1,
##在生成ks.cfg图形化过程中由于它本身存在bug所以不能设置安装虚拟机的类型,比如最小化安装就是纯文本系统,或者在安装系统的同时安装软件,这需要在这个文件手动输入
%packages ##指定软件包
@base ##安装系统的基本组建,这个类型最终虚拟机是纯文本的
lftp ##安装系统同时安装lftp软件服务
%end
2,检测修改文件的语法错误(注意:这个命令不检查逻辑错误)
[[email protected] ~]# cd /var/www/html/
[[email protected] html]# ls
ks.cfg
[[email protected] html]# ksvalidator ks.cfg
四,真机编写虚拟机全自动安装脚本
注意:
1,这里的--location http://172.25.254.156/source7.0 就是--cdrom /home/kiosk/Desktop/rhel-server-7.0-x86_64-dvd.iso ,只不过我们把镜像挂载到source7.0下,并用url的方式来写
2,rhel7.0里面network的写法
3,--extra-args "ks=http://172.25.254.100/ks.cfg"就是导入自动应答文件,这个的作用相当于我们手动配置system-config-kickstart的过程,原来脚本这里是--import
4,脚本里面这两个地址存在并且能够使用就行,也就是说这个地址可以是别人的,我们拿来用就好,这样在安装多个虚拟机时,提高了效率,不必自己一个一个手动安装
五,实验与排错
1,调用脚本
[[email protected] Desktop]# chmod +x vm_create.sh
[[email protected] Desktop]# sh vm_create.sh redhat ##创建一个redhat虚拟机
2,如果安装过程中是出现让你选择redhat的版本时卡住了,那么说明前面8行安装程序没问题,后面的自动应答文件写的有问题。
3,当出现这样时,只需要等待就好
4,
纯文本安装成功!!!!(如果需要图形化安装,在%package 里面改@的内容)
同时我们可以看到由于修改了自动应答文件,lftp已经安装成功(lftp只是一个例子,也可以安装其他软件)
5,如果确定脚本没有问题,大部分情况是ip冲突的问题,此时要重新配置dhcp池,因为在这个安装过程中我们是选择的动态ip,可能会出现ip冲突的情况,详见dhcp池篇。
六,批量安装虚拟机
这个脚本适合批量自动安装虚拟机,只要其中一台主机上面有镜像,有虚拟机并且能够按上面的步骤生成自动应答文件,网络连通,那么就可以在每台主机上面安装虚拟机。
##########如果ip存在,网络位也相同,但是虚拟机与真机之间网络不连通的解决方法#############
1,virt-manger删除网卡(NIC右健remove),
2,右健重新添加,注意把Device model变成virtio