如果要同时上线2,3台服务器,可以使用手动安装操作系统,10台20台基本没法忍受,上百台呢,根本不可能手动安装管理,只考虑到这里并不能解决所有问题,只装个系统并不能满足批量管理的需求,这就需要在安装好系统后自动启动salt客户端程序,实现在装完系统后就在运维人员的管理范围之类,这篇文章就是基于这样的需求而完成的。
环境介绍:Centos6.5+PXE+TFTP+FTP+DHCP+Kickstart
1.配置DHCP服务程序
①安装DHCP服务
yum -y install dhcp
②配置DHCP服务
vim /etc/dhcp/dhcp.conf
- allowbooting;
- allowbootp;
- ddns-update-styleinterim;
- ignoreclient-updates;
- subnet192.168.6.0netmask255.255.255.0{
- range192.168.6.200192.168.6.210;
- optionsubnet-mask255.255.255.0;
- optionrouters192.168.6.1;
- optiondomain-name-servers202.106.0.20;
- default-lease-time21600;
- max-lease-time43200;
- next-server192.168.6.107;#服务器端IP
- filename"pxelinux.0";#引导文件
- }
③启动服务
service dhcpd start
2.配置TFTP服务程序(提供引导以及驱动文件)
①安装TFTP服务
yum -y install tftp-server
②配置TFTP服务
vim /etc/xinetd.d/tftp
- servicetftp
- {
- socket_type=dgram
- protocol=udp
- wait=yes
- user=root
- server=/usr/sbin/in.tftpd
- server_args=-s/var/lib/tftpboot
- disable=no#修改为no
- per_source=11
- cps=1002
- flags=IPv4
③启动TFTP服务,开启相应端口
service xinetd restart#在Centos7中没有这个服务,启动tftp.socket即可
iptables -I INPUT -p udp --dport 69 -j ACCEPT
3.配置SYSlinux服务程序(提供引导文件)
①安装SYSlinux服务
yum -y install syslinux
②复制引导文件到TFTP中
cd /var/lib/tftpboot/
cp /usr/share/syslinux/pxelinux.0 .
mount /dev/cdrom /media/#挂载光盘镜像
cp /media/images/pxeboot/{vmlinuz,initrd.img} .
cp /media/isolinux/{vesamenu.c32,boot.msg} .
cd /var/lib/tftpboot/
mkdir pxelinux.cfg
cp /media/isolinux/isolinux.cfg pxelinux.cfg/default
chmod a+w pxelinux.cfg/default#默认是只读文件
vim pxelinux.cfg/default
- defaultlinux#修改成linux,这样在启动时就会自动选择此选项
- #prompt1
- timeout600
- displayboot.msg
- menubackgroundsplash.jpg
- menutitleWelcometoCentOS6.5!
- menucolorborder0#ffffffff#00000000
- menucolorsel7#ffffffff#ff000000
- menucolortitle0#ffffffff#00000000
- menucolortabmsg0#ffffffff#00000000
- menucolorunsel0#ffffffff#00000000
- menucolorhotsel0#ff000000#ffffffff
- menucolorhotkey7#ffffffff#ff000000
- menucolorscrollbar0#ffffffff#00000000
- labellinux
- menulabel^Installorupgradeanexistingsystem
- menudefault
- kernelvmlinuz
- appendinitrd=initrd.imginst.stage2=ftp://192.168.66.23ks=ftp://192.168.66.23/pub/ks.cfgquiet#修改默认安装方式为FTP文件传输方式,指定Kickstart应答文件的获取路径
- labelvesa
- menulabelInstallsystemwith^basicvideodriver
- kernelvmlinuz
- appendinitrd=initrd.imgxdriver=vesanomodeset
- labelrescue
- menulabel^Rescueinstalledsystem
- kernelvmlinuz
- appendinitrd=initrd.imgrescue
- labellocal
- menulabelBootfrom^localdrive
- localboot0xffff
- labelmemtest86
- menulabel^Memorytest
- kernelmemtest
- append-
4.配置vsftpd服务程序
①安装vsftpd服务
yum -y instlal vsftpd
②启动vsftpd服务,开启相应端口
service vsftpd start
iptables -I INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -I INPUT -p tcp --dport 20 -j ACCEPT
iptables -I INPUT -p tcp --dport 21 -j ACCEPT
③拷贝光盘镜像文件到vsftpd中
cp -r /media/* /var/ftp/
5.创建Kickstart应答文件
cp ~/anaconda-ks.cfg /var/ftp/pub/ks.cfg
chmod +r /var/ftp/pub/ks.cfg
②编辑应答文件
vim/var/ftp/pub/ks.cfg
- #Kickstartfileautomaticallygeneratedbyanaconda.
- #version=DEVEL
- install
- url--url=ftp://192.168.6.107#修改为url安装方式
- langen_US.UTF-8
- keyboardus
- network--onbootyes--deviceeth0--bootprotodhcp--noipv6#修改为自动获取ip
- rootpw--iscrypted$6$LCJ6k6MZq5bR6VFp$i.UkCmr7KbhB5Wx0IhQ9L834eW3eO1GZRKa0RxFiCGmXvbZd6wN7n7BkP961FU5DaX53ydFlj5lVSmHfGUWrY/
- firewall--service=ssh#防火墙配置
- authconfig--enableshadow--passalgo=sha512
- selinux--disable#selinux关闭
- reboot#安装后自动重启
- timezoneAsia/Shanghai#时区
- bootloader--append="rhgbquiet"--location=mbr--driveorder=sda
- clearpart--all--initlabel#清理所有分区
- #LVM方式分区
- part/boot--fstype="ext4"--size=200#boot分区200M
- partpv.01--grow--size=1
- volgroupVolGroup--pesize=4096pv.01
- logvol/--fstype="ext4"--name=lv_root--vgname=VolGroup--size=10240#根分区10G
- logvolswap--name=lv_swap--vgname=VolGroup--size=2048#交换分区2G
- %packages#安装基础包
- @base
- @console-internet
- @core
- @debugging
- @directory-client
- @hardware-monitoring
- @java-platform
- @large-systems
- @network-file-system-client
- @performance
- @perl-runtime
- @server-platform
- @server-policy
- @workstation-policy
- pax
- oddjob
- sgpio
- device-mapper-persistent-data
- samba-winbind
- certmonger
- pam_krb5
- krb5-workstation
- perl-DBD-sqlite
- %end
- %post#安装后执行脚本
- /usr/sbin/ntpdate182.92.12.11#和阿里云服务器对时
- /sbin/hwclock-w#让硬件时间和系统时间同步
- /sbin/ifconfig|grepBcast|awk'{print$2}'|awk-F'.''{print$4}'>/etc/hostname#截取Ip地址最后一段做为主机名
- /usr/bin/yum-yinstallepel-release#安装epel仓库
- /usr/bin/yum-yinstallsalt-minion#安装salt客户端
- /bin/sed-i"s/#master:salt/master:192.168.6.107/"/etc/salt/minion#修改客户端配置文件的master连接地址
- /sbin/servicesalt-minionstart#启动salt-minion服务
- /sbin/chkconfigsalt-minionon#因为装完系统会自动重启,所以先设置开机启动项
- %end
6.自动部署客户端主机
流程如下:
自动获取IP--自动开始安装--自动选择所有可选项--自动分区--安装基础包(621个)--运行脚本--自动重启--进入操作系统
需要检查的东西:
主机名(hostname),ip地址(ifconfig),时间(date),salt-minion服务是否已经开启(service salt-minion status)
7.和已经安装好salt客户端的主机建立连接
①salt-key list
看到以ip地址最后一位命名的主机的验证请求
②salt-key -A
至此已经进入运维人员管理范围。