在生产环境中,往往需要给成百上千台服务器安装系统,手动安装略显蛋疼,网络自动化引导安装就能解决批量安装的问题,从此批量系统安装so easy!
以下配置流程均在CentOS 6.7实现
实现环境:
PXE + httpd + dhcp + tftp-server + kickstart
简单介绍相关概念:
PXE:是一种安装方式,支持通过网络引导,访问服务器的文件来安装系统,需要网卡支持
http:文件服务器,存放系统ISO文件
dhcp:实现客户机地址分配
tftp:存放PXE相关文件的服务器
kickstart:是安装程序anaconda的安装配置文件
注意:若没有PXE相关文件,如pxelinux.0,则需要安装syslinux
更详细的信息请自行查找
1.配置文件服务器,http文件服务器
安装httpd并设置开机启动
我的机器已经下载了,提示的更新信息
[root@johnson_linux ~]# yum install httpd===================================================================================== Package Arch Version =====================================================================================Updating: httpd x86_64 2.2.15-47.el6.centos.4 Updating for dependencies: httpd-tools x86_64 2.2.15-47.el6.centos.4 Transaction Summary====================================================================================#设置开机启动-------------[root@johnson_linux ~]# chkconfig httpd on挂载光盘并复制光盘的所有内容至/var/www/html目录下
我这边挂载点是/madia/dvd1,挂载点可自行创建目录
#挂载光盘root@johnson_linux ~]# mount /dev/cdrom /media/dvd1#看一下挂在后光盘的内容[root@johnson_linux ~]# ls /media/dvd1CentOS_BuildTag isolinux RPM-GPG-KEY-CentOS-Debug-6EFI Packages RPM-GPG-KEY-CentOS-Security-6EULA RELEASE-NOTES-en-US.html RPM-GPG-KEY-CentOS-Testing-6GPL repodata TRANS.TBLp_w_picpaths RPM-GPG-KEY-CentOS-6#cp光盘内容至/var/www/html目录[root@johnson_linux ~]# cp -r /media/dvd1 /var/www/html#我把文件夹改名为centos6.7方便辨认[root@johnson_linux ~]# mv /var/www/html/dvd1 /var/www/html/centos6.7
2.配置tftp服务器:
安装tftp-server并设置开机启动
[root@johnson_linux ~]# yum install tftp-server===================================================================================== Package Arch Version =====================================================================================Installing: tftp-server x86_64 0.49-7.el6 Installing for dependencies: xinetd x86_64 2:2.3.14-39.el6_4 Transaction Summary=====================================================================================
创建tftpboot文件夹
[root@johnson_linux ~]# mkdir /tftpboot将以下这些文件复制到tftpboot目录下
boot.msg initrd.img pxelinux.0 vmlinuz isolinux.cfg
#复制boot.msg[root@johnson_linux ~]# cp /var/www/html/centos6.7/isolinux/boot.msg /tftpboot#复制initrd.img[root@johnson_linux ~]# ls /var/www/html/centos6.7/p_w_picpaths/pxeboot/initrd.img /tftpboot#复制 vmlinuz[root@johnson_linux ~]# ls /var/www/html/centos6.7/p_w_picpaths/pxeboot/vmlinuz /tftpboot#复制pxelinux.0[root@johnson_linux ~]# cp /usr/share/syslinux/pxelinux.0 /tftpboot#创建pxelinux.cfg目录[root@johnson_linux ~]# mkdir /tftpboot/pxelinux.cfg#复制isolinux.cfg文件到/tftpboot目录并改名为default[root@johnson_linux ~]# cp /var/www/html/centos6.7/isolinux/isolinux.cfg /tftpboot/pxelinux.cfg/default
配置default文件
default linux # 修改为下面的label名字#prompt 1timeout 1display boot.msgmenu background splash.jpgmenu title Welcome to CentOS 6.7!menu color border 0 #ffffffff #00000000menu color sel 7 #ffffffff #ff000000menu color title 0 #ffffffff #00000000menu color tabmsg 0 #ffffffff #00000000menu color unsel 0 #ffffffff #00000000menu color hotsel 0 #ff000000 #ffffffffmenu color hotkey 7 #ffffffff #ff000000menu color scrollbar 0 #ffffffff #00000000label linux # 此处label名对应上面的default menu label ^Install or upgrade an existing system menu default kernel vmlinuz append initrd=initrd.img ks=172.18.0.144 # 添加ks文件的地址
配置/etc/xinetd.d/tftp
修改以下两处即可
service tftp { socket_type = dgram protocol = udp wait = yes user = root server = /usr/sbin/in.tftpd server_args = -s /tftpboot ------#修改为自己创建的目录路径 disable = no ------#此处的yes改为no per_source = 11 cps = 100 2 flags = IPv4 }
最后重启tftp服务
[root@localhost ~]# service xinetd restartStopping xinetd: [ OK ]Starting xinetd: [ OK ]#设置开机启动[root@localhost ~]# chkconfig xinetd on
3.配置dhcp服务器
安装dhcp并设置开机启动
[root@localhost ~]# yum inatall dhcp===================================================================================== Package Arch Version Repository Size=====================================================================================Installing: dhcp x86_64 12:4.1.1-49.P1.el6.centos base 822 kTransaction Summary====================================================================================
编辑/etc/dhcp/dhcpd.conf
# dhcpd.conf ddns-update-style none; next-server 172.18.0.144; #tftp地址 filename "pxelinux.0"; # PXE文件名 subnet 172.18.0.0 netmask 255.255.0.0 { # 设定子网 range 172.18.0.0 172.18.200.200; # 设定可分配的子网范围 option routers 172.18.0.1; # 配置路由网关 }
4.配置kickstart文件
安装system-config-kickstart.noarch
[root@johnson_linux ~]# yum install system-config-kickstart.noarch
在图形终端打开命令行窗口键入命令system-config-kickstart启动配置窗口
基本配置
引导选项配置
分区配置
网络配置
加密配置
防火墙配置
显示配置
安装包选择
安装脚本配置
保存退出,文件名ks.cfg
最后将生成的ks.cfg文件放在/var/www/html目录下即可
至此自动化安装环境配置完毕
使用虚拟器实验一定要将网络设置为桥接,否则服务连接dhcp服务器
关于ks文件的配置,想尝试去自己去编写,可以查考anaconda生成的anaconda-ks.cfg文件,就在root的家目录下
贴上我的ks文件:(以下ks文件以马哥的为范本做了简要的修改)
#platform=x86, AMD64, or Intel EM64T
#version=DEVEL# Firewall configurationfirewall --disabled# Install OS instead of upgradeinstall# Use network installationurl --url="http://172.18.17.2/centos6.7"# Root passwordrootpw --iscrypted $1$Ga8vc8m.$fmBL3Rail7oAeErVtJM/9/# System authorization informationauth --useshadow --passalgo=sha512# Use text mode installtextfirstboot --disable# System keyboardkeyboard us# System languagelang en_US# SELinux configurationselinux --disabled# Installation logging levellogging --level=info# Reboot after installationreboot# System timezonetimezone Asia/Shanghai# Network informationnetwork --bootproto=dhcp --device=eth0 --onboot=on# System bootloader configurationbootloader --append="quiet" --location=mbr# Clear the Master Boot Recordzerombr# Partition clearing informationclearpart --all # Disk partitioning informationpart /boot --fstype="ext4" --size=200part pv.008 --size=61440volgroup vg0 --pesize=8192 pv.008logvol / --fstype=ext4 --name=root --vgname=vg0 --size=20480logvol swap --name=swap --vgname=vg0 --size=2048logvol /usr --fstype=ext4 --name=usr --vgname=vg0 --size=10240logvol /var --fstype=ext4 --name=var --vgname=vg0 --size=20480%post# set hostname sed -i 's@HOSTNAME=.*@HOSTNAME=johnson_linux.server@' /etc/sysconfig/network# set hostsecho "172.18.17.2 johnson_server" >> /etc/hosts%end%packages@base%end总结:ks文件配置比较重要,也是比较有技术含量的一环,网络环境配置可以按部就班,但是ks文件却需要自己去定制,能读懂ks文件是关键,用system-config-kickstart来生成的ks文件也有不足之处,比如分区,就不能使用LVM,需要用到逻辑卷需要自己手动去编写ks文件
另外,若需要安装额外的rpm包,需要配置yum源,编写进ks文件中,最后还能编写安装后脚本,自动配置系统的一些信息,鉴于个人水平有限,也是个初学者,没法秀出“某格”很高的脚本,不献丑,错误之处,请纠正,谢谢!