KVM--基于KickStart 部署Linux虚拟机(五)

2022-06-07 18:15:58 浏览数 (1)

概述

kickstart是一个利用Anconda工具实现服务器自动化安装的方法;通过生成的kickstart配置文件ks.cfg,服务器安装可以实现从裸机到全功能服务的的非交互式(无人值守式)安装配置。ks.cfg是一个简单的文本文件,文件包含Anconda在安装系统及安装后配置服务时所需要获取的一些必要配置信息(如键盘设置,语言设置,分区设置等);Anconda直接从该文件中读取必要的配置,只要该文件信息配置正确无误且满足所有系统需求,就不再需要同用户进行交互获取信息,从而实现安装的自动化。

kickstart的优势

  1. 流线化自动化的安装;
  2. 快速大量的裸机部署;
  3. 强制建立的一致性(软件包,分区,配置,监控,安全性)
  4. 减少人为的部署失误

使用Kickstart方法安装的过程

  1. 创建一个kickstart文件
  2. 创建有kickstart文件的引导介质或者使文件在网络上可用;
  3. 开始ks安装:anconda自身启动 -->选取ks安装模式--> 从ks文件读取配置 --> 系统安装

kickstart文件主要包括三个部分:命令段,程序包段,脚本段

命令段

指明各种安装前配置,如键盘类型等

命令段中的常见命令:

keyboard: 设定键盘类型

lang: 语言类型

zerombr:清除mbr

clearpart:清除分区

part: 创建分区

rootpw: 指明root的密码

timezone: 时区

text: 文本安装界面

network:指定网络设置

firewall:设置防火墙设置

selinux:设置selinux设置

reboot:安装完自动重启

user:安装完成后为系统创建新用户

url: 指明安装源

程序包段

指明要安装的程序包组或程序包,不安装的程序包等

代码语言:javascript复制
%packages
 @^environment group:指定环境包组,如:@^minimal-environment
 @group_name
 package
-package
%end

脚本段

  • %pre: 安装前脚本
  • %post: 安装后脚本

安装 Centos 7 虚拟机

1、创建磁盘

代码语言:javascript复制
qemu-img   create -f qcow2   /kvm/img/vm01.qcow2  20G

2、上传安装镜像

上传镜像文件到/kvm/iso/目录下

代码语言:javascript复制
[root@kvm-node1 iso]# cd  /kvm/iso
[root@kvm-node1 iso]# ls
CentOS-7-x86_64-DVD-2009.iso  cn_windows_10_1809.iso  virtio-win-0.1.215.iso

3、创建kickstart配置文件

代码语言:javascript复制
cat /mnt/ks/ks.cfg 
# install
install
# password 注意空格问题
rootpw q1w2E#R$
authconfig --enableshadow --passalgo=sha512
firewall --disabled
text
firstboot --disable
keyboard us
lang en_US.UTF-8
selinux --disabled
timezone Asia/Shanghai 
reboot
services --enabled kdump
# 配置网络
#network --onboot yes --device eth0 --bootproto static --ip 10.0.91.82 --netmask 255.255.255.0 --gateway=10.0.91.1 --nameserver=1.1.1.1,8.8.8.8 --hostname test.com --noipv6
#如果局域网内有dhcp服务器,也可自动获取网络配置
network  --bootproto=dhcp --device=eth0 --onboot=on --noipv6
# 指定引导分区
bootloader --location=mbr --driveorder=vda
zerombr
# 清除硬盘分区
clearpart --drives=vda --all --initlabel
part /boot --fstype="xfs" --ondisk=vda --size=500
part pv.01 --size=1 --grow --ondisk=vda
volgroup centos  pv.01
logvol swap  --fstype="swap" --vgname=centos --size=4096 --name=swap
logvol / --fstype="xfs" --vgname=centos --size=10240  --name=root
#
%packages
@base
@development
vim
unzip
tree
telnet
tcpdump
sysstat
net-tools
%end

注意:kvm中qemu-img创建的磁盘,在kvm中默认识别为vda、vdb...之类的磁盘,因此ks文件中,需要修改对应的硬盘槽位信息

4、Nginx部署

安装Nginx官方源

代码语言:javascript复制
rpm -Uvh http://nginx.org/packages/centos/7/noarch/RPMS/nginx-release-centos-7-0.el7.ngx.noarch.rpm

Nginx配置文件

代码语言:javascript复制
[root@kvm-node1 ks]# cat  /etc/nginx/conf.d/default.conf 
server {
    listen       18080;
    server_name  192.168.100.234;

    #access_log  /var/log/nginx/host.access.log  main;

    location / {
         #root   /usr/share/nginx/html;
        #index  index.html index.htm;
        root    /mnt/;
        #开启目录浏览功能;autoindex on;  
        #关闭详细文件大小统计,让文件大小显示MB,GB单位,默认为b;
        autoindex_exact_size off;  
        #开启以服务器本地时区显示文件修改日期;
        autoindex_localtime on;  
    }
}

启动Nginx

代码语言:javascript复制
[root@kvm-node1 ks]# systemctl  start nginx
[root@kvm-node1 ks]# systemctl  enable nginx

5、挂载iso镜像

代码语言:javascript复制
mkdir -p  /mnt/{ks,iso}

挂载iso镜像并通过nginx发布目录

代码语言:javascript复制
mount -o loop /kvm/iso/CentOS-7-x86_64-DVD-2009.iso  /mnt/iso/

6、ks.cfg文件

代码语言:javascript复制
[root@kvm-node1 ks]# ls
ks.cfg

7、浏览器访问Nginx 目录

http://IP/ios

8、安装虚拟机(测试验证)

virt-install --name=vm01 --disk path=/kvm/img/vm01.qcow2,device=disk,bus=virtio,perms=rw,cache=writethrough --accelerate --memory 2048 --vcpus 2 --location http://192.168.100.234:18080/iso/ --network bridge=br0 --os-type=linux --graphics vnc,listen=0.0.0.0,port=5918 --noautoconsole -x "ks=http://192.168.100.234:18080/ks/ks.cfg console=tty0 console=ttyS0,115200n8"

9、开始安装

系统安装完成

10、登录虚拟机查看

代码语言:javascript复制
[root@kvm-node1 ks]# virsh  console vm01

报错问题

测试不通过,通过http测试正常

代码语言:javascript复制
-x "ks=file:/mnt/ks/ks.cfg console=tty0 console=ttyS0,115200n8"

错误如下

0 人点赞