admin 管理员组

文章数量: 887016

PXE实现系统批量自动安装

PXE简介

PXE(preboot execute environment,预启动执行环境)是由Intel公司开发的最新技术,工作Client/Server的网络模式,支持工作站通过网络从远端服务器下载映像,并由此支持通过网络启动操作系统,在启动过程中,终端要求服务器分配IP地址,再用TFTP(trivial file transfer protocol)或MTFTP(multicast trivial file transfer protocol)协议下载一个启动软件包到本机内存中执行,由这个启动软件包完成终端(客户端)基本软件设置,从而引导预先安装在服务器中的终端操作系统。PXE可以引导多种操作系统,如:Windows95/98/2000/windows2003/windows2008/winXP/win7/win8,linux系列系统等。

PXE安装系统过程

PXE服务端

1)部署DHCP,用户给客户端分配动态IP地址,这样客户端和PXE服务之间才能进行网络通信;
2)部署TFTP服务,提供启动文件供客户端下载;
3)部署HTTP,将yum源以及内核文件等资源发布出去;

客户端启动,客户机的网卡需要PXE的协议,目前几乎所有网卡都支持PXE。
首先客户机发送DHCP广播请求,DHCP服务器向客户机提供可用的IP地址并告知客户机tftp服务器的地址;
然后,tftp向客户机提供内核,驱动及引导文件,
客户机通过引导文件启动,在内存中虚拟一个操作系统,通过ftp/http/nfs获得安装文件,而安装时的参数由ks.cfg来提供。

PXE优点

实现操作交付的效率提升:这种安装系统的方式可以不受光驱,光盘以及一些外部设备的限制,还可以做到无人值守,大大减轻了运维人员的工作负荷,像在一些主机数量庞大的机房进行批量安装,PXE将是你不二的选择。

Centos系统光盘的构成

EFI:这是支持EFI分区所要使用的引导程序
Images:存放的用于基于网络方式安装系统时候所用到的引导程序
- efiboot.img
- efidisk.img:用于支持EFI引导系统所用的引导文件和磁盘文件
- pxeboot:存放用于构建基于内存的操作的系统的内核的根目录文件
isolinux: 本地或者自动安装系统用该目录下文件

  • vmlinuz initrd.img 内核文件,虚根文件
  • splash.jpg:背景图片(640*480)
  • isolinux.bin:启动安装操作系统的程序
  • isolinux.cfg:这是islinx.bin配置文件

package: rpm包
repodata:元数据

anaconda

anaconda是Fedora所维护的一个项目,该程序的作用就是用来安装系统,在安装系统时,通过isolinux/image启动anaconda程序,anaconda是通过网络启动,从而来启动设备中的 bootloader。

kickstart文件解析

kickstart文件的基本组成
第一部分:命令段
作用:用于对系统进行基本的配置
insta1l:启动安装过程
ur1:指定启动安装进程后,去哪个u1下找安装包
keyboard:指定键盘类型
lang:指定语言类型
harddrive:指定驱动程序
network:设置网络
rootpw:设置管理员密码
firewa1l:设置防火墙功能
autoconfig:密码加密方式
selinux:设置 selinux是否自动启动
timezone:设置时区
bootloader:指定启动系统的boot1 oader放在哪里
part:指定分区类型、大小、挂载点
logo1:设置逻辑卷及其卷组
cogroup:设置卷组大小及其包含的物理卷
repo:指定rpm仓库的信息
第二部分:软件包段
%packages <<软件包段的开头
%end <<<软件包段的结尾
在这两个中间所放的是包名和包组名
第三部分:脚本段
%pre:安装前脚本
%post:安装后脚本

shell脚本之全自动化部署PXE

#!/bin/bash
#config pxe
#config yum
if [ ! -d ~/yum.bak ];
then
mv /etc/yum.repos.d/* ~/yum.bak
else
mkdir ~/yum.bak
mv /etc/yum.repos.d/* ~/yum.bak
fi
cat >/etc/yum.repos.d/server.repo<< EOF
[base]
name=server
baseurl=file:///mnt
gnabled=1
gpgcheck=0
EOF
mount /dev/cdrom /mnt
yum clean all
yum -y update
#config ftp
yum -y install vsftpd
systemctl restart vsftpd ; systemctl enable vsftpd
#config tftp
yum -y install tftp tftp-server xinetd
sed '13s/\/var\/lib/ /' /etc/xinetd.d/tftp -i
sed '14s/yes/no/' /etc/xinetd.d/tftp -i
#config network
cat >/etc/sysconfig/network-scripts/ifcfg-eno16777736<<EOF
TYPE=Ethernet
BOOTPROTO=static
NAME=eno16777736
DEVICE=eno16777736
ONBOOT=yes
NETMASK=255.255.255.0
IPADDR=192.168.25.1
EOF
systemctl restart network
#config dhcp
yum -y install dhcp
if [ -f /etc/dhcp/dhcpd.conf.bak ];
then
rm -rf /etc/dhcp/dhcpd.conf.bak
fi
cp /etc/dhcp/dhcpd.conf /etc/dhcp/dhcpd.conf.bak
rm -rf /etc/dhcp/dhcpd.conf
cp /usr/share/doc/dhcp*/dhcpd.conf.example /etc/dhcp/dhcpd.conf
cat >>/etc/dhcp/dhcpd.conf<<EOF
subnet 192.168.25.0 netmask 255.255.255.0 {
        range 192.168.25.100 192.168.25.200;
        next-server 192.168.25.1;
        filename "pxelinux.0";
}
EOF
systemctl restart dhcpd ;systemctl enable dhcpd
#config kickstart
if [ ! -d /tftpboot/ ];
then 
mkdir /tftpboot/
else
rm -rf /tftpboot/*
fi
mkdir /tftpboot/pxelinux.cfg -p
yum -y install syslinux
cp /usr/share/syslinux/pxelinux.0 /tftpboot/
cp /mnt/isolinux/isolinux.cfg /tftpboot/pxelinux.cfg/default
cp /mnt/p_w_picpaths/pxeboot/initrd.img /tftpboot/
cp /mnt/p_w_picpaths/pxeboot/vmlinuz /tftpboot/
chmod 644 /tftpboot/pxelinux.cfg/default
#config boot 'default'
sed '1s/.*/default linux/' /tftpboot/pxelinux.cfg/default -i
sed '64s/.*/append initrd=initrd.img ks=ftp:\/\/192.168.25.1\/ks.cfg/' /tftpboot/pxelinux.cfg/default -i
sed '68d' /tftpboot/pxelinux.cfg/default -i
sed '63 imenu default' /tftpboot/pxelinux.cfg/default -i
cat >/var/ftp/ks.cfg<<EOF
#platform=x86, AMD64, 或 Intel EM64T
#version=DEVEL
# Install OS instead of upgrade
install
# Keyboard layouts
keyboard 'us'
# Root password
rootpw --iscrypted $1$syci/OCt$KHzs273jZFiTzcp92eGxJ0
# System timezone
timezone Africa/Abidjan
# Use network installation
url --url="ftp://192.168.25.1/pub"
# System language
lang en_US
# Firewall configuration
firewall --disabled
# System authorization information
auth  --useshadow  --passalgo=sha512
# Use graphical install
graphical
firstboot --disable
# SELinux configuration
selinux --enforcing
# Network information
network  --bootproto=dhcp --device=eno16777736 --onboot=yes
# Reboot after installation
reboot
# System bootloader configuration
bootloader --location=mbr --md5pass="$1$wLuI.AZb$sO8s4dCMYHZ7rRDIhRC95."
# Clear the Master Boot Record
zerombr
# Partition clearing information
clearpart --all --initlabel
# Disk partitioning information
part / --fstype="xfs" --size=20480
part swap --fstype="swap" --size=2048
%packages
@base
@core
@desktop-debugging
@dial-up
@fonts
@gnome-desktop
@guest-agents
@guest-desktop-agents
@input-methods
@internet-browser
@multimedia
@print-client
@x11
%end
EOF
#config srouce and server
umount /dev/cdrom
mount /dev/cdrom /var/ftp/pub
iptables -F
setenforce 0
systemctl stop firewalld
systemctl restart dhcpd
systemctl restart vsftpd
systemctl restart xinetd

参考

自动化运维之-PXE实现系统批量自动安装
自动化运维-cobbler网络自动安装系统

本文标签: 批量 系统 PXE