前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >KVM--基于KickStart 部署Linux虚拟机(五)

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

作者头像
Kevin song
发布2022-06-07 18:15:58
1.2K0
发布2022-06-07 18:15:58
举报

概述

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"

错误如下

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2022-05-20,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 开源搬运工宋师傅 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档