PXE+kickstart实现批量部署linux系统

当企业有大量的新机需要安装系统,如果每台都接上系统光盘并人工选择配置安装,无疑工作量巨大。而 PXE+kickstart 的安装方式能够实现自动化批量部署,特别适用于这种场景。

一、批量部署方式

①物理机:PXE

负载均衡

②虚拟机:映像文件模板

分布式文件系统

无论是针对物理机还是虚拟机的批量部署,都会对文件服务器造成巨大的压力,可以分别使用负载均衡和分布式文件系统的方式缓解

二、PXE工作原理

客户机通过支持PXE的网卡请求DHCP服务器 --> DHCP服务器给客户端分配IP地址等,并告诉客户端next server(通常是tftp服务器)的地址以及需要下载pxelinux.0 --> tftp客户端联系tftp服务器下载pxelinux.0并加载到内存中执行 --> 联系tftp服务器下载vmlinuz、ramdisk、vesamenu.c32、pxelinux.cfg等各种引导安装所需的文件--> 联系安装源(http、ftp、nfs等)

另外,还可提供kickstart文件,并在isolinux.cfg文件中或boot提示符后指明其位置以实现自动安装

①PXE:是由Intel开发的 client/server 协议,可以使计算机通过网络安装系统。PXE client在网卡的ROM中,计算机启动后,BIOS把PXE client中执行,并显示出命令菜单,经用户选择后,PXE client联系远端服务器下载安装所需的文件

②PXE client所在的网卡ROM中已经内置了tftp client

pxelinux.0是类似于isolinxu.bin的引导加载程序,可调用启动菜单

④pxelinux.cfg:可直接复制现有isolinux.cfg并按需修改即可

三、如何配置PXE

以下DHCP、TFTP配置可参考博客http://9124573.blog.51cto.com/9114573/1715721,系统安装参考博客http://9124573.blog.51cto.com/9114573/1714822

1、配置DHCP服务

subnet ... netmask ... {

...

next-server TFTP-SERVER-IP;

  filename "pxelinux.0";

}

2、配置TFTP server

yum install tftp-server

chkconfig tftp on

service xinetd restart

3、提供pxe工作环境

yum install syslinux   #pxelinux.0由syslinux包提供

cp /usr/share/syslinux/pxelinux.0 /var/lib/tftpboot

4、提供引导内核等文件

mount /dev/cdrom /media/cdrom

cp /media/cdrom/images/pxeboot/{vmlinuz,initrd.img} /var/lib/tftpboot/

cp /media/cdrom/isolinux/{splash.jpg,vesamenu.c32,boot.msg} /var/lib/tftpboot/

mkdir /var/lib/tftpboot/pxeboot.cfg

cp /media/cdrom/isolinux/isolinux.cfg /var/lib/tftpboot/pxeboot.cfg/default

5、提供安装源(以http为例)

yum -y install httpd

mkdir -pv /var/www/html/centos/6/x86_64

mount --bind /media/cdrom /var/www/html/centos/6/x86_64

(mount --bind表示将后面的两个目录做捆绑,所以通过这两个目录都能访问光盘了)

6、提供kickstart文件

[[email protected] ~]# mount /dev/cdrom /media/cdrom   #挂载光盘光盘
mount: block device /dev/sr0 is write-protected, mounting read-only
[[email protected] ~]# ls /media/cdrom/images/pxeboot
initrd.img  TRANS.TBL  vmlinuz
[[email protected] ~]# ls /media/cdrom/isolinux
boot.cat  boot.msg  grub.conf  initrd.img  isolinux.bin  isolinux.cfg  memtest  splash.jpg  TRANS.TBL  vesamenu.c32 
[[email protected] ~]# cp /media/cdrom/images/pxeboot/{initrd.img,vmlinuz} /var/lib/tftpboot/
 vmlinuz   #将相关引导文件都复制到tftpboot目录中
[[email protected] ~]# cp /media/cdrom/isolinux/{boot.msg,splash.jpg,vesamenu.c32} /var/lib/tftpboot/
[[email protected] ~]# mkdir /var/lib/tftpboot/pxelinux.cfg/
[[email protected] ~]# cp /media/cdrom/isolinux/isolinux.cfg /var/lib/tftpboot/pxelinux.cfg/default
[[email protected] ~]# rpm -q syslinux
syslinux-4.04-3.el6.x86_64
[[email protected] ~]# rpm -ql syslinux | grep ‘pxelinux.0‘   #发现4.04版本的syslinux包没有提供pxelinux.0
[[email protected] ~]# yum -y remove syslinux
...
[[email protected] ~]# yum -y install /media/cdrom/Packages/syslinux-4.02-8.el6.x86_64.rpm   #重新安装了4.02版本的syslinux包
[[email protected] ~]# rpm -ql syslinux | grep ‘pxelinux.0‘
/usr/share/syslinux/pxelinux.0
[[email protected] ~]# cp /usr/share/syslinux/pxelinux.0 /var/lib/tftpboot/
[[email protected] ~]# ls /var/lib/tftpboot/   #各种引导文件准备完毕
a.txt  boot.msg  initrd.img  pxelinux.0  pxelinux.cfg  splash.jpg  vesamenu.c32  vmlinuz
[[email protected] ~]# vim /etc/dhcp/dhcpd.conf

...
subnet 192.168.30.0 netmask 255.255.255.0 {
  range 192.168.30.31 192.168.30.50;
  next-server 192.168.30.20;    #指定下一个要联系的tftp服务器地址
  filename "pxelinux.0";    #指定要下载pxelinux.0文件
}
 
[[email protected] ~]# yum -y install httpd
...
[[email protected] ~]# iptables -I INPUT -p tcp --dport 80 -j ACCEPT   #开放80端口
[[email protected] ~]# mkdir -pv /var/www/html/centos/6/x86_64
mkdir: created directory `/var/www/html/centos‘
mkdir: created directory `/var/www/html/centos/6‘
mkdir: created directory `/var/www/html/centos/6/x86_64‘
[[email protected] ~]# mount --bind /media/cdrom /var/www/html/centos/6/x86_64
[[email protected] ~]# cp /tmp/myiso/isolinux/ks.cfg /var/www/html/centos6.cfg   #提供kickstart文件
[[email protected] ~]# vim /var/www/html/centos6.cfg   #做适当修改

#platform=x86, AMD64, or Intel EM64T
#version=DEVEL
# Firewall configuration
firewall --disabled
# Install OS instead of upgrade
install
# Use network installation
url --url="http://192.168.30.20/centos/6/x86_64/"
repo --name="CentOS" --baseurl=http://192.168.30.20/centos/6/x86_64/ --cost=100   #指明安装源
# Root password
rootpw --iscrypted $1$Bmn0VLX0$2o2vCmHL.aWp3zhewY1S..
# System authorization information
auth  --useshadow  --passalgo=sha512
# Use text mode install
text
firstboot --disable
# System keyboard
keyboard us
# System language
lang en_US
# SELinux configuration
selinux --disabled
# Installation logging level
logging --level=info
# Reboot after installation
reboot
# System timezone
timezone  Asia/Shanghai
# Network information
network  --bootproto=dhcp --device=eth0 --onboot=on
# System bootloader configuration
...
[[email protected] ~]# ksvalidator /var/www/html/centos6.cfg
[[email protected] ~]# ll /var/lib/tftpboot/pxelinux.cfg/default 
-r--r--r-- 1 root root 936 Nov 22 02:50 /var/lib/tftpboot/pxelinux.cfg/default
[[email protected] ~]# chmod u+w /var/lib/tftpboot/pxelinux.cfg/default
[[email protected] ~]# vim /var/lib/tftpboot/pxelinux.cfg/default 
...
label linux
  menu label ^Install or upgrade an existing system
  menu default
  kernel vmlinuz
  append initrd=initrd.img ks=http://192.168.30.20/centos6.cfg    #指明kickstart文件位置,实现自动安装
label vesa
  menu label Install system with ^basic video driver
  kernel vmlinuz
  append initrd=initrd.img xdriver=vesa nomodeset
label rescue
  menu label ^Rescue installed system
  kernel vmlinuz
  append initrd=initrd.img rescue
label local
...
[[email protected] ~]# service dhcpd restart   #修改dhcpd配置文件后需重启服务
Shutting down dhcpd:                                       [  OK  ]
Starting dhcpd:                                            [  OK  ]
[[email protected] ~]# chkconfig tftp on
[[email protected] ~]# service xinetd start
Starting xinetd:                                           [  OK  ]
[[email protected] ~]# service httpd start
Starting httpd: httpd: Could not reliably determine the server‘s fully qualified domain name, using 192.168.30.20 for ServerName
                                                           [  OK  ]
[[email protected] ~]# netstat -tunlp    #可看到67/udp、69/udp、80/tcp都已处于监听状态
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address               Foreign Address             State       PID/Program name   
tcp        0      0 0.0.0.0:111                 0.0.0.0:*                   LISTEN      1267/rpcbind        
tcp        0      0 0.0.0.0:22                  0.0.0.0:*                   LISTEN      1532/sshd           
tcp        0      0 127.0.0.1:631               0.0.0.0:*                   LISTEN      1387/cupsd          
tcp        0      0 127.0.0.1:6010              0.0.0.0:*                   LISTEN      2645/sshd           
tcp        0      0 127.0.0.1:6011              0.0.0.0:*                   LISTEN      1818/sshd           
tcp        0      0 0.0.0.0:56458               0.0.0.0:*                   LISTEN      1356/rpc.statd      
tcp        0      0 :::111                      :::*                        LISTEN      1267/rpcbind        
tcp        0      0 :::80                       :::*                        LISTEN      2988/httpd          
tcp        0      0 :::22                       :::*                        LISTEN      1532/sshd           
tcp        0      0 ::1:631                     :::*                        LISTEN      1387/cupsd          
tcp        0      0 ::1:6010                    :::*                        LISTEN      2645/sshd           
tcp        0      0 ::1:6011                    :::*                        LISTEN      1818/sshd           
tcp        0      0 :::45152                    :::*                        LISTEN      1356/rpc.statd      
udp        0      0 0.0.0.0:111                 0.0.0.0:*                               1267/rpcbind        
udp        0      0 0.0.0.0:631                 0.0.0.0:*                               1387/cupsd          
udp        0      0 0.0.0.0:1018                0.0.0.0:*                               1267/rpcbind        
udp        0      0 0.0.0.0:684                 0.0.0.0:*                               1356/rpc.statd      
udp        0      0 0.0.0.0:46906               0.0.0.0:*                               1356/rpc.statd      
udp        0      0 0.0.0.0:67                  0.0.0.0:*                               2952/dhcpd          
udp        0      0 0.0.0.0:69                  0.0.0.0:*                               2976/xinetd         
udp        0      0 :::111                      :::*                                    1267/rpcbind        
udp        0      0 :::1018                     :::*                                    1267/rpcbind        
udp        0      0 :::60937                    :::*                                    1356/rpc.statd

在一台新机上测试成功:

时间: 2024-10-19 09:49:36

PXE+kickstart实现批量部署linux系统的相关文章

利用pxe dhcp tfcp http kickstart实现批量部署linux系统

1.为什么要实现批量部署利用一台已经做好配置的主机去批量安装其他主机系统2.了解什么是Pxe1.预启动执行环境(Preboot eXecution Environment,PXE)也被称为预执行环境,提供了一种使用网络接口(Network Interface)启动计算机的机制.这种机制让计算机的启动可以不依赖本地数据存储设备(如硬盘)或本地已安装的操作系统 .2.由Intel和Systemsoft公司于1999年9月20日公布的技术3.C/S的工作模式4.PXE客户端会调用网际协议(IP).用户

自动化批量部署Linux系统(Kickstart+DHCP+NFS(http)+TFTP+PXE)

自动化批量部署Linux系统 (Kickstart+DHCP+NFS(http)+TFTP+PXE) 楓城浪子原创(除原理流程图外),转载请标明出处! 更多技术博文请见个人博客:https://fengchenglangzi.000webhostapp.com 微信bh19890922 QQ445718526.490425557 序: 本文主要介绍自动化部署操作系统,主要借助的工具包含(Kickstart+DHCP+NFS(http)+TFTP+PXE),至于每种工具用途及作用请自行补脑,本文主

详解使用Cobbler快速批量部署linux系统

前言:这几天闲着没事来系统组玩玩,学点东西总是好的嘛.系统组系统组当然还是从学会装系统开始.花了两个小时折腾了一下用cobbler批量部署linux系统.第一次做当然中间遇到很多问题,不过都顺利解决了.完了总结一下写个帖子和大家分享一下. 系统版本:Centos6.5 32位cobbler服务器IP:192.168.175.130 IP地址段:192.168.175.120-192.168.175.140子网掩码:255.255.255.0网关:192.168.175.2DNS:8.8.8.8

PXE实现批量部署linux系统

pxe批量部署linux服务器 1.pxe介绍 PXE是有intel设计的协议,它可以使计算机通过网络启动,协议分为client和server两端,PXEclient在网卡的ROM中,当计算机引导时,BIOS把PXE client调入内存中执行,并显示出命令菜单,经用户选择PXE启动后,PXE client获取网络地址信息,然后将放置在远端的服务器上的操作系统文件通过网络下载到本地运行 既然是通过网络传输,就需要IP地址,也就是说在PXE启动过程中,PXE客户端会请求DHCP服务器分配IP地址,

PXE批量部署 Linux 系统

实验场景描述:1.准备环境:配置httpd服务,关闭系统策略2.配置应答文件通过system-config-kickstart 配置应答文件3.指定应答文件客户端指定应答文件具体如下所示:若描述有误欢迎拍砖交流:QQ:45223208 一.准备服务器环节1.安装httpd服务yum install httpd -y 如图所示 2.启动httpd服务 systemctl start httpd systemctl enable httpd 3.修改系统相关策略 关闭防火墙和selinux策略 sy

【亲测可用】Cobbler自动批量部署Linux系统

Cobbler是一个快速网络安装linux的服务,而且在经过调整也可以支持网络安装windows.该工具使用python开发,小巧轻便,使用简单的命令即可完成PXE网络安装环境的配置,同时还可以管理DHCP.DNS.TFTP.RSYNC以及yum仓库.构造系统ISO镜像. Cobbler支持命令行管理,web界面管理,还提供了API接口,可以方便二次开发使用. Cobbler客户端Koan支持虚拟机安装和操作系统重新安装,使重装系统更便捷. 环境准备 VMware 12 虚拟机 Centos 7

Kickstart+HTTP+DHCP+TFTP全自动批量安装部署Linux系统

说明: Kickstart服务器系统:CentOS 6.5 64位 IP地址:192.168.0.250 需要安装部署的Linux系统:CentOS 6.5 64位 eth0(第一块网卡,用于外网)IP地址段:60.28.x.x eth1(第二块网卡,用于内网)IP地址段:192.168.0.128 子网掩码:255.255.255.128 网关:192.168.0.250 DNS:114.114.115.115 8.8.4.4 所有服务器均支持PXE网络启动 实现目的:通过配置Kickstar

Cobbler全自动批量安装部署Linux系统

前言:这篇文章是系统运维www.osyunwei.com的作品,我只是根据实践了一下,出于对原作者的尊重附原文链接如下: 原文链接:http://www.osyunwei.com/archives/7606.html 根据文章的说明是可以完成所属功能的,不过原文章有点小问题,在本文中我已经修改过了,仅供大家参考,有问题大家交流,E-mail:[email protected] 安装之前的一点说明 Cobbler服务器系统:CentOS5.10 64位 IP地址:192.168.21.128 需要

kickstart 批量安装Linux系统

Kickstart 批量安装Linux系统 Kickstart的工作原理想必大家都知道了,通过pxe协议同时装配多台服务器.一般用的时候不多,但是要知道,用的时候才能得心应手,我的环境如下: 需要安装部署的Linux服务器: Redhat 6.4 64位 IP地址:192.168.30.34 网卡:p3p1 子网掩码:255.255.255.0 网关:192.168.30.1 DNS:202.106.0.20 或者 8.8.8.8 具体操作: 第一部分:在kickstart服务器系统操作 关闭S