李志炜 田秀云
关键词:自动部署;Linux;PXE
0引言
互联网从诞生开始,就打破了计算机各自独立的局面,将无数的计算机连接成巨大的信息交互网络。一方面网络中的每一个节点都需要提供稳定的服务,一个节点可能就是由数十上百台的服务器构成,如果这些服务器需要完全一致的安装设置和软件配置,靠人员手动操作效率太低和难免出错。另一方面,网络的一端到另一端可能跨越半个地球,要想对相距遥远的两台服务器进行统一的安装和初始化,除了派送人员安装,另外一个不错的方法就是利用覆盖全球的网络进行远程安装。这就引出2个系统安装的需求:能全自动的对数十台服务器做统一的安装设置;能通过网络对远程的服务器进行安装。PXE技术就完全满足了这2个需求,PXE相较于前者有着不少的优势,使用PXE不需要额外添加硬件设备,在原有的网卡固件上就能实现。它解决了TFTP+BOOTP+DHCP方案不能提供定制设置的问题。另外小型化的PXE占用的资源很少。其能支持的客户端很多,从功能完备、算力强大的大型计算机到功能专一且小巧的单片机,都有很好的支持,本研究有一定的现实意义。
1整体方案
PXE需要DHCP服务的支持,DHCP给客户端分配一个合法IP地址并告知TFTP的IP地址,使客户端能从TFTP获取引导文件pxelinux.O、内核文件vmlinuz和initrd.img等。再根据菜单配置文件default提供的光盘镜像文件和应答文件在网络中的位置,客户端取得光盘镜像,并根据应答文件的设置进行自动安装。最后运行应答文件中的初始化脚本,完成初始化。服务器响应服务图如图1所示。
2PXE各个服务的具体部署
2.1PXE服务器提供DHCP服务
用命令yum-y install dhcp进行DHCP服务的安装,安装后用命令rpm-q dhcp进行确认。DHCP配置文件的路径/etc/dhcp/dhcpd.conf,下面几个是配置DHCP的重要参数以及说明。
range dynamic-bootp 192.168.233.26 192.168.233.30.可分配给客户端的lP范围,将192.168.233.0网段中的26-30作为IP池。option routers 192.168.233.2,指定客户端的网关。option domain-name-servers223.5.5.5,指定客户端的DNS。default-lease-time21600,默认租约时间,单位为s。max-lease-time43200,最大租约时间,单位为s。next-server192.168.233.50,TFFP服务器在内网中的位置,即IP地址。filename”pxelinux.0”,引导文件的名称。客户端从DHCP服务器(PXE服务器)中获得IP地址192.168.233.26,并得知DHCP服务器的IP地址192.168.233.50和网关地址192.168.233.2。
2.2 PXE服务器提供Tbq'P服务
用命令yum-y install tftp-server进行TFTP服务的安装,安装后用命令rpm-q trip-server进行确认。TFTP的配置文件为/ete/xinetd.d/tftp,其中参数server args=-s/var/lib/tftpboot,其含义为安装所用到的引导文件和内核文件等都是放在此目录下的。安装syslinux服务,将/usr/share/syslinux/pxelinux.0复制到Tbq30根目录。挂载光盘到空目录,将内核文件vmlinuz和initrd.img,菜单样式文件vesamentL e32,窗口提示信息文件boot.msg复制到TFTP根目录。最后将菜单配置文件isolinux.cfg复制到TFTP根目录下的pxelinux.cfg目录中,并重命名为default。
2.3 PXE服务器提供安装源
(1)HTTP方式
用命令yum-y install httpd进行安装,安装后用命令rpm-q httpd进行确认。默认的http的主配置文件的路径是/ete/httpd/eonf/httpd.eonf,http文件根目录的位置是/var/www/html,此位置为挂载光盘镜像的目录,客户端也从该目录读取镜像文件来进行安装操作。接着用命令mount-bind/media//var/www/html/CentOS7/将/media的光盘映射再映射到空目录CentOS7。客户端通过HTTP服务器的IP地址就能进入服务器,并且进入的是文件根目录/var/www/html/,在這个目录下就有一个放着光盘镜像的目录CentOS7/。只需在网络位置后指定CentOS7/目录,即http://192.168.233.50/CentOS7/。用命令systemetlstart httpd.service和systemctl enable httpd.service,将HTTP服务启动并设为开机自启动。进入配置文件default修改指定安装源,替换原来的安装源。appendinitrd=initrd.img inst.stage2=hd:LABEL=CentOS\x207\x20x86_64 quiet将上面内容改为:append initrd=initrd.img inst.repo=http://192.168.233.50/CentOS。
(2)FFP方式
用命令yum-y install vsflpd进行安装,安装后用命令rpm-q vsflpd进行确认,用命令systemctl restartvsftpd启动vsflp服务,并设置为开机自启动systemctlenable vsftpd。vsflp服务默认的根目录在/var/flp/,使用命令\cp-r/media//var/ftp/CentOS7/将光盘镜像文件全部复制到vsftpd服务的根目录的CentOS7/目录下。与HTTP方式相同,通过FFP服务器获取光盘镜像的网络位置为ftp://192.168.233.50/CentOS7/。修改default的指定安装源的参数,append initrd=initrd.img inst.repo=ftp://192.168.233.50/CentOS7
(3)NFS方式
用命令yum-y install nfs-utils进行安装,安装后用命令rpm-q nfs-utils进行确认。
设置共享目录,在系统根目录新建/data/nfs/用于共享文件,接下来同FTP一样复制光盘镜像文件進/data/nfs/CentOS7/目录。为了让这个共享目录生效,需要在配置文件/etc/exports中声明共享目录的位置、可以访问共享目录的网段以及对应的权限。写出光盘镜像文件的完整路径/data/nfs/CentOS7。格式为nfs:[NFS服务器IP地址]:[光盘镜像文件的绝对路径],依照此格式将inst.stage2=hd:LABEL=CentOS\x207\x20x86_64修改为inst.repo=nfe:192.168.233.50:/data/nfs/CentOS7。
客户端使用快照还原回刚配置好硬件的状态。还原好后启动客户端,等待请求IP、获取引导文件、获取菜单配置文件,进入到菜单后选择InstallCentOS 7,选择语言后,INSTALLATION SOURCE(安装源)变成了NFS Server 192.168.233.50,虽然在default中写了光盘镜像的绝对路径,但这里也不会显示出来。接下来进行正常的安装流程就可以了。
3应答文件设计
Kickstart作为应答文件无需额外安装服务,真正做到轻便。且Kickstart的功能十分强大,在Kickstart里面不仅能替代手工自动完成在安装页面的设置,如设置语言、root用户密码、磁盘分区,还能利用安装源自定义安装所需服务。甚至能携带脚本,并在系统安装完成后自动运行这些脚本,这就给管理人员减少了很多不必要的重复工作。
4客户端初始化设计
系统初始化要做的事主要有设置时问同步、安全策略、配置网卡、优化内核。这些都可以写在应答文件里面,在系统安装完成后自动执行。也可以写成一个独立的初始化脚本,通过应答文件下载和设置运行时间。
5客户端SSH免密设计
无论是通过SSH登录客户端,还是通过scp传输文件给客户端,都需要输入密码,这是一种保障客户端安全的措施。管理人员通过一台管理终端管理数十台客户端,登录管理终端这个过程已经有足够的安全保障,但批量管理客户端还要反复输入数十次密码,这反倒降低了管理效率,所以需要客户端对管理终端开启SSH免密。
本研究将ssh-keygen生成的密钥写进一个文件,再将文件发送给管理终端。先测试了scp命令在Kickstart脚本执行的时候可以正常使用,再将文件里面的内容写进管理终端的“密钥库”里面,这样就完成了与ssh-copy-id 192.168.233.50相同的功能,实现了SSH免密。
6结束语
本文使用经典的PXE+Kickstart方式实现网络自动部署服务器,并使用HTFP、KIP和NFS作为安装源,丰富了客户端获取光盘镜像的来源,可以根据不同的服务需求和实际情况灵活选取安装源。另外在应答文件Kickstart中添加初始化脚本和SSH免密脚本,让服务器在系统安装完成后,自动实现系统初始化,使服务器在短时间内便可投人生产环境。SSH免密脚本也可在系统安装后自动运行,为统一管理服务器搭好桥梁,减少了后期的人员操作,提高了服务器的管理效率。