博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
自动化运维之PXE网络安装系统实战
阅读量:6670 次
发布时间:2019-06-25

本文共 7138 字,大约阅读时间需要 23 分钟。

自动化运维之PXE网络安装系统实战

为什么要用PXE网络安装操作系统?

如果给一台主机安装一个linux系统,用光盘安装或者用U盘安装都可以实现,但是在生产环境中有时候需要给数十台、数百台主机安装操作系统,那用光盘一个一个的安装这种方式肯定是不可行的,相信也没有人会去这么做。这时就需要一个能够给多个主机同时安装系统的工具了,PXE就是这样的一个工具,他可以实现同时对多台主机同时安装系统。

PXE安装系统的流程:

1
1、需要安装系统的主机的网卡支持网络安装,不过现在不用担心,随着科技的发展,现在几乎所以的主机都支持。

1
2、客户端主机需要有一个IP地址来与PXE Server进行通信,这时网络中必须要有一个主机能自动分配IP。DHCP就是一个能为主机自动分配IP地址的服务,DHCP也可以安装在PXE Server主机上。

1
3、客户机得到IP地址后,需要提供一个引导程序pxelinux.0(类似于grub) 此文件由syslinux提供,所以需要安装syslinux。和能加载内核及内核镜像等文件,客户机可以通过TFTP协议到TFTP Server上下载内核及内核镜像文件,所以需要一个TFTP 服务,TFTP也可以安装在PXE Server主机上,客户机只是知道可以用TFTP协议下载文件,但是TFTP Server的IP是那个,这个还得需要DHCP服务器指名告诉客户机那个是TFTP Server,而TFTP服务需要超级进程进行管理,此进程是xinet,因此需要安装xinet服务。

1
4、如果想实现完全自动化部署操作系统,则需要一个kickstart文件,没有此文件则安装系统的时候需要自己手动一个一个的选择进行安装,kickstart文件可以自己手动的写编写,也可以用system-config-kickstart工具进行生成,如果需要则可以在PXE Server上安装system-config-kickstart工具。

1
5、已经有了kickstart文件了,kickstart文件中有一个参数指定了需要以什么方式,在哪里去找安装源(此安装源就是安装系统所需的软件),这样的方式可以是,nfs、
ftp
、http等,选择其一即可,博主在此选择
ftp
方式提供安装源。


由上述流程可以得到用PXE安装软件所需的依赖性包:

1
2
3
4
5
6
dhcp                     
#提供IP地址,指名TFTP Server的地址,pxelinux文件
tftp-server              
#提供引导所需的文件,内核文件,内核镜像文件等
xinetd                   
#管理tftp服务的超级进程
syslinux                 
#提供pxelinux文件
system-config-kickstart  
#生成kickstart文件的工具
vsftpd                   
#提供安装源

各软件的安装及其配置:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
[root@jie1 ~]
# cat /etc/yum.repos.d/server.repo
[centos]
name=sohu-centos
baseurl=http:
//mirrors
.sohu.com
/centos/
$releasever
/os/
$basearch
gpgcheck=1
enable
=0
gpgkey=http:
//mirrors
.sohu.com
/centos/RPM-GPG-KEY-CentOS-6
[epel]
name=sohu-epel
baseurl=http:
//mirrors
.sohu.com
/fedora-epel/
$releasever/$basearch/
enable
=1
[root@jie1 ~]
# ifconfig eth0 | awk '/inet addr:/ {print $2}'
addr:192.168.22.1
[root@jie1 ~]
# yum -y install dhcp tftp-server xinetd syslinux system-config-kickstart vsftpd

DHCP服务的配置:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
[root@jie1 ~]
# cat /etc/dhcp/dhcpd.conf
# DHCP Server Configuration file.
#   see /usr/share/doc/dhcp*/dhcpd.conf.sample
#   see 'man 5 dhcpd.conf'
[root@jie1 ~]
# cp /usr/share/doc/dhcp-4.1.1/dhcpd.conf.sample /etc/dhcp/dhcpd.conf
cp
: overwrite `
/etc/dhcp/dhcpd
.conf'? y
[root@jie1 ~]
# grep -v "^#" /etc/dhcp/dhcpd.conf | grep -v "^$"
option domain-name 
"jie.com"
;
option domain-name-servers 192.168.22.1;
default-lease-
time 
43200;
max-lease-
time 
86400;
log-facility local7;
subnet 192.168.22.0 netmask 255.255.255.0 {
  
range 192.168.22.100 192.168.22.200;
  
option routers 192.168.22.1;
}
next-server 192.168.22.1;
filename=
"pxelinux.0"
;

安装源的提供:

1
2
3
4
5
[root@jie1 ~]
# service vsftpd start
Starting vsftpd 
for 
vsftpd:                                [  OK  ]
[root@jie1 ~]
# mkdir /var/ftp/pub/centos-6.4-x86_64
[root@jie1 ~]
# mount /dev/cdrom /var/ftp/pub/centos-6.4-x86_64
mount
: block device 
/dev/sr0 
is write-protected, mounting 
read
-only

kickstart文件:

然后点击File--->save保存即可

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
#============用system-config-kickstart生成的kickstart文件===========
[root@jie1 ~]
# cat ks.cfg
#platform=x86, AMD64, or Intel EM64T
#version=DEVEL
# Firewall configuration
firewall --disabled
# Install OS instead of upgrade
install
# Use network installation
url --url=
"ftp://192.168.22.1/pub/centos-6.4-x86_64"
# Root password
rootpw --iscrypted $1$rwNUnQGy$0CfH0U2
/y028PzfcdTPZJ
.
# System authorization information
auth  --useshadow  --passalgo=sha512
# Use graphical install
graphical
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
bootloader --append=
"crashkernel=auto crashkernel=auto rhgb rhgb quiet quiet" 
--location=mbr --driveorder=
"sda"
# Clear the Master Boot Record
zerombr
# Partition clearing information
clearpart --all --initlabel
part 
/boot 
--fstype=ext4 --size=200
part pv.008002 --size=81440
volgroup vg0 --pesize=8192 pv.008002
logvol / --fstype=ext4 --name=root --vgname=vg0 --size=20480
logvol swap --name=swap --vgname=vg0 --size=2048
logvol 
/usr 
--fstype=ext4 --name=usr --vgname=vg0 --size=20240
logvol 
/var 
--fstype=ext4 --name=var --vgname=vg0 --size=20480
%post
sed 
-i 
'1,$s@id:[0-9]:initdefault:@id:3:initdefault:@g' 
/etc/inittab
# Set the hostname
IP=`
ifconfig 
eth0 | 
awk 
'/inet addr:/{print $2}' 
awk 
-F. 
'{print $NF}'
`
sed 
-i 
"s@HOSTNAME=.*@HOSTNAME=web$IP.jie.com@g" 
/etc/sysconfig/network
%end
#install  package
%packages
@core
@server-policy
%end
[root@jie1 ~]
# cp ks.cfg /var/ftp/pub/centos6.cfg

所需的引导文件:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
[root@jie1 ~]
# cd /var/lib/tftpboot/
[root@jie1 tftpboot]
# mkdir pxelinux.cfg
[root@jie1 tftpboot]
# cp /var/ftp/pub/centos-6.4-x86_64/isolinux/{boot.msg,splash.jpg,vesamenu.c32} /var/lib/tftpboot/
[root@jie1 tftpboot]
# cp /var/ftp/pub/centos-6.4-x86_64/images/pxeboot/{initrd.img,vmlinuz} /var/lib/tftpboot/
[root@jie1 tftpboot]
# cp /var/ftp/pub/centos-6.4-x86_64/isolinux/isolinux.cfg /var/lib/tftpboot/pxelinux.cfg/default
[root@jie1 tftpboot]
# chmod +w /var/lib/tftpboot/pxelinux.cfg/default
[root@jie1 tftpboot]
# cp /usr/share/syslinux/pxelinux.0 /var/lib/tftpboot/
[root@jie1 tftpboot]
# cat /var/lib/tftpboot/pxelinux.cfg/default
default vesamenu.c32
#prompt 1
timeout 200
display boot.msg
menu background splash.jpg
menu title Welcome to CentOS 6.4 made by jie!
menu color border 0 
#ffffffff #00000000
menu color sel 7 
#ffffffff #ff000000
menu color title 0 
#ffffffff #00000000
menu color tabmsg 0 
#ffffffff #00000000
menu color unsel 0 
#ffffffff #00000000
menu color hotsel 0 
#ff000000 #ffffffff
menu color hotkey 7 
#ffffffff #ff000000
menu color scrollbar 0 
#ffffffff #00000000
label linux
  
menu label ^Install or upgrade an existing system
  
menu default
  
kernel vmlinuz
  
append initrd=initrd.img ks=
ftp
:
//192
.168.22.1
/pub/centos6
.cfg
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
  
menu label Boot from ^
local 
drive
  
localboot 0xffff
label memtest86
  
menu label ^Memory 
test
  
kernel memtest
  
append -
[root@jie1 ~]
# service dhcpd restart
Shutting down dhcpd:                                       [  OK  ]
Starting dhcpd:                                            [  OK  ]
[root@jie1 ~]
# chkconfig tftp on
[root@jie1 ~]
# service xinetd restart
Stopping xinetd:                                           [  OK  ]
Starting xinetd:                                           [  OK  ]
[root@jie1 ~]
#
[root@jie1 ~]
# service vsftpd restart
Shutting down vsftpd:                                      [  OK  ]
Starting vsftpd 
for 
vsftpd:                                [  OK  ]
[root@jie1 ~]
# ss -tunlp | grep 67
udp    UNCONN    0    0       *:67     *:*     
users
:((
"dhcpd"
,2898,7))
[root@jie1 ~]
# ss -tunlp | grep 69
udp    UNCONN    0    0       *:69     *:*     
users
:((
"xinetd"
,2976,5))

至此PXE Server的配置安装过程已经完成,现在测试能否自动安装。

PXE安装一定程度的解决了自动化部署安装操作系统,但是利用PXE安装不同版本的操作系统,这会使得PXE很难用于实现,为解决这一美中不足的缺陷cobbler应用而生,尽情期待cobbler自动化部署安装不同版本的操作系统。

本文转自 jie783213507 51CTO博客,原文链接:http://blog.51cto.com/litaotao/1307996,如需转载请自行联系原作者
你可能感兴趣的文章
动态权限<三>华为小米特殊机制
查看>>
linux基本命令学习01
查看>>
Freebsd for ECS 系统盘扩容示例
查看>>
IPad分屏,当电脑第二显示屏
查看>>
kprobe原理解析
查看>>
String的线程安全
查看>>
云服务提供商告诉您云服务器对营销型网站的重要性
查看>>
前端通信:ajax设计方案(七)--- 增加请求错误监控、前端负载均衡以、请求宕机切换以及迭代问题修复...
查看>>
软硬件一体提高主链性能,「HPB芯链」想构建区块链版的云计算
查看>>
python中用string.maketrans和translate巧妙替换字符串
查看>>
全面深入认识C变量
查看>>
C语言嵌入式系统编程修炼之道——内存操作篇 原创21cnbao2005-10-19 22:06:00评论(0)...
查看>>
深思熟虑后做出的决定
查看>>
MYSQL中TIMESTAMP类型的默认值
查看>>
用C#动态创建Access数据库
查看>>
安全事件标准化
查看>>
分享B2B信息发布小技巧
查看>>
深入剖析微软ASP.NET Ajax中的数据绑定构架下篇之一
查看>>
选择最适合你的Linux学习方法
查看>>
JQuery ajax调用asp.net的webMethod
查看>>