ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

pxe

2021-03-16 10:34:38  阅读:200  来源: 互联网

标签:ftp -- cfg yum var salt 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. (2)dhcp服务器分配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(内核文件)

标签:ftp,--,cfg,yum,var,salt,pxe
来源: https://www.cnblogs.com/zhangshan-log/p/14542064.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有