使用PXE+kickstart无人值守安装服务
使用光盘镜像来安装Linux系统的方法,该方法适用于只安装少量Linux系统的情况。如果生产环境中有数百台服务器都需要安装系统,这种方式就不合时宜了。这时,我们就需要使用PXE + TFTP +HTTP + DHCP + Kickstart服务搭建出一个无人值守安装系统。这种无人值守安装系统可以自动地为数十台服务器安装系统,这一方面将运维人员从重复性的工作中解救出来,也大大提升了系统安装的效率。
PXE(Preboot eXecute Environment,预启动执行环境)是由Intel公司开发的技术,可以让计算机通过网络来启动操作系统(前提是计算机上安装的网卡支持PXE技术),主要用于在无人值守安装系统中引导客户端主机安装Linux操作系统。Kickstart是一种无人值守的安装方式,其工作原理是预先把原本需要运维人员手工填写的参数保存成一个ks.cfg文件,当安装过程中需要填写参数时则自动匹配Kickstart生成的文件。所以只要Kickstart文件包含了安装过程中需要人工填写的所有参数,那么从理论上来讲完全不需要运维人员的干预
所需配置服务及安装包
DHCP #获取IP地址,并提供pxelinux.0文件位置
TFTP #支持PXE下载内核引导文件
HTTP #下载ks.cfg以及系统镜像文件
Syslinux #提供引导文件
systemctl stop firewalld #关闭防火墙selinux
setenforce 0
配置DHCP服务
yum -y install dhcp
vim /etc/dhcp/dhcpd.conf
subnet 192.168.91.0 netmask 255.255.255.0 {
range 192.168.91.100 192.168.91.199;
option subnet-mask 255.255.255.0;
default-lease-time 21600;
max-lease-time 43200;
next-server 192.168.91.140;
filename "/pxelinux.0";
}
##启动dhcp服务
systemctl start dhcpd
##开机自启动
systemctl enable dhcpd
##查看有无端口
netstat -lntup|grep dhcpd
配置TFTP服务
yum install tftp-server
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
disable = no #此处由yes 改为no
per_source = 11
cps = 100 2
flags = IPv4
systemctl restart tftp
systemctl enable tftp
配置HTTP服务
systemctl start httpd
systemctl enable httpd
##创建挂载点
mkdir –p /media/cdrom
##挂载CentOS7光盘
mount /dev/cdrom /media/cdrom
mkdir -p /var/www/html/centos/7/x86_64
##绑定挂载到http默认目录下
mount --bind /media/cdrom /var/www/html/centos/7/x86_64
使用浏览器访问,进行测试。
配置SYSLinux服务
yum install syslinux
cd /var/lib/tftpboot
cp /usr/share/syslinux/pxelinux.0 .
cp /media/cdrom/images/pxeboot/{vmlinuz,initrd.img} .
cp /media/cdrom/isolinux/{vesamenu.c32,boot.msg} .
mkdir pxelinux.cfg
cp /media/cdrom/isolinux/isolinux.cfg pxelinux.cfg/default
vim pxelinux.cfg/default #修改内容与行数如下
1 default linux
64 append initrd=initrd.img inst.stage2=ftp://192.168.10.10 ks=ftp://192.168.10.10/pub/ks.cfg quiet
##开机自启动
systemctl enable tftp
##启动tftp
systemctl start tftp
配置kickstart的 ks.cfg文件
mkdir /var/www/html/ks
vim /var/www/html/ks/ks.cfg
#Kickstart Configurator for CentOS 7 by Mine
#version=DEVEL
# System authorization information
auth --enableshadow --passalgo=sha512
# Use CDROM installation media
#cdrom
# Install OS instead of upgrade
install
# Use network installation
url --url=http://10.0.0.61/centos/7/x86_64
# Use graphical install
graphical
# Run the Setup Agent on first boot
firstboot --enable
#ignoredisk --only-use=sda
# Keyboard layouts
keyboard --vckeymap=cn --xlayouts='cn'
# System language
lang zh_CN.UTF-8
# Network information
#network --bootproto=static --device=eth0 --gateway=10.0.0.254 --ip=10.0.0.100 --nameserver=223.5.5.5 --netmask=255.255.255.0 --activate
#network --bootproto=static --device=eth1 --ip=172.16.1.100 --netmask=255.255.255.0 --activate
network --bootproto=dhcp --device=eth0 --onboot=off --ipv6=auto
network --hostname=hostname
# Root password
rootpw --iscrypted $1$$GmbL3iXOMZR57QuGDLv.L1
#perl -e 'print crypt("123",q($1$)),"\n"' 使用的密码为123
# System timezone
timezone Asia/Shanghai --isUtc
# System bootloader configuration
bootloader --append=" crashkernel=auto" --location=mbr --boot-drive=sda
autopart --type=lvm
# Partition clearing information
clearpart --none --initlabel
%packages
@^minimal
@core
kexec-tools
vim
wget
httpd
%end
%addon com_redhat_kdump --enable --reserve-mb='auto'
%end
selinux --disabled
reboot
失败原因:
IP地址、路径错误
虚拟机内存不足
服务未启动