• 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(内核文件)

  • 相关阅读:
    vmware磁盘空间扩展
    Winrar发现损坏的压缩文件头
    java ASM动态生成类
    使用ffmpeg将任意格式视频转MP4格式
    mongodb导入csv结构化数据
    Vmware黑屏解决方法
    mysql命令行导入结构化数据
    mysql导入慢解决方法
    CategoryPanelGroup动态生成节点
    delphi XE7 判断手机返回键
  • 原文地址:https://www.cnblogs.com/zhangshan-log/p/14542064.html
Copyright © 2020-2023  润新知