linux基础(十九)脚本安装虚拟机

一、脚本安装虚拟机

vim create_vm.sh

#!/bin/bash ##命令运行环境的指定

virt-install \     ##安装虚拟机

--name $1 \ ##虚拟机名称指定,$1表示脚本后的第一串字符

--ram 1024 \ ##内存

--file /var/lib/libvirt/images/$1.img \ ##硬盘文件

--file-size 8 \  ##硬盘文件大小

--cdrom /home/isos/rhel-server-7.0-x86_64-dvd.iso &  ##安装源指定

##这里还可以使用http方式访问在软件安装那一章搭建的网络镜像源,语法:--location http://172.25.254.48/rhel7.0 &

linux基础(十九)脚本安装虚拟机linux基础(十九)脚本安装虚拟机

然后就可以手动进行后续的安装了

二、虚拟机快照

命令:qemu-img create -f qcow2 -b vm1.qcow2 vm2.qcow2

##vm1原虚拟机名字,vm2快照虚拟机的名字

快照的作用是将原虚拟机的硬盘文件(.qcow2文件/redhat7.img文件)做一份拷贝出来,这个新的vm2文件可以被用来创建一个和vm1一模一样的新虚拟机,在vm2上面做任何操作都不会影响原虚拟机硬盘文件,但是前提是要保证原本的母盘文件(vm1.qcow2)一直存在且不再被修改,因为快照也是在调用原虚拟机硬盘文件,如果原虚拟机还在使用会造成数据冲突。

快照的意义在哪呢:我们可以在快照虚拟机上做一些危险的操作,如rm -rf /*等。它不会影响原虚拟机硬盘文件,而且快照虚拟机被玩坏了还可以再使用qemu-img create -f qcow2 -b vm1.qcow2 vm2.qcow2创建一个快照虚拟机继续玩,这个虚拟机依然跟原vm1虚拟机环境配置等一模一样。

测试:

[[email protected] mnt]# cd /var/lib/libvirt/images/

[[email protected] images]# qemu-img create -f qcow2 -b server1.img vm2.img

##因为是redhat7的环境,所以这里是.img类型

Formatting 'vm2.img', fmt=qcow2 size=8589934592 backing_file='server1.img' encryption=off cluster_size=65536 lazy_refcounts=off 

[[email protected] images]# du -sh server1.img 

8.1G server1.img

[[email protected] images]# du -sh vm2.img 

196K vm2.img

##快照很小,可见,这就是建立快照后母盘文件server.img还必须存在的理由

三、快照+脚本安装虚拟机

 

#!/bin/bash

virsh destroy $1 &> /dev/null          #关闭虚拟机

virsh undefine $1 &> /dev/null         #删除前端文件,这是为了防止母盘文件被破坏,以及使用快照不能同时使用原虚拟机

qemu-img create -f qcow2 -b /var/lib/libvirt/images/$1.img  /var/lib/libvirt/images/$2.img &> /dev/null

virt-install \

--name $2 \                    #快照虚拟机名字

--ram 1000 \                   #内存

--disk /var/lib/libvirt/images/$2.img \    #提取快照文件

--import &> /dev/null &                 #跳过安装过程

 

[[email protected] mnt]# sh create_qemu.sh server1 qemu

几秒之后,一个名为qemu的快照虚拟机就能用了,和server1虚拟机一模一样

linux基础(十九)脚本安装虚拟机

可以看到,管理器中的server1前端也消失了

linux基础(十九)脚本安装虚拟机

四、使用kickstart自动安装脚本安装虚拟机

1.介绍

kickstart

使用 kickstart, 系统管理员可以创建一个包含安装期间所有常见问题的答案的文件,以自动安装 Red Hat Enterprise Linux Kickstart 类似于 Oracle solaris 中的 Jumpstart 或 Microsoft Windows 的无人值守安装

2.制作ks.cfg文件

执行system-config-kickstart打开kickstart脚本制作工具,

如果命令不存在执行yum install -y system-config-kickstart即可

按照如下配置:

linux基础(十九)脚本安装虚拟机

linux基础(十九)脚本安装虚拟机

linux基础(十九)脚本安装虚拟机linux基础(十九)脚本安装虚拟机linux基础(十九)脚本安装虚拟机linux基础(十九)脚本安装虚拟机linux基础(十九)脚本安装虚拟机linux基础(十九)脚本安装虚拟机

linux基础(十九)脚本安装虚拟机

linux基础(十九)脚本安装虚拟机linux基础(十九)脚本安装虚拟机linux基础(十九)脚本安装虚拟机

其余全部默认。

这是每个项目的意思:

linux基础(十九)脚本安装虚拟机

File-->Save-->选择一个目录保存ks.cfg文件,然后关闭kickstart confugurator这个界面即可

由于kickstart confugurator这个工具有bugPackage Selection这一项需要手动修改文件才能添加上:

vim /mnt/ks.cfg

最后一行加上,如果需要增加什么服务如lftp,可以在%end之前单独写一行lftp即可:

%packages    #对应图像工具中的Package Selection这一项  

@base        #只安装基础包  

%end  

第11行,时区改为亚洲/上海 

11 timezone Asia/Shanghai  

这是ks文件的参数解析:

%end 目的结束

%packages 安装包

%pre 安装前执行脚本

%post 安装后执行脚本

url 安装源路径

repo yum 源地址

text 文本安装

vnc 安装是开启vnc

Askmethod 交互模式

clearpart 删除分区

part 分区策略

ignoredisk 跳过磁盘

bootloader 引导程序设定

volgroup lvm组设定

logvol lvm设定

zerombr 清空mbr

network 网络设定

firewall 火墙设定

lang 语言设定

keyboard 键盘设定

timezone 时区设定

auth 认证方式选择

rootpw root密码

seliux selinux设定

services 开机启动服务%packages

group 组建立

user 用户建立

logging 安装日志设定

fireboot 首次启动设定

reboot.poweroff.halt 安装完成后自动执行动作

3.检查ks.cfg文件语法,没有报错就表示正常

[[email protected] mnt]# ksvalidator ks.cfg
[[email protected] mnt]# chmod 755 ks.cfg 

cp /mnt/ks.cfg /var/www/html/ 复制到http发布目录,不要用mv,会出问题,暂时未知原因

4.打开真机http服务

ks.cfg脚本中需要访问172.25.254.48上http目录下的镜像

软件安装那一章有开启方法

5.打开真机dhcp服务

ks.cfg脚本中设定网络类型为dhcp,因此需要有dhcp服务支持

管理网络那一章有开启方法

6.执行脚本

vim create_ks.sh

#!/bin/bash

virt-install \

--name $1 \

--ram 1024 \

--file /var/lib/libvirt/images/$1.img \

--file-size 8 \

--vcpus 1 \                       ##几颗cpu

--extra-arg "ks=http://172.25.254.48/ks.cfg" \     ##ks脚本

--location http://172.25.254.48/rhel7.0 &          ##镜像地址

linux基础(十九)脚本安装虚拟机

然后虚拟机就会自动分区,自动安装ks.cfg中的配置直到新的虚拟机被建立

linux基础(十九)脚本安装虚拟机linux基础(十九)脚本安装虚拟机

7.扩展

既然ks.cfg文件以及镜像文件都可以通过http服务访问到,那么也可以把172.25.254.48这台真机当成一台ks.cfg服务器,如果局域网内还有另一台真机需要装系统就可以使用172.25.254.48这台服务器完成无人值守安装。具体方法待总结。