您的位置:首页 > 运维架构 > Linux

PXE+KickStart自动安装linux系统附带virt-install的使用

2018-02-10 21:07 686 查看
环境:Red Hat Enterprise Linux Server release 7.2 (Maipo)

所需安装软件:dhcp、tftp-server、system-config-kickstart、syslinux
firewalled、selinux:关闭

1、安装DHCP服务并配置
[root@foundation76 ~]# cat /etc/dhcp/dhcpd.conf
# option definitions common to all supported networks...
option domain-name "example.com"; #域名
option domain-name-servers 172.25.254.76; #指定DNS服务器

default-lease-time 600; #默认租约期
max-lease-time 7200; #最长租约期

log-facility local7; #日志级别

A slightly different configuration for an internal subnet.
subnet 172.25.254.0 netmask 255.255.255.0 { #172.25.254.0网段
range 172.25.254.100 172.25.254.130; #地址池
option domain-name-servers 172.25.254.76;
option domain-name "example.com";
option routers 172.25.254.255; #网关
default-lease-time 600;
max-lease-time 7200;
next-server 172.25.254.76; #tftp服务所在主机IP
filename "pxelinux.0"; #启动文件名称
}

[root@foundation76 ~]# systemctl start dhcpd
[root@foundation76 ~]# systemctl enable dhcpd.service

2、安装tftp-server并配置

依赖包为xinetd,tftp服务为xinetd所管理
[root@foundation76 ~]# vim /etc/xinetd.d/tftp
service tftp
{
socket_type = dgram
protocol = udp
wait = yes
user = root
server = /usr/sbin/in.tftpd
server_args = -s /var/lib/tftpboot -c #共享目录
disable = no #yes-->no启用tftp服务
per_source = 11
cps = 100 2
flags = IPv4
}
[root@foundation76 ~]# systemctl start xinetd
[root@foundation76 ~]# systemctl enable xinetd

3、将client端所需的启动引导文件从centos镜像中复制到tftp共享目录下
[root@foundation76 ~]# yum install httpd -y#安装http服务,并挂载centos镜像
[root@foundation76 ~]# mount /iso/CentOS-7-x86_64-DVD-1611.iso /var/www/html/centos/
[root@foundation76 ~]# cp /var/www/html/centos/isolinux/* /var/lib/tftpboot/
[root@foundation76 ~]# mkdir /var/lib/tftpboot/pxelinux.cfg
[root@foundation76 ~]# cp /var/www/html/centos/isolinux/isolinux.cfg /var/lib/tftpboot/pxelinux.cfg/default
[root@foundation76 ~]# yum install syslinux  #获取引导文件pxelinux.0
[root@foundation76 ~]# cp /usr/share/syslinux/pxelinux.0 /var/lib/tftpboot/
[root@foundation76 ~]# systemctl start httpd

修改启动配置文件
[root@foundation76 ~]# vim /var/lib/tftpboot/pxelinux.cfg/default  timeout 600 #默认超时时间60s,如果超过该时间用户不做任何操作,则根据默认引导项启动对应的label

label linux1 #label启动菜单项
menu label ^Auto Install CentOS Linux 7
menu default #默认引导项
kernel vmlinuz #系统内核文
4000

append initrd=initrd.img inst.ks=http://172.25.254.76/ks/ks.cfg inst.repo=http://172.25.254.76/centos quiet
#inst.ks指定自动应答文件ks.cfg;inst.repo指定镜像文件

4、使用kickstart制作自动应答文件

[root@foundation76 ~]# yum install system-config-kickstart -y
[root@foundation76 ~]# system-config-kickstart



指定时区Asia/Shanghai、设置root用户密码、指定安装后重新启动



指定安装源http://172.25.254.76/centos



在MBR上安装新的引导装载程序





创建必要分区/,/boot,swap,并清除主引导记录、删除所有现存分区、初始化磁盘标签



添加网卡eth0



Authentication不需要修改,禁用firewalld



不安装图形界面
Package Selection项会报错,需要手动在生成的ks.cfg文件中指定
Pre-Installation Script & Post-Installation Script 为系统安装前后要指定系统运行的脚本,没有可以不填
一般可以在Post-Installation Script中提前配置YUM源或相关服务
配置完成后点击左上角的File进行保存
[root@foundation76 ~]# vim /var/www/html/ks/ks.cfg  #在末尾指定需要安装的软件包

#platform=x86, AMD64, 或 Intel EM64T
#version=DEVEL
# Install OS instead of upgrade
install
# Keyboard layouts
keyboard 'us'
# Root password
rootpw --iscrypted $1$VDAOIANN$qaQVtk1nl1uZnqFJrJTDK/
# System timezone
timezone Asia/Shanghai
# Use network installation
url --url="http://172.25.254.76/centos"
# System language
lang en_US
# Firewall configuration
firewall --disabled
# System authorization information
auth --useshadow --passalgo=sha512
# Use graphical install
graphical
# SELinux configuration
selinux --disabled
# Do not configure the X Window System
skipx

# 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
%packages #以%packages开头
@base #base组包
lftp #lftp工具
@core #core组包
%end #以%end结尾
[root@foundation76 ~]# ksvalidator /var/www/html/ks/ks.cfg  #检查ks.cfg文件语法是否有错

至此客户机可通过PXE方式启动实现自动安装。
测试:

本次在kvm虚拟机上通过virt-install命令创建虚拟主机测试pxe+kickstart无人值守自动部署linux系统。
virt-install 基本用法:
options:
                -h            #查看帮助
                --connect=URL    #连接非默认为hypervisor,默认为qemu:///system
                -n NAME,--name NAME    #指定虚拟机名称
                --ram    #指定虚拟机内存大小(M)
                --file    #指定虚拟机磁盘文件
                --file-size    #指定虚拟机磁盘大小(G)
                --vcpus    #指定虚拟机虚拟CPU个数
                --cdrom    #设置光盘设备或镜像路径
                --location    #指定其他的安装源,例如:http://host/path
                --extra-args    #当执行从"--location"选项指定位置的客户机安装时,附加内核命令行参数到安装程序。例如:"ks=http://172.25.254.116/ks.cfg"指定自动应答文件
                --pxe    #使用PXE引导启动
                --import    #导入现有的虚拟机
                --os-type    #指定操作系统类型
                --network    #指定虚拟机使用的虚拟网络
[root@foundation76 Desktop]# cat pxe_install.sh    #创建虚拟机并以pxe方式引导
#!/bin/bash
virt-install \
--name $1 \
--ram 1024 \
--file /var/lib/libvirt/images/$1.qcow2 \
--file-size 10 \
--pxe \
--network bridge=br0


[root@foundation76 Desktop]# ./pxe_install.sh world        #运行shell脚本创建world虚拟主机



可见PXE+kickstart自动安装linux系统成功
virt-install其他常见参数配合使用:
1、该脚本通过指定网络镜像所在位置,和ks.cfg自动应答脚本文件位置实现自动创建及安装linux系统。
#!/bin/bash
virt-install \
--name $1 \
--ram 1024 \
--file /var/lib/libvirt/images/$1.qcow2 \
--file-size 8 \
--location http://172.25.254.16/rhel7.2 \
--extra-args "ks=http://172.25.254.116/ks.cfg" &2、该脚本指定从本地光驱引导安装linux操作系统
#!/bin/bash
virt-install \
--name $1 \
--ram 1024 \
--file /var/lib/libvirt/images/$1.qcow2 \
--file-size 8 \
--cdrom /home/kiosk/Desktop/rhel-server-7.2-x86_64-dvd.iso & &>/dev/null3、该脚本是在已有node.qcow2磁盘文件基础上,实现导入现有的名为node的虚拟机。
#!/bin/bash
virt-install \
--name node \
--ram 1024 \
--file /var/lib/libvirt/images/node.qcow2 \
--import &4、该脚本可以实现从本地光驱启动安装linux操作系统,并可使用VNC连接虚拟机界面。#!/bin/bash
virt-install \
--name $1 \
--ram 1024 \
--file /var/lib/libvirt/images/$1.qcow2 \
--file-size 8 \
--cdrom /home/kiosk/Desktop/rhel-server-7.2-x86_64-dvd.iso \
--vnc \
--vncport=6000 \
--vnclisten=172.25.254.16 &

5、该脚本可以实现reset(重置)某台已有的虚拟主机。
#!/bin/bash
virsh destroy $1
rm -fr /var/lib/libvirt/images/$1.qcow2
qemu-img create -f qcow2 -b /var/lib/libvirt/images/hello.qcow2	/var/lib/libvirt/images/$1.qcow2
virsh start $1
virt-viewer $1 &

完!!!
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: