先上拓扑图吧
0、使用虚拟机做实验的规划 1、ip地址的规划,模板练习机器1对应10.0.0.11,依次类推 2、所有的服务器配置好epel源 3、所有的服务器都要做内核优化(基本) 4、每个实验都要有详细的文档 5、模拟实验故障,并做记录 6、所用系统均为centos6.5for 64bit 内核版本号为2.6.32-431
一、部署Kickstart自动化安装系统平台
第一部分:基本准备篇
实验环境为centos6.5for 64bit
经验:建议安装kickstart-server为mini desktop作为模板机,这样方便以后制作anaconda安装引导文件!
此版本为ftp版本的哦!
0、kickstart自动化部署服务器安装:
随着公司业务不断增加,经常需要采购新服务器,并要求安装Linux系统,并且要求Linux版本要一致,方便以后的维护和管理,每次人工安装linux系统会浪费掉更多时间,如果我们有办法能节省一次一次的时间岂不更好呢?
大中型互联网公司一次采购服务器上百台,如果采用人工手动一台一台的安装,一个人得搞坏N张光盘,得多少个加班加点才能完成这项”艰巨”的任务呢,我们可以看到全人工来完成这样的工作太浪费人力了,有没有自动化安装平台呢,通过一台已存在的系统然后克隆或者复制到新的服务器呢。Kickstart可以毫不费力的完成这项工作。
PXE(prebootexecute environment,预启动执行环境)是由Intel公司开发的最新技术,工作于Client/Server的网络模式,支持工作站通过网络从远端服务器下载映像,并由此支持通过网络启动操作系统,在启动过程中,终端要求服务器分配IP地址,再用TFTP(trivialfile transfer protocol)协议下载一个启动软件包到本机内存中执行。
要使用kickstart安装平台,包括的完整架构为:Kickstart+DHCP+ftp+TFTP+PXE,从架构可以看出,大致需要安装的服务,例如dhcp、tftp、nfs、kickstart/pxe等。
PXE环境的配置预热 关闭防火墙和selinux /etc/init.d/iptablesstop chkconfigiptables off setenforce0 sed-i ‘s/SELINUX=enforcing/SELINUX=disabled/‘ /etc/sysconfig/selinux
1、首先要部署好DHCP服务器
第1步安装DHCP服务器软件 yum -y install dhcp 安装之后查看安装后生成了哪些文件 rpm -ql dhcp |less 小提示:配置之前要看下本机的ip地址,因为配置DHCP服务器的地址池是需要和本机的在同一网络地址段的哦 [[email protected]~]# ip a |grep gl inet 10.0.0.18/24 brd 10.0.0.255 scope globaleth0
第2步配置DHCP DHCP默认配置文件为空,这里拷贝模板配置文件 /bin/cp/usr/share/doc/dhcp-4.1.1/dhcpd.conf.sample /etc/dhcp/dhcpd.conf >/etc/dhcp/dhcpd.conf 拷贝以下内容
ddns-update-styleinterim; ignoreclient-updates; allowbooting; allowbootp; subnet10.0.0.0 netmask 255.255.255.0 { #--- default gateway optionrouters 10.0.0.254; optionsubnet-mask 255.255.255.0; optiontime-offset -18000; range dynamic-bootp 10.0.0.3 10.0.0.200; next-server10.0.0.18; filename"pxelinux.0"; hostns { hardwareethernet 00:0C:29:C8:12:84; fixed-address10.0.0.12;} }
注: 00:0C:29:C8:12:84为指定DHCP客户端的MAC地址
1、必须要存在的一个指令是subne,至少需要一个,后面跟网段以及子网掩码,然后以大括号扩起来,里面包含针对这个subnet的指令
2、subnet {}里面所定义的网段,一定是要和本机所在的网段是一致的,Linux可以使用ifconfig来查看本机的ip地址信息
3、subnet之外的设置都是针对全局的配置文件生效的subnet之外的设置都是针对全局的配置文件生效的
4、range指定地址段的范围
5、host指令,主要是根据客户端的MAC地址,进而绑定分配特定的ip
第4步检测语法,启动DHCP服务,并加入开机自启动
/etc/init.d/dhcpd configtest /etc/init.d/dhcpd restart && chkconfig dhcpd on
第5步 测试DHCP客户端获取ip地址(可省略)
另外开启一台虚拟机,看能否获取到ip地址为10.0.0.12
[[email protected]~]# cat /etc/sysconfig/network-scripts/ifcfg-eth0
或者更为简单的就是直接使用kickstart的客户端即可
小结: dhcp搞定 第一安装yum -yinstall dhcp 第二配置dhcp中最重要的两个参数 next-server代表tftp服务器 filename 第三就是为了让kickstart客户端获取ip地址
2、部署tftp服务器
第一步:安装 yum -y install tftp-server syslinux 第二步复制配置文件并修改 cd /var/lib/tftpboot &&cp /usr/share/syslinux/pxelinux.0 . 第四步修改tftp可用 sed -i ‘s/= yes/= no/g‘ /etc/xinetd.d/tftp grep disable /etc/xinetd.d/tftp 第五步:启动,并设置开机自启动 /etc/init.d/xinetd start chkconfig xinetd on && chkconfig tftp on server_atgs = -s /var/lib/tftpboot //客户端到此目录下去获取或者上传数据 /etc/init.d/dhcpd restart && /etc/init.d/xinetd restart
3、配置tftp+pxe
安装和配置tftp服务(准备简单的PXE环境)
要实现远程安装系统,首先要在tftpboot目录指定相关PXE内核模块及相关参数配置步骤如下
cd /var/lib/tftpboot/ && mount /dev/cdrom /mnt/ cp -rvp /mnt/isolinux/* /var/lib/tftpboot/
cd /var/lib/tftpboot/ && mkdir pxelinux.cfg cp /var/lib/tftpboot/isolinux.cfg/var/lib/tftpboot/pxelinux.cfg/default /etc/init.d/dhcpd restart && /etc/init.d/xinetd restart ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
注释说明:
3)客户端连接tftp-server去上传数据或者下载数据,都会从这个目录去获取 因此需要到这个目录下去放置一些数据 1)pexlinux.0文件(当客户端启动的时候就会启动此文件) 硬盘启动一般去加载的启动程序是grub;PXE网络启动的话,首先要加载的就是 pexlinux.0这个程序 2)此文件是有syslinux安装包提供的rpm -qsyslinux,若没安装 直接使用yum -y install syslinux安装即可 cd /var/lib/tftpboot/ rpm -q syslinux find /usr/ -name "pxelinux.0" /usr/share/syslinux/pxelinux.0 3)拷贝pexlinux.0文件到tftp的/var/lib/tftpboot根目录下 cp /usr/share/syslinux/pxelinux.0 . ll total 28 -rw-r--r-- 1 root root 26595 Oct 18 00:22 pxelinux.0 4)还需要在tftp的根目录下去放置一个叫做pxelinux.cfg目录配置文件 这个配置文件是有要求的,名字叫做是pxelinux.cfg这个目录里面的 cd /var/lib/tftpboot/ && mkdir pxelinux.cfg cp isolinux.cfg pxelinux.cfg/default cp: overwrite `pxelinux.cfg/default‘? y ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
5、配置ftp配置FTP服务(准备安装源)
挂载ISO镜像可以使用autofs来实现哦!
远程安装系统,客户端需要下载系统所需要的软件包,所以需要使用NFS或者HTTPD把镜像文件共享出来,这里介绍使用ftp的方式来挂载和安装
yum -y install vsftpd autofs echo "/var/ftp/pub /etc/auto.ftp" >>/etc/auto.master cat /etc/auto.ftp //添加下面两行内容 centos -fstype=iso9660,ro,loop :/data/CentOS-6.5-x86_64-bin-DVD1.iso ubuntu -ftype=iso9660,ro,loop :/data/ubuntu-14.04.1-server-amd64.iso mkdir /data
通过scp上传镜像文件到/data目录下 ll /data/CentOS-6.5-x86_64-bin-DVD1.iso -rw-r--r-- 1 root root 4467982336 Apr 16 2014 /data/CentOS-6.5-x86_64-bin-DVD1.iso [[email protected] ~]# ll /data/ubuntu-14.04.1-server-amd64.iso -rw-r--r-- 1 root root 599785472 Oct 18 11:38/data/ubuntu-14.04.1-server-amd64.iso /etc/init.d/vsftpd restart&& /etc/init.d/autofs restart Shutting down vsftpd: [ OK ] Starting vsftpd for vsftpd: [ OK ] Stopping automount: [ OK ] Starting automount: [ OK ]
6、最简单PXE环境准备
1、 通过网络找到tftp服务器之后,还需要去找pxelinux.0这个文件(tftp引导程序) 2、 还需要读取isolinux里面的所有文件(通过光盘安装的时候就是读取这个里面的所有的文件) 3、 显示文件(boot.msg) 4、 重点vmlinuz内核文件 5、 重点initrd.img(初始化闪存文件),里面有驱动程序之类的 6、 isolinux.cfg配置文件 7、 pxelinux.cfg目录文件 8、拷贝isolinux.cfg到 pxelinux.cfg目录文件并改名为default
# cp isolinux.cfg pxelinux.cfg/default cp: overwrite `pxelinux.cfg/default‘? y
pxelinux.0+vmlinuz+initrd.img+ISO镜像文件+default 上面介绍的只是能通过网络的形式来进行安装 如果需要使用全自动安装的方式则还需要借助kickstart文件来安装 1、 安装图形工具,并生成ks文件 2、 yum –yinstall system-config-kickstart 3、 system-config-kickstart 4、配置好kickstart文件之后,上传到ftp服务器的根目录下 5、修改default配置文件(告知ftp中ks.cfg的具体位置)
6、重启所有服务 /etc/init.d/dhcpd restart && /etc/init.d/xinetd restart /etc/init.d/vsftpd restart && /etc/init.d/autofs restart
接下来就可以
最后的小结
附录0:本实验dhcp的配置文件
#cat/etc/dhcp/dhcpd.conf 拷贝以下内容 ddns-update-styleinterim; ignoreclient-updates; allowbooting; allowbootp; subnet10.0.0.0 netmask 255.255.255.0 { #--- default gateway optionrouters 10.0.0.254; optionsubnet-mask 255.255.255.0; optiontime-offset -18000; range dynamic-bootp 10.0.0.3 10.0.0.200; next-server10.0.0.18; filename"pxelinux.0"; hostns { hardwareethernet 00:0C:29:C8:12:84; fixed-address10.0.0.12;} }
附录1:本实验default的配置文件
[[email protected]~]# cat /var/lib/tftpboot/pxelinux.cfg/default defaultvesamenu.c32 #prompt1 timeout600 displayboot.msg menubackground splash.jpg menutitle Welcome to CentOS 6.5! menucolor border 0 #ffffffff #00000000 menucolor sel 7 #ffffffff #ff000000 menucolor title 0 #ffffffff #00000000 menucolor tabmsg 0 #ffffffff #00000000 menucolor unsel 0 #ffffffff #00000000 menucolor hotsel 0 #ff000000 #ffffffff menucolor hotkey 7 #ffffffff #ff000000 menucolor scrollbar 0 #ffffffff #00000000 labellinux menu label ^Install or upgrade an existingsystem menu default kernel vmlinuz ks=ftp://10.0.0.18/ks.cfg append initrd=initrd.img labelvesa menu label Install system with ^basic videodriver kernel vmlinuz append initrd=initrd.img xdriver=vesanomodeset labelrescue menu label ^Rescue installed system kernel vmlinuz append initrd=initrd.img rescue labellocal menu label Boot from ^local drive localboot 0xffff labelmemtest86 menu label ^Memory test kernel memtest append -
附录2:本实验ks.cfg的配置文件
[[email protected]~]# cat /var/ftp/ks.cfg #platform=x86,AMD64, or Intel EM64T #version=DEVEL #Firewall configuration firewall--disabled #对外开放防火墙程序ssh。 #firewall--service=ssh #Install OS instead of upgrade #选择安装方式,ISO镜像安装源的具体位置,ISO源可以是url|http|nfs|ftp install #Use network installation url--url="ftp://10.0.0.18/pub/centos" #Root password 设定root用户的密码 rootpw--iscrypted $1$TNHk/xWh$dYdD65ClkqaAWd2BqmrnB0 #Networkinformaton network--bootproto=dhcp --device eth0 --onboot=on #System authorization information auth --useshadow --passalgo=sha512 #Use text mode install 文本|图形方式安装 text firstboot--disable #System keyboard keyboardus #System language langen_US #SELinux configuration selinux--disabled #Installation logging level logging--level=info #Reboot after installation重新安装完系统需要重启,完成初始化 reboot #System timezone 时区亚洲/上海 timezone Asia/Shanghai #System bootloader configuration 引导记录安装在MBR上面 bootloader--location=mbr #Clear the Master Boot Record zerombr #文本模式安装时需要对初始化磁盘。使用--initlabel可初始化磁盘。 #需要注意的是,如果用此ks.cfg安装CentOS6.X系列的系统时,需要自己再点一次初始化磁盘空间。 clearpart--initlabel --all --drives=sda #Partition clearing information clearpart--all --initlabel #Disk partitioning information #part/boot --fstype="ext4" --size=200 #part/ --fstype="ext4" --size=1 #partswap --fstype="swap" --size=1 #设置分区,此处将剩余空间分配给/目录,具体如何分区请按照个人详细情况划分。 part/boot --fstype=ext4 --size=200 part/ --fstype="ext4" --grow --size=10000 partswap --size=2048 %packages--nobase @core %end
附录三:DHCP的配置文件
[[email protected]~]# cat /etc/dhcp/dhcpd.conf ddns-update-styleinterim; ignoreclient-updates; allowbooting; allowbootp; subnet10.0.0.0 netmask 255.255.255.0 { #--- default gateway optionrouters 10.0.0.254; optionsubnet-mask 255.255.255.0; optiontime-offset -18000; range dynamic-bootp 10.0.0.3 10.0.0.200; next-server10.0.0.18; filename"pxelinux.0"; hostns { hardwareethernet 00:0C:29:C8:12:84; fixed-address10.0.0.12;} }
附录四:vsftpd的配置文件
[[email protected]~]# cat /etc/auto.master 前面无用内容省略 +auto.master /var/ftp/pub /etc/auto.ftp [[email protected]~]# cat /etc/auto.ftp centos-fstype=iso9660,ro,loop :/data/CentOS-6.5-x86_64-bin-DVD1.iso ubuntu-ftype=iso9660,ro,loop :/data/ubuntu-14.04.1-server-amd64.iso
追风整理于2014/10/19第6次梳理
参考博文:
Centos 6.5 Kickstart自动化安装系统 - Hello.C - 博客园
http://www.cnblogs.com/Initart/articles/3731182.html
Linux下NFS的安装配置 - IT系统运维 - 追求卓越,成功就会出其不意找上门~~
http://blog.zhanxb.com/post/319/
Kickstart+Dhcp+Nfs+Tftp+Pxe 批量Linux服务器安装平台 - 吴光科-专注自动化运维 - 51CTO技术博客
http://wgkgood.blog.51cto.com/1192594/530304
Kickstart:实现RHEL的自动安装_博客专题_51CTO技术博客