pxe

pxe部署centos7

 

pxe安装centos7环境部署
要求:自动安装salt-minion 2016版本
自动修改authorized_keys文件,系统装完机器可以免密登录
设置salt和ssh开机自启

 

 

  1. 以上所有要求,希望在部署pxe环境是,能./install-pxe.sh 一键部署,pxe环境部署在centos 6.3

我在此之前准备好centos6和centos7软件包,以及salt安装包,并设置服务器防火墙。

 

 

salt安装包-(查看salt-minion版本)

 

 

图片

 

 

install-pxe.sh

 
  1. #!/bin/bash
  2. ip=192.168.163.0
  3. mask=255.255.255.0
  4. ip1=192.168.163.10
  5. ip2=192.168.163.20
  6. myip=`ip a s | grep "eth0" | grep "inet" | awk '{print $2}' | awk -F "/" '{print $1}'`
  7. sip7=192.168.163.130
  8. if [ -f /root/.ssh/id_rsa.pub ];then
  9. echo "公钥已生成"
  10. else
  11. echo "请您用ssh-keygen命令手动生成密钥后重试!&& exit 5"
  12. fi
  13. pubkey=`cat /root/.ssh/id_rsa.pub`
  14. # 查看网络环境
  15. if `ping -w 10 -c 5 $sip7 >> /dev/null`;then
  16. echo "与安装源服务器网络正常;继续中..."
  17. else
  18. echo "与安装源服务器网络不正常;请联系v_张山" && exit 10
  19. fi
  20. # 拷贝镜像文件
  21. mkdir /centos6
  22. scp -r root@$sip7:/centos6/* /centos6/
  23. # 拷贝salt软件包
  24. mkdir /opt/salt
  25. scp -r root@$sip7:/opt/salt/* /opt/salt/
  26. # 创建yum源
  27. mkdir /etc/yum.repos.d/back
  28. mv /etc/yum.repos.d/*.repo /etc/yum.repos.d/back/
  29. cat <<EOF > /etc/yum.repos.d/centos6.repo
  30. [iso]
  31. name=iso
  32. baseurl=file:///centos6/
  33. enabled=1
  34. gpgcheck=0
  35. [salt]
  36. name=salt
  37. baseurl=file:///opt/salt/
  38. enabled=1
  39. gpgcheck=0
  40. EOF
  41. yum clean all
  42. if yum repolist;then
  43. echo "yum源仓库已创建成功,开始安装软件..."
  44. else
  45. echo "yum源仓库创建失败,请联系v_张山" && exit 20
  46. fi
  47. # 安装软件
  48. if yum install -y syslinux tftp-server vsftpd dhcp xinetd system-config-kickstart;then
  49. echo "所需软件安装成功!"
  50. else
  51. echo "软件安装失败,请联系v_张山" && exit 30
  52. fi
  53. # 将所需文件拷贝到/var/ftp目录下,为其他机器提供安装源
  54. mkdir /var/ftp/{iso,salt}
  55. scp -r root@$sip7:/mnt/* /var/ftp/iso/
  56. cp -a /opt/salt/* /var/ftp/salt/
  57. # 配置dhcp文件
  58. cat <<EOF > /etc/dhcp/dhcpd.conf
  59. subnet $ip netmask $mask {
  60. range $ip1 $ip2;
  61. next-server $myip;
  62. filename "pxelinux.0";
  63. }
  64. EOF
  65. # 开启tftp靠xinetd启动
  66. sed -i '/disable/s/yes/no/g' /etc/xinetd.d/tftp
  67. # 拷贝引导文件到tftp共享目录下
  68. if [ ! -f /var/lib/tftpboot/pxelinux.0 ];then
  69. cp /usr/share/syslinux/pxelinux.0 /var/lib/tftpboot && echo "pxelinux.0文件已复制!"
  70. else
  71. echo "pxelinux.0文件已存在!"
  72. fi
  73. if [ ! -d /var/lib/tftpboot/pxelinux.cfg ];then
  74. mkdir /var/lib/tftpboot/pxelinux.cfg && echo "pxelinux.cfg目录已创建!"
  75. else
  76. echo "pxelinux.cfg目录已存在!"
  77. fi
  78. # 拷贝下载的内核,驱动以及菜单文件到tftp共享目录下
  79. cp -a /var/ftp/iso/isolinux/isolinux.cfg /var/lib/tftpboot/pxelinux.cfg/
  80. cp -a /var/ftp/iso/isolinux/vmlinuz /var/lib/tftpboot/
  81. cp -a /var/ftp/iso/isolinux/initrd.img /var/lib/tftpboot/
  82. cp -a /var/ftp/iso/isolinux/vesamenu.c32 /var/lib/tftpboot/
  83. mv /var/lib/tftpboot/pxelinux.cfg/isolinux.cfg /var/lib/tftpboot/pxelinux.cfg/default
  84. # 修改default文件
  85. sed -i '64,/append/c append initrd=initrd.img ks=ftp://'$myip'/pub/ks.cfg quiet' /var/lib/tftpboot/pxelinux.cfg/default
  86. sed -i '/default/s/vesamenu.c32/linux/g' /var/lib/tftpboot/pxelinux.cfg/default
  87. # 修改ks.cfg文件
  88. scp root@$sip7:/ks.cfg /var/ftp/pub/
  89. sed -i '/^url/c url --url="ftp://'$myip'/iso"' /var/ftp/pub/ks.cfg
  90. sed -i '51s/^.*$/baseurl=ftp:\/\/'$myip'\/iso/g' /var/ftp/pub/ks.cfg
  91. sed -i '57s/^.*$/baseurl=ftp:\/\/'$myip'\/salt/g' /var/ftp/pub/ks.cfg
  92. sed -i '62s/^.*$/rpm --import ftp:\/\/'$myip'\/salt\/SALTSTACK-GPG-key.pub/g' /var/ftp/pub/ks.cfg
  93. sed -i '69c '"$pubkey"'' /var/ftp/pub/ks.cfg
  94. # 重启服务并设置开机自启
  95. service vsftpd restart
  96. service dhcpd restart
  97. service xinetd restart
  98. chkconfig vsftpd on
  99. chkconfig dhcpd on
  100. chkconfig xinetd on

ks.cfg文件

 
  1. #platform=x86, AMD64, 或 Intel EM64T
  2. #version=DEVEL
  3. # Install OS instead of upgrade
  4. install
  5. # Keyboard layouts
  6. keyboard 'us'# Reboot after installation
  7. reboot
  8. # Root password
  9. rootpw --iscrypted $1$iuW5Samq$BM.RBGzI.82Slvau2VnUq0
  10. # System timezone
  11. timezone Asia/Shanghai --isUtc
  12. # Use network installation
  13. url --url="ftp://192.168.163.129/iso"
  14. # System language
  15. lang en_US
  16. # Firewall configuration
  17. firewall --disabled
  18. # Network information
  19. network --bootproto=dhcp --device=eno16777736
  20. # System authorization information
  21. auth --useshadow --passalgo=sha512
  22. # Use graphical install
  23. graphical
  24. firstboot --disable
  25. # SELinux configuration
  26. selinux --disabled
  27. # System bootloader configuration
  28. bootloader --location=mbr
  29. # Clear the Master Boot Record
  30. zerombr
  31. # Partition clearing information
  32. clearpart --all --initlabel
  33. # Disk partitioning information
  34. part / --fstype="ext4" --size=10000
  35. part /boot --fstype="ext4" --size=2000
  36. part swap --fstype="swap" --size=3000
  37. %packages
  38. @core
  39. %end
  40. %post
  41. mkdir /etc/yum.repos.d/back
  42. mv /etc/yum.repos.d/* /etc/yum.repos.d/back
  43. cat <<EOF > /etc/yum.repos.d/centos.repo
  44. [iso]
  45. name=iso
  46. baseurl=ftp://192.168.163.129/iso
  47. enabled=1
  48. gpgcheck=0
  49. [salt]
  50. name=salt
  51. baseurl=ftp://192.168.163.129/salt
  52. enabled=1
  53. gpgcheck=0
  54. EOF
  55. rpm --import ftp://192.168.163.129/salt/SALTSTACK-GPG-key.pub
  56. yum install -y salt-minion
  57. mkdir /root/.ssh
  58. cat <<EOF > /root/.ssh/authorized_keys
  59. ssh-rsa AAAAB3NzaC1yc2EAAAABIwAAAQEA3q6Bgdjf5mDUEgkCO9Ht41u4zV35J5FiDCaXDN1xo06nQ53X/8njmSJqxHhqIsPBa2iOKbPuTGFG/toU7ibxb9W/wwKVInUUrOuvVpylXw17dLHPYZHFbX0crzjqYvbJy0GhG2n6G/Fyc0JxCOeIsixaQM8Pyz4bhbOpN4Ow5KcMa2o3mRZppOwjE4oDKhozBY0t79EqPsUJa9sG7qbL6rAdBpsRNA5Cz2A3vJUt5iA0F6VCsta/dUBesjNDJXaS6QcJyRvIDwy4FTrx6OsYochQGMrKMoHV0b+TNVQ4Pt9Z+eJv2BnEA03eQYG3Thn0H485mtzcHiS/5KEwttT0NQ== root@slave
  60. EOF
  61. sed -i '/^PasswordAuthentication/c PasswordAuthentication no' /etc/ssh/sshd_config
  62. systemctl restart sshd
  63. systemctl enable sshd
  64. systemctl restart salt-minion
  65. systemctl enable salt-minion
  66. %end

原理:

 

 

  1. 1)客户机(BIOS设置成为网络启动)通过支持PXE的网卡向网络中发送请求DHCP信息的广播请求IP地址
  2. 2dhcp服务器分配IP地址,和下一个服务器地址(next-server),即tftp服务器和启动文件的位置
  3. 3)客户机向tftp服务器请求下载启动所需文件文件,包括:启动文件pxelinux.0、启动菜单文件default、驱动文件initrd.img和内核文件vmlinuz
  4. 4)下载成功后,客户机读取default文件,获得自应答文件ks.cfg的位置。自应答文件包含了系统安装过程中需要手动设置的语言、密码、网络参数等相关的配置信息
  5. 5)客户机向ks.cfg文件所在的服务器请求下载ks.cfg文件
  6. 6)客户机读取了ks.cfg文件后,根据其中的配置信息找到所需软件包的位置(即YUM源),下载安装过程所需的软件包
  7. 7)下载成功后,客户机开始自动安装操作系统

DHCP服务

 

 

——给客户端分配IP地址,定位引导程序,即pxelinux.0文件,(必需)

 

 

TP服务

 

 

——存放系统安装所需要的引导文件pxelinux.0文件(必需)

 

 

——存放default文件 :设置默认安装的操作系统

 

 

——存放initrd.img (驱动文件)和vmlinuz(内核文件)

posted @ 2021-03-16 10:30  zhangshan  阅读(217)  评论(0编辑  收藏  举报