使用 PXE+Kickstart 实现无人值守批量部署系统
一、废话两句
在云数据中心,一次几十台甚至几百台服务器上线,系统安装将变得非常繁琐,系统安装好了后还会涉及很多配置,如果一台台来安装的话工作量非常大。(虽然有加班费,开个玩笑)
为了解决这个问题,我们需要实现无人值守批量部署系统。
简单看一下拓扑图:

1. 什么是PXE?
简单来说:PXE主要是引导作用,具体的详细信息这里就不多说了,详情百度即可。
PXE引导流程:

2. 什么是Kickstart?
简单两句就是:Kickstart是一种无人值守的安装方式。它的工作原理是在安装过程中记录典型的需要人工干预填写的各种参数;
比如:我们安装系统的时候需要分区、设置时区、设置root密码、安装后执行的脚本等等,这些操作都记录下来并生成一个名为ks.cfg的文件。
PXE+Kickstart 无人值守安装操作系统完整过程:

二、环境准备
操作系统:CentOS 7.4 (最小化安装)
实验平台:VMware Workstation 14
网络模式:NAT模式
服务器IP地址:192.168.115.21
防火墙:关闭
SElinux=Disable
三、准备工作
如果当初已经是图形化安装了,则不需要该步骤。
生成ks.cfg 文件需要system-config-kickstart 工具,而此工具依赖于X Windows,所以我们需要安装X Windows 和Desktop 并重启系统,操作如下:
i. 挂载光盘:

[root@localhost ~]# mkdir /mnt/cdrom
[root@localhost ~]# mount /dev/cdrom /mnt/cdrom

ii. 配置本地yum源:
[root@localhost ~]# cat /etc/yum.repos.d/dvd.repo
------------------------------------------------------
[development]
# 名称必须为 “development”,否则到后面kickstart配置会出现软件包选择出现没有软件包信息
name=redhat
baseurl=file:///mnt/cdrom
gpgcheck=
iii. 安装图形化:
[root@localhost ~]# yum groupinstall "Server with GUI" -y
[root@localhost ~]# systemctl set-default graphical.target // 设置默认启动到图形界面
[root@localhost ~]# reboot // 重启机器
四、安装需要服务
1. 配置DHCP
i. 安装DHCP服务
[root@localhost ~]# yum install dhcp -y
ii. 修改/etc/dhcp/dhcpd.conf 配置文件
[root@localhost ~]# vim /etc/dhcp/dhcpd.conf
------------------------- 配置如下 -------------------------------
subnet 192.168.115.0 netmask 255.255.255.0 { //所在网段
range 192.168.115.100 192.168.115.199; //分配IP地址范围
option subnet-mask 255.255.255.0; //给客户端设置子网掩码(netmask)
default-lease-time ; //设置默认的IP租期时间
max-lease-time ; //设置最大的IP租期时间
next-server 192.168.115.21; //tfp服务端IP地址
filename "/pxelinux.0"; //网络引导程序
}

iii. 启动DHCP服务
[root@localhost ~]# systemctl start dhcpd
[root@localhost ~]# systemctl enable dhcpd
iv. 测试DHCP是否成功
新建一个虚拟机进行测试,如下图可以看出已经成功获取IP地址和其他信息了。

2. 配置TFP
i. 安装TFP、Xinetd
[root@localhost ~]# yum install tftp-server xinetd -y
ii. 修改配置文件
[root@localhost ~]# vim /etc/xinetd.d/tftp
-------------- 省略配置信息,看下图 -------------
将 disable 设置为 no

iii. 启动服务
因为 tftp 服务是挂载在超级进程 xinetd 下的,所以通过启动 xinetd 来启动 tftp 服务。
[root@localhost ~]# systemctl start xinetd
[root@localhost ~]# systemctl enable xinetd
iv. 检查服务是否启动成功
[root@localhost ~]# netstat -ntulp | grep
udp 0.0.0.0: 0.0.0.0:* /xinetd
3. 安装Syslinux
i. 安装syslinux只是为了要 pxelinux.0 引导加载程序,没有别的用意。
[root@localhost ~]# yum install selinux -y
ii. 复制pxelinux.0 文件至/var/lib/tftpboot/ 文件夹中
[root@localhost ~]# cp /usr/share/syslinux/pxelinux. /var/lib/tftpboot/
iii. 拷贝光盘里的配置文件
[root@localhost ~]# cp /mnt/cdrom/isolinux/* /var/lib/tftpboot/

iv. 验证改步骤是否成功
将新建的测试虚拟机重启,就可以看到该界面了。

4. 配置HTTP
i. 安装HTTP
系统的安装方式可以选择HTTP、FTP、 NFS,我们这里介绍HTTP方式的安装,其他两种方式的安装,大家可以自行百度。
[root@localhost ~]# yum install httpd -y
ii. 启动HTTP
[root@localhost ~]# systemctl start httpd
[root@localhost ~]# systemctl enable httpd
iii. 复制光盘全部内容至http 的根目录/var/www/html/pub 下
[root@localhost ~]# mkdir /var/www/html/pub
[root@localhost ~]# cp -r /mnt/cdrom/ /var/www/html/pub
iv. 测试改步骤是否成功

5. 配置kickstart
i. 安装kickstart
[root@localhost ~]# yum install system-config-kickstart -y
ii. 在桌面环境下配置Kickstart,生成ks.cfg 文件
[root@localhost ~]# system-config-kickstart
A. 设置语言,键盘,时区,Root密码,安装完毕后重启等。

B. 设置安装方式,这篇文章介绍的是HTTP方式的安装。

C. 安装MBR

D. 设置分区

E. 配置网络

F. 认证配置

G. SELinux 和防火墙配置

H. 图形环境配置

I. 软件包安装选择

注:如果你的软件列表没有信息,解决该问题看后面部分,如下图:

J. 安装后脚本

K. 保存导出配置文件


iii. 复制到HTTP下的ks目录
[root@localhost ~]# mkdir /var/www/html/ks
[root@localhost ~]# cp ks.cfg /var/www/html/ks/
iv. 验证改步骤

6. 修改default
i. 创建配置文件夹
[root@localhost ~]# cd /var/lib/tftpboot/
[root@localhost tftpboot]# mkdir pxelinux.cfg
ii. 复制配置文件
[root@localhost ~]# cp /var/lib/tftpboot/isolinux.cfg /var/lib/tftpboot/pxelinux.cfg/default
[root@localhost ~]# vim /var/lib/tftpboot/pxelinux.cfg/default
----------------------- 修改配置如下 --------------------------
label linux
menu label ^Install PXE+Kickstart_RedHat7
kernel vmlinuz
append initrd=initrd.img ks=http://192.168.115.21/ks/ks.cfg ksdevice=eth0 net.ifnames=0 biosdevname=0
参数解释:
append initrd=initrd.img ks // 存放ks配置文件的服务器地址和路径,通过该路径找到对应的ks.cfg文件来引导系统安装
ksdevice=eth0 // 指定该网卡进行ks的数据交互(可忽略)
net.ifnames= biosdevname= // 修改内核参数,让网卡命名变为ethXX

iii. 开机验证(需要手动选择安装)

iv. 全自动化安装,无需手动选择安装
[root@localhost ~]# vim /var/lib/tftpboot/pxelinux.cfg/default
--------------------------------------------------------------
default linux # 在配置文件第一行找到default,加上label的名称即可。
label linux
menu label ^Install PXE+Kickstart_RedHat7
kernel vmlinuz
append initrd=initrd.img ks=http://192.168.115.21/ks/ks.cfg ksdevice=eth0 net.ifnames=0 biosdevname=0

v. 安装好后验证脚本信息


到此就完成了无人值守批量部署系统,收工下班。
五、你可能会出现的问题
1. 配置kickstart时,软件包选择出现没有软件包信息,如下图:

解决办法:
检查yum源配置是否为: [development] ,配置好后,重新打开kickstart配置窗口即可。如图:

2. 配置好后,进行自动化部署的时候出现如下报错信息,如下图:
"/sbin/dmsquash-live-root: line 273: write error: No space left on device"

解决办法:
检查虚拟机或服务器的内存大小,RedHat7.3以上的版本进行Kickstart安装需要分配至少2GB的内存。
使用 PXE+Kickstart 实现无人值守批量部署系统的更多相关文章
- pxe+kickstart实现无人值守批量安装linux
pxe+kickstart实现无人值守批量安装linux 实验准备:主机myrhel2作为服务器端,新建一个没有安装操作系统的虚拟主机,而且其与服务器端在同一个网段 安装的条件: 服务器端: ...
- 【Linux】使用 PXE+Kickstart 无人值守批量安装系统
一.PXE背景知识 通过 PXE+DHCP+TFTP+VSftpd+Kickstart 服务程序搭建出无人值守安装系统,从而批量部署客户机系统. PXE(Preboot eXecute Environ ...
- pxe+kickstart cobbler无人值守装机
环境准备: 一台服务器 [root@admin tftpboot]# cat /etc/redhat-release CentOS Linux release 7.2.1511 (Core) [roo ...
- 【转载】批量部署系统之kickstart
一.安装各服务: ftp服务提供软件软件源,tftp提供引导文件,dhcp提供PXE文件位置,syslinux提供PXE文件 [root@node1~]# yum -y installtftp-ser ...
- PXE+kickstart网络安装CentOS7.4系统及过程中各种报错
环境:关闭防火墙.selinux 注意:虚拟机进行网络安装的话,7.3以后的系统是需要2G以上的内存 [root@kickstart ~]# cat /etc/redhat-release CentO ...
- PXE+kickstart无人值守安装CentOS 7
kickstart+cobbler系列文章:http://www.cnblogs.com/f-ck-need-u/p/7048359.html 本文是PXE+kickstart无人值守安装CentOS ...
- (转)PXE+kickstart无人值守安装CentOS 7
kickstart+cobbler系列文章:http://www.cnblogs.com/f-ck-need-u/p/7048359.html 本文是PXE+kickstart无人值守安装CentOS ...
- (转)Cobbler无人值守批量安装Linux系统
本文目录: 1.1 pxe安装系统 1.2 cobbler基本介绍 1.3 安装和配置cobbler 1.3.1 安装cobbler 1.3.2 配置dhcp和tftp 1.4 cobbler从本地光 ...
- 第19章 使用PXE+Kickstart部署无人值守安装
章节概述: 本章节将教会您通过PXE+DHCP+TFTP+VSftpd+Kickstart服务程序搭建出无人值守安装系统,从而批量部署客户机系统. 这种系统能够实现自动化运维.避免了重复性劳动,帮助提 ...
随机推荐
- MVC 、MTV 模式
著名的MVC模式:所谓MVC就是把web应用分为模型(M),控制器(C),视图(V)三层:他们之间以一种插件似的,松耦合的方式连接在一起. 模型负责业务对象与数据库的对象(ORM),视图负责与用户的交 ...
- Shell命令-用户用户组管理之useradd、usermod
文件及内容处理 - useradd.usermod 1. useradd:添加用户 useradd命令的功能说明 useradd 命令用于建立用户帐号.useradd 可用来建立用户帐号.帐号建好之后 ...
- appium---adb logcat 命令详解
我们在做app测试的过程中,肯定会遇到需要抓取日志问题,这几天安静也遇到了此问题,后台日志生成的太多了,保存本地了吧,设备多没有这么USB,通过wifi连接又太麻烦,你说这怎么是好?不要着急,我们往下 ...
- Node.js—学习
一.Node.js 1. Hello World var http = require('http'); http.createServer(function(request, response) { ...
- Python自动化运维之高级函数
本帖最后由 陈泽 于 2018-6-20 17:31 编辑 一.协程 1.1协程的概念 协程,又称微线程,纤程.英文名Coroutine.一句话说明什么是线程:协程是一种用户态的轻量级线程.(其实并没 ...
- Html学习之十九(表格与表单学习--邮箱注册页面设计)
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title> ...
- selenium添加chrome配置项
selenium虽然强大,但也有不方便的地方,selenium每次启动浏览器都是一个全新的浏览器,并没有加载任何的配置,这样在爬取一些需要登陆才能看到的页面时就有些不太方便.但我们可以通过加载chro ...
- 批量文件B中选出部分文件(与A文件夹数量相同),放到C中
import glob import os,sys import shutil fileDir = 'F:/project/Breast/InBreast/INBreast/outimgpatch/n ...
- ESA2GJK1DH1K升级篇: 阿里云物联网平台 OTA: 关于阿里云物联网平台 OTA 的升级流程
前言 鉴于有些用户直接想使用现成的物联网平台实现 OTA 远程升级 我就写一写这系列的文章 注意:首先大家必须把我自建服务器是如何实现的看明白! 我看了下阿里云提供的,实际上流程和咱自建实现的差别不大 ...
- android shape图形优化Button效果
android shape可以让我们通过定义xml文件的方式创建图形,当然只能实现一些比较简单的图形(圆形,矩形,椭圆,线段),但是已经相当不错了,通过shape创建的图形作为控件的背景已经基本可以满 ...