pxe部署centos7
pxe安装centos7环境部署
要求:自动安装salt-minion 2016版本
自动修改authorized_keys文件,系统装完机器可以免密登录
设置salt和ssh开机自启
以上所有要求,希望在部署pxe环境是,能./install-pxe.sh 一键部署,pxe环境部署在centos 6.3上
我在此之前准备好centos6和centos7软件包,以及salt安装包,并设置服务器防火墙。
salt安装包-(查看salt-minion版本)
install-pxe.sh
#!/bin/baship=192.168.163.0mask=255.255.255.0ip1=192.168.163.10ip2=192.168.163.20myip=`ip a s | grep "eth0" | grep "inet" | awk '{print $2}' | awk -F "/" '{print $1}'`sip7=192.168.163.130if [ -f /root/.ssh/id_rsa.pub ];thenecho "公钥已生成"elseecho "请您用ssh-keygen命令手动生成密钥后重试!&& exit 5"fipubkey=`cat /root/.ssh/id_rsa.pub`# 查看网络环境if `ping -w 10 -c 5 $sip7 >> /dev/null`;thenecho "与安装源服务器网络正常;继续中..."elseecho "与安装源服务器网络不正常;请联系v_张山" && exit 10fi# 拷贝镜像文件mkdir /centos6scp -r root@$sip7:/centos6/* /centos6/# 拷贝salt软件包mkdir /opt/saltscp -r root@$sip7:/opt/salt/* /opt/salt/# 创建yum源mkdir /etc/yum.repos.d/backmv /etc/yum.repos.d/*.repo /etc/yum.repos.d/back/cat <<EOF > /etc/yum.repos.d/centos6.repo[iso]name=isobaseurl=file:///centos6/enabled=1gpgcheck=0[salt]name=saltbaseurl=file:///opt/salt/enabled=1gpgcheck=0EOFyum clean allif yum repolist;thenecho "yum源仓库已创建成功,开始安装软件..."elseecho "yum源仓库创建失败,请联系v_张山" && exit 20fi# 安装软件if yum install -y syslinux tftp-server vsftpd dhcp xinetd system-config-kickstart;thenecho "所需软件安装成功!"elseecho "软件安装失败,请联系v_张山" && exit 30fi# 将所需文件拷贝到/var/ftp目录下,为其他机器提供安装源mkdir /var/ftp/{iso,salt}scp -r root@$sip7:/mnt/* /var/ftp/iso/cp -a /opt/salt/* /var/ftp/salt/# 配置dhcp文件cat <<EOF > /etc/dhcp/dhcpd.confsubnet $ip netmask $mask {range $ip1 $ip2;next-server $myip;filename "pxelinux.0";}EOF# 开启tftp靠xinetd启动sed -i '/disable/s/yes/no/g' /etc/xinetd.d/tftp# 拷贝引导文件到tftp共享目录下if [ ! -f /var/lib/tftpboot/pxelinux.0 ];thencp /usr/share/syslinux/pxelinux.0 /var/lib/tftpboot && echo "pxelinux.0文件已复制!"elseecho "pxelinux.0文件已存在!"fiif [ ! -d /var/lib/tftpboot/pxelinux.cfg ];thenmkdir /var/lib/tftpboot/pxelinux.cfg && echo "pxelinux.cfg目录已创建!"elseecho "pxelinux.cfg目录已存在!"fi# 拷贝下载的内核,驱动以及菜单文件到tftp共享目录下cp -a /var/ftp/iso/isolinux/isolinux.cfg /var/lib/tftpboot/pxelinux.cfg/cp -a /var/ftp/iso/isolinux/vmlinuz /var/lib/tftpboot/cp -a /var/ftp/iso/isolinux/initrd.img /var/lib/tftpboot/cp -a /var/ftp/iso/isolinux/vesamenu.c32 /var/lib/tftpboot/mv /var/lib/tftpboot/pxelinux.cfg/isolinux.cfg /var/lib/tftpboot/pxelinux.cfg/default# 修改default文件sed -i '64,/append/c append initrd=initrd.img ks=ftp://'$myip'/pub/ks.cfg quiet' /var/lib/tftpboot/pxelinux.cfg/defaultsed -i '/default/s/vesamenu.c32/linux/g' /var/lib/tftpboot/pxelinux.cfg/default# 修改ks.cfg文件scp root@$sip7:/ks.cfg /var/ftp/pub/sed -i '/^url/c url --url="ftp://'$myip'/iso"' /var/ftp/pub/ks.cfgsed -i '51s/^.*$/baseurl=ftp://'$myip'/iso/g' /var/ftp/pub/ks.cfgsed -i '57s/^.*$/baseurl=ftp://'$myip'/salt/g' /var/ftp/pub/ks.cfgsed -i '62s/^.*$/rpm --import ftp://'$myip'/salt/SALTSTACK-GPG-key.pub/g' /var/ftp/pub/ks.cfgsed -i '69c '"$pubkey"'' /var/ftp/pub/ks.cfg# 重启服务并设置开机自启service vsftpd restartservice dhcpd restartservice xinetd restartchkconfig vsftpd onchkconfig dhcpd onchkconfig xinetd on
ks.cfg文件
#platform=x86, AMD64, 或 Intel EM64T#version=DEVEL# Install OS instead of upgradeinstall# Keyboard layoutskeyboard 'us'# Reboot after installationreboot# Root passwordrootpw --iscrypted $1$iuW5Samq$BM.RBGzI.82Slvau2VnUq0# System timezonetimezone Asia/Shanghai --isUtc# Use network installationurl --url="ftp://192.168.163.129/iso"# System languagelang en_US# Firewall configurationfirewall --disabled# Network informationnetwork --bootproto=dhcp --device=eno16777736# System authorization informationauth --useshadow --passalgo=sha512# Use graphical installgraphicalfirstboot --disable# SELinux configurationselinux --disabled# System bootloader configurationbootloader --location=mbr# Clear the Master Boot Recordzerombr# Partition clearing informationclearpart --all --initlabel# Disk partitioning informationpart / --fstype="ext4" --size=10000part /boot --fstype="ext4" --size=2000part swap --fstype="swap" --size=3000%packages@core%end%postmkdir /etc/yum.repos.d/backmv /etc/yum.repos.d/* /etc/yum.repos.d/backcat <<EOF > /etc/yum.repos.d/centos.repo[iso]name=isobaseurl=ftp://192.168.163.129/isoenabled=1gpgcheck=0[salt]name=saltbaseurl=ftp://192.168.163.129/saltenabled=1gpgcheck=0EOFrpm --import ftp://192.168.163.129/salt/SALTSTACK-GPG-key.pubyum install -y salt-minionmkdir /root/.sshcat <<EOF > /root/.ssh/authorized_keysssh-rsa AAAAB3NzaC1yc2EAAAABIwAAAQEA3q6Bgdjf5mDUEgkCO9Ht41u4zV35J5FiDCaXDN1xo06nQ53X/8njmSJqxHhqIsPBa2iOKbPuTGFG/toU7ibxb9W/wwKVInUUrOuvVpylXw17dLHPYZHFbX0crzjqYvbJy0GhG2n6G/Fyc0JxCOeIsixaQM8Pyz4bhbOpN4Ow5KcMa2o3mRZppOwjE4oDKhozBY0t79EqPsUJa9sG7qbL6rAdBpsRNA5Cz2A3vJUt5iA0F6VCsta/dUBesjNDJXaS6QcJyRvIDwy4FTrx6OsYochQGMrKMoHV0b+TNVQ4Pt9Z+eJv2BnEA03eQYG3Thn0H485mtzcHiS/5KEwttT0NQ== root@slaveEOFsed -i '/^PasswordAuthentication/c PasswordAuthentication no' /etc/ssh/sshd_configsystemctl restart sshdsystemctl enable sshdsystemctl restart salt-minionsystemctl enable salt-minion%end
原理:
(1)客户机(BIOS设置成为网络启动)通过支持PXE的网卡向网络中发送请求DHCP信息的广播请求IP地址(2)dhcp服务器分配IP地址,和下一个服务器地址(next-server),即tftp服务器和启动文件的位置(3)客户机向tftp服务器请求下载启动所需文件文件,包括:启动文件pxelinux.0、启动菜单文件default、驱动文件initrd.img和内核文件vmlinuz(4)下载成功后,客户机读取default文件,获得自应答文件ks.cfg的位置。自应答文件包含了系统安装过程中需要手动设置的语言、密码、网络参数等相关的配置信息(5)客户机向ks.cfg文件所在的服务器请求下载ks.cfg文件(6)客户机读取了ks.cfg文件后,根据其中的配置信息找到所需软件包的位置(即YUM源),下载安装过程所需的软件包(7)下载成功后,客户机开始自动安装操作系统
DHCP服务
——给客户端分配IP地址,定位引导程序,即pxelinux.0文件,(必需)
TP服务
——存放系统安装所需要的引导文件pxelinux.0文件(必需)
——存放default文件 :设置默认安装的操作系统
——存放initrd.img (驱动文件)和vmlinuz(内核文件)