Linux的PXE kickstart网络自动装机
简介:
PXE工作在client/server模式,允许客户机通过网络从远程访问服务器下载引导镜像,并加载安装文件或者整个操作系统。
若要搭建PXE网络体系,需满足以下条件。
客户机的网卡支持PXE协议,并且主板支持网络引导。
要有一台DHCP服务器以便客户机自动分配地址,指定引导文件位置。
服务器支持通过TFTP(Trivial File Transfer Protocol,简单文件传输协议)提供引导镜像文件的下载。
但是通过PXE虽然能够通过网络实现多台客户机一起装机,但是期间还需要手动配置。如何去解决这样的问题呢?通过在服务器上安装system-config-kickstart工具后即可通过图形化向导工具来配置安装应答文件。只要将自动应答文件放置在PXE安装服务器的FTP目录下,并适当修改引导菜单,就可实现基于网络的自动装机。
Kickstart是一种无人值守安装方式。Kickstart的工作原理是通过记录典型的安装过程中所需人工干预填写的各种参数,并生成一个名为ks.cfg的文件;在其后的安装过程中(不止局限与生成kickstart安装文件的机器)当出现要求填写参数的情况时,安装程序首先就会去查找kickstart生成的文件,当找到合适的参数时,就会采用找到的参数,当没有找到合适的参数时,才需要安装者手动干预。这样,如果kickstart文件涵盖了安装过程中所需填写的所有参数时,安装者完全可以只告诉安装程序从何处取ks.cfg文件,然后忙自己的事情,等待安装完毕,安装程序会根据ks.cfg中设置的重启选项来重启系统并结束安装。
自动安装原理:
客户机从自己的PXE网卡启动,向本网络中DHCP服务器索取IP地址。
DHCP服务器返回分给客户机IP。
客户机向本网络中的TFTP服务器索取文件。
客户机取得bootstrap文件后执行引导文件完成引导。
读取配置文件,通过TFTP服务器加载内核和文件系统。
进入安装画面,此时可以通过HTTP、NFS、FTP方式进行安装(这里已FTP为例)。
作为运维,经常会遇到一些重复的工作,例如:有时公司同时上线几十甚至上百台服务器,而且需要我们在
短时间内完成系统安装,常规的办法有什么?这样做有什么缺点?
PXE
PXE是Preboot Execution Environment的缩写,预启动执行环境
PXE使用需要以下几点:
客户端的网卡必须要支持PXE功能,并且开机选择从网卡启动,进入PXE程序
PXE服务器必须要提供至少含有DHCP以及TFTP的服务!
DHCP服务提供客户端网络,并且告知TFTP所在的位置;
TFTP提供客户端boot loader及kernel file下载路径
PXE工作流程:
Client向PXE Server上的DHCP发送IP地址请求消息,返回Client的IP地址,同时将pxe环境下的Boot
loader文件pxelinux.0的位置信息传送给Client
Client向PXE Server上的TFTP请求pxelinux.0
Client执行接收到的pxelinux.0文件
Client向TFTP请求pxelinux.cfg文件(里面放置的是是启动菜单,即grub的配置文件)
Client向TFTP发送Linux内核请求信息
Client向TFTP发送根文件请求信息
Client加载Linux内核
Client通过nfs/ftp/http下载系统安装文件进行安装
Kickstart
Kickstart是一种无人值守的安装方式
Kickstart工作流程:
在安装过程中记录人工干预填写的各种参数,并生成一个名为ks.cfg的文件。如果在自动安装过程中出现要填
写参数的情况,安装程序首先会去查找ks.cfg文件,如果找到合适的参数,就采用所找到的参数;如果没有找
到合适的参数,便会弹出对话框手工填写
Kickstart配置文件详解(分为3部分)
命令部分
配置系统
用户提示省略的指令
%packages部分
为安装选择软件包和组
解决相关依性问题
脚本部分
定制系统的可选择部分
再安装前运行%pre脚本
安装后运行%post脚本
创建ks.cfg文件
每安装完一台Centos系统,Centos安装程序(anaconda)会创建一个kickstart配置文件,记录安装配置,
可以参考此配置文件来生成新的kickstart配置文件
Kickstart图形化配置工具,需要安装X Window System、GNOME Desktop、system-config-kickstart,根据
此命令生成配置文件 system-config-kickstart
参考官方手册。用文本编辑器手动创建
练习
PXE+Kickstart批量无人值守部署,拓扑图参考上方
#PXE+TFTP+DHCP+HTTP+KICKSTART
1.关闭防火墙和SELinux
systemctl stop firewalld
setenforce 0
2.DHCP
#DHCP主要是提供客户端网络参数与TFTP的位置,以及boot loader的文件名
yum install dhcp -y
vi /etc/dhcp/dhcpd.conf
subnet 192.168.5.0 netmask 255.255.255.0 { #设置网段
option routers 192.168.5.2; #设置网关
option subnet-mask 255.255.255.0; #设置子网掩码
option domain-name-servers 192.168.5.2; #设置dns服务器地址
range dynamic-bootp 192.168.5.200 192.168.5.205; #IP地址租用的范围
default-lease-time 21600; #默认租约时间
max-lease-time 43200; #最大租约时间
next-server 192.168.5.184; #tftp服务器地址
filename "pxelinux.0"; #tftp服务器根目录下面的文件名
}r
systemctl start dhcpd
systemctl enable dhcpd
3.TFTP
#boot loader文件pxelinux.0以及内核相关的配置文件(目录pxelinux.cfg下)主要都是由TFTP来提供的!
yum install tftp-server xinetd -y
vim /etc/xinetd.d/tftp
disable = no #此项修改,其它不变;保存退出
systemctl restart xinetd
systemctl enable xinetd
4.PXE的bootloader和相关配置文件
#syslinux是一个功能强大的引导加载程序,而且兼容各种介质。更加确切地说:SYSLINUX是一个小型的Linux操作
系统,它的目的是简化首次安装Linux的时间,并建立修护或其它特殊用途的启动盘
yum install syslinux -y
cd /var/lib/tftpboot
cp /usr/share/syslinux/pxelinux.0 .
cp /mnt/images/pxeboot/{vmlinuz,initrd.img} .
cp /mnt/isolinux/{vesamenu.c32,boot.msg} .
mkdir pxelinux.cfg
cp /mnt/isolinux/isolinux.cfg pxelinux.cfg/default
vi pxelinux.cfg/default #删除60行之后的,在文件末尾添加以下内容;也可自己编写
label linux
menu label ^Install CentOS 74
kernel vmlinuz
append initrd=initrd.img ks=http://192.168.5.184/config/ks.cfg biosdevname=0
net.ifnames=0
5.HTTP
#通过HTTP协议把光盘镜像内容传给客户端
yum install httpd -y
cp -rf /mnt/* /var/www/html/
mkdir -p /var/www/html/config #新建目录,把自定义的文件、脚本等放置于此
6.Kickstart配置文件
vi /var/www/html/config/ks.cfg
#platform=x86, AMD64 或 Intel EM64T
#version=
# Firewall configuration
firewall --disabled
# Install OS instead of upgrade
install
# Use network installation
url --url="http://192.168.5.184/"
#!!!
# Use CDROM installation media
repo --name="yum" --baseurl=http://192.168.5.184/
#!!!
# Root password
rootpw --iscrypted $1$mi4lP.ZY$j5UDGX34knfGuSYPwd82u/ #redhat
# openssl passwd -1
# Use graphical install graphical or text
text
# Run the Setup Agent on first boot
firstboot --disable
# System keyboard
keyboard us
# System language
lang en_US.UTF-8
# SELinux configuration
selinux --disabled
# Reboot after installation
reboot
# System timezone
timezone --isUtc Asia/Shanghai
# Network information
network --bootproto=dhcp --device=eth0 --noipv6 --activate
network --hostname=web
#!!!
# System bootloader configuration
bootloader --location=mbr
# Clear the Master Boot Record
zerombr
# Partition clearing information
clearpart --all --initlabel
#!!!
# Disk partitioning information
part /boot --asprimary --fstype="ext4" --ondisk=sda --size=200
part swap --fstype="swap" --ondisk=sda --size=4096
part / --fstype="ext4" --ondisk=sda --size=20480
#!!!
%packages
@core
wget
%end
%post
#yum_client
cd /etc/yum.repos.d/
rm -rf *
wget http://192.168.5.184/config/client.repo
%end
%addon com_redhat_kdump --disable --reserve-mb='auto'
%end
7.测试(客户端启动方式应更改为PXE网络启动!)
简介:
PXE工作在client/server模式,允许客户机通过网络从远程访问服务器下载引导镜像,并加载安装文件或者整个操作系统。
若要搭建PXE网络体系,需满足以下条件。
客户机的网卡支持PXE协议,并且主板支持网络引导。
要有一台DHCP服务器以便客户机自动分配地址,指定引导文件位置。
服务器支持通过TFTP(Trivial File Transfer Protocol,简单文件传输协议)提供引导镜像文件的下载。
但是通过PXE虽然能够通过网络实现多台客户机一起装机,但是期间还需要手动配置。如何去解决这样的问题呢?通过在服务器上安装system-config-kickstart工具后即可通过图形化向导工具来配置安装应答文件。只要将自动应答文件放置在PXE安装服务器的FTP目录下,并适当修改引导菜单,就可实现基于网络的自动装机。
Kickstart是一种无人值守安装方式。Kickstart的工作原理是通过记录典型的安装过程中所需人工干预填写的各种参数,并生成一个名为ks.cfg的文件;在其后的安装过程中(不止局限与生成kickstart安装文件的机器)当出现要求填写参数的情况时,安装程序首先就会去查找kickstart生成的文件,当找到合适的参数时,就会采用找到的参数,当没有找到合适的参数时,才需要安装者手动干预。这样,如果kickstart文件涵盖了安装过程中所需填写的所有参数时,安装者完全可以只告诉安装程序从何处取ks.cfg文件,然后忙自己的事情,等待安装完毕,安装程序会根据ks.cfg中设置的重启选项来重启系统并结束安装。
自动安装原理:
客户机从自己的PXE网卡启动,向本网络中DHCP服务器索取IP地址。
DHCP服务器返回分给客户机IP。
客户机向本网络中的TFTP服务器索取文件。
客户机取得bootstrap文件后执行引导文件完成引导。
读取配置文件,通过TFTP服务器加载内核和文件系统。
进入安装画面,此时可以通过HTTP、NFS、FTP方式进行安装(这里已FTP为例)。
作为运维,经常会遇到一些重复的工作,例如:有时公司同时上线几十甚至上百台服务器,而且需要我们在
短时间内完成系统安装,常规的办法有什么?这样做有什么缺点?
PXE
PXE是Preboot Execution Environment的缩写,预启动执行环境
PXE使用需要以下几点:
客户端的网卡必须要支持PXE功能,并且开机选择从网卡启动,进入PXE程序
PXE服务器必须要提供至少含有DHCP以及TFTP的服务!
DHCP服务提供客户端网络,并且告知TFTP所在的位置;
TFTP提供客户端boot loader及kernel file下载路径
PXE工作流程:
Client向PXE Server上的DHCP发送IP地址请求消息,返回Client的IP地址,同时将pxe环境下的Boot
loader文件pxelinux.0的位置信息传送给Client
Client向PXE Server上的TFTP请求pxelinux.0
Client执行接收到的pxelinux.0文件
Client向TFTP请求pxelinux.cfg文件(里面放置的是是启动菜单,即grub的配置文件)
Client向TFTP发送Linux内核请求信息
Client向TFTP发送根文件请求信息
Client加载Linux内核
Client通过nfs/ftp/http下载系统安装文件进行安装
Kickstart
Kickstart是一种无人值守的安装方式
Kickstart工作流程:
在安装过程中记录人工干预填写的各种参数,并生成一个名为ks.cfg的文件。如果在自动安装过程中出现要填
写参数的情况,安装程序首先会去查找ks.cfg文件,如果找到合适的参数,就采用所找到的参数;如果没有找
到合适的参数,便会弹出对话框手工填写
Kickstart配置文件详解(分为3部分)
命令部分
配置系统
用户提示省略的指令
%packages部分
为安装选择软件包和组
解决相关依性问题
脚本部分
定制系统的可选择部分
再安装前运行%pre脚本
安装后运行%post脚本
创建ks.cfg文件
每安装完一台Centos系统,Centos安装程序(anaconda)会创建一个kickstart配置文件,记录安装配置,
可以参考此配置文件来生成新的kickstart配置文件
Kickstart图形化配置工具,需要安装X Window System、GNOME Desktop、system-config-kickstart,根据
此命令生成配置文件 system-config-kickstart
参考官方手册。用文本编辑器手动创建
练习
PXE+Kickstart批量无人值守部署,拓扑图参考上方
#PXE+TFTP+DHCP+HTTP+KICKSTART
1.关闭防火墙和SELinux
systemctl stop firewalld
setenforce 0
2.DHCP
#DHCP主要是提供客户端网络参数与TFTP的位置,以及boot loader的文件名
yum install dhcp -y
vi /etc/dhcp/dhcpd.conf
subnet 192.168.5.0 netmask 255.255.255.0 { #设置网段
option routers 192.168.5.2; #设置网关
option subnet-mask 255.255.255.0; #设置子网掩码
option domain-name-servers 192.168.5.2; #设置dns服务器地址
range dynamic-bootp 192.168.5.200 192.168.5.205; #IP地址租用的范围
default-lease-time 21600; #默认租约时间
max-lease-time 43200; #最大租约时间
next-server 192.168.5.184; #tftp服务器地址
filename "pxelinux.0"; #tftp服务器根目录下面的文件名
}r
systemctl start dhcpd
systemctl enable dhcpd
3.TFTP
#boot loader文件pxelinux.0以及内核相关的配置文件(目录pxelinux.cfg下)主要都是由TFTP来提供的!
yum install tftp-server xinetd -y
vim /etc/xinetd.d/tftp
disable = no #此项修改,其它不变;保存退出
systemctl restart xinetd
systemctl enable xinetd
4.PXE的bootloader和相关配置文件
#syslinux是一个功能强大的引导加载程序,而且兼容各种介质。更加确切地说:SYSLINUX是一个小型的Linux操作
系统,它的目的是简化首次安装Linux的时间,并建立修护或其它特殊用途的启动盘
yum install syslinux -y
cd /var/lib/tftpboot
cp /usr/share/syslinux/pxelinux.0 .
cp /mnt/images/pxeboot/{vmlinuz,initrd.img} .
cp /mnt/isolinux/{vesamenu.c32,boot.msg} .
mkdir pxelinux.cfg
cp /mnt/isolinux/isolinux.cfg pxelinux.cfg/default
vi pxelinux.cfg/default #删除60行之后的,在文件末尾添加以下内容;也可自己编写
label linux
menu label ^Install CentOS 74
kernel vmlinuz
append initrd=initrd.img ks=http://192.168.5.184/config/ks.cfg biosdevname=0
net.ifnames=0
5.HTTP
#通过HTTP协议把光盘镜像内容传给客户端
yum install httpd -y
cp -rf /mnt/* /var/www/html/
mkdir -p /var/www/html/config #新建目录,把自定义的文件、脚本等放置于此
6.Kickstart配置文件
vi /var/www/html/config/ks.cfg
#platform=x86, AMD64 或 Intel EM64T
#version=
# Firewall configuration
firewall --disabled
# Install OS instead of upgrade
install
# Use network installation
url --url="http://192.168.5.184/"
#!!!
# Use CDROM installation media
repo --name="yum" --baseurl=http://192.168.5.184/
#!!!
# Root password
rootpw --iscrypted $1$mi4lP.ZY$j5UDGX34knfGuSYPwd82u/ #redhat
# openssl passwd -1
# Use graphical install graphical or text
text
# Run the Setup Agent on first boot
firstboot --disable
# System keyboard
keyboard us
# System language
lang en_US.UTF-8
# SELinux configuration
selinux --disabled
# Reboot after installation
reboot
# System timezone
timezone --isUtc Asia/Shanghai
# Network information
network --bootproto=dhcp --device=eth0 --noipv6 --activate
network --hostname=web
#!!!
# System bootloader configuration
bootloader --location=mbr
# Clear the Master Boot Record
zerombr
# Partition clearing information
clearpart --all --initlabel
#!!!
# Disk partitioning information
part /boot --asprimary --fstype="ext4" --ondisk=sda --size=200
part swap --fstype="swap" --ondisk=sda --size=4096
part / --fstype="ext4" --ondisk=sda --size=20480
#!!!
%packages
@core
wget
%end
%post
#yum_client
cd /etc/yum.repos.d/
rm -rf *
wget http://192.168.5.184/config/client.repo
%end
%addon com_redhat_kdump --disable --reserve-mb='auto'
%end
7.测试(客户端启动方式应更改为PXE网络启动!)