“使用PXE工具批量部署服务器”的版本间的差异
来自CloudWiki
(创建页面,内容为“==母机安装== PXE 母机:10.1.0.10 操作系统: centos6.5 ===上传文件=== 将cento6,7 和pxe.sh的文件上传系统 service iptables stop setenforce…”) |
|||
第34行: | 第34行: | ||
==批量安装系统== | ==批量安装系统== | ||
子机服务器双网卡,开机按F12 | 子机服务器双网卡,开机按F12 | ||
+ | |||
+ | <nowiki>#!/bin/bash | ||
+ | #pxe system auto install scripts | ||
+ | #by xiandian | ||
+ | #---------------- env config ------------ | ||
+ | |||
+ | |||
+ | |||
+ | |||
+ | HOSTNAME=pxe | ||
+ | Interface_Name=eth0 | ||
+ | |||
+ | PXENET=10.1.0.0 | ||
+ | PXENET_START=10.1.0.100 | ||
+ | PXENET_END=10.1.0.250 | ||
+ | |||
+ | CENTOS6_Root_Part=200000 | ||
+ | CENTOS6_Custom_part1=10000 | ||
+ | CENTOS6_Link_NAME=eth0 | ||
+ | |||
+ | # Int_1_Name=enp8s0 | ||
+ | # Int_2_Name=enp9s0 | ||
+ | CENTOS7_Root_Part=15360 | ||
+ | CENTOS7_Root_Part_Compute=1000000 | ||
+ | CENTOS7_Custom_part1=100000 | ||
+ | CENTOS7_Custom_part2=100000 | ||
+ | # CENTOS7_Link_NAME=enp8s0 | ||
+ | |||
+ | |||
+ | |||
+ | |||
+ | ################################################################################ | ||
+ | ################################################################################ | ||
+ | #--------------------------------------------------------------------------------------------------- | ||
+ | #----------------------------------------------------------------------------- | ||
+ | IP=`ifconfig $Interface_Name |grep Bcast | sed 's/:/ /g'` | ||
+ | MY_IP=`echo $IP |awk -F\ '{print $3}'` | ||
+ | NETMASK=`echo $IP |awk -F\ '{print $7}'` | ||
+ | hostname $HOSTNAME | ||
+ | sed -i "s/HOSTNAME=.*/HOSTNAME=$HOSTNAME/g" /etc/sysconfig/network | ||
+ | #------------------------------------------------------------------------------ | ||
+ | system_version=`cat /proc/version |awk '{print $3}' |awk -F. '{print $4$5}'` | ||
+ | if [ $system_version != 'el6x86_64' ];then | ||
+ | echo -e "\033[31m ERROR\nPlease ensure that the operating system for Centos6.5!\033[0m" | ||
+ | exit 1 | ||
+ | fi | ||
+ | |||
+ | install_pxe() | ||
+ | { | ||
+ | rpm -qa |grep system-config-kickstart | ||
+ | if [ 0 -eq $? ]; then | ||
+ | echo -e "\033[31mPxe is already installed\033[0m" | ||
+ | exit 1 | ||
+ | fi | ||
+ | Find_CENTOS7_ISO=$(find / -name CentOS-7-x86_64-DVD-1511.iso) | ||
+ | if [ ! -f $Find_CENTOS7_ISO ] ; then | ||
+ | echo -e "\033[31mPlease confirm centos7 iso is READY!\033[0m" | ||
+ | exit 1 | ||
+ | else | ||
+ | mkdir -p /var/www/html/centos7 | ||
+ | mount -o loop $Find_CENTOS7_ISO /var/www/html/centos7 | ||
+ | sed -i '/centos7/d' /etc/fstab | ||
+ | echo "$Find_CENTOS7_ISO /var/www/html/centos7 iso9660 defaults,ro,loop 0 0" >> /etc/fstab | ||
+ | fi | ||
+ | Find_CENTOS6_ISO=$(find / -name CentOS-6.5-x86_64-bin.iso) | ||
+ | if [ ! -f $Find_CENTOS6_ISO ] ; then | ||
+ | echo -e "\033[31mPlease confirm iso is READY \033[0m" | ||
+ | exit 1 | ||
+ | else | ||
+ | mkdir -p /var/www/html/centos6 | ||
+ | mount -o loop $Find_CENTOS6_ISO /var/www/html/centos6 | ||
+ | sed -i '/centos6/d' /etc/fstab | ||
+ | echo "$Find_CENTOS6_ISO /var/www/html/centos6 iso9660 defaults,ro,loop 0 0" >> /etc/fstab | ||
+ | mv /etc/yum.repos.d /etc/yum.repos.d.`date +%m%d%H%M` | ||
+ | mkdir -p /etc/yum.repos.d | ||
+ | cat >/etc/yum.repos.d/local.repo <<- EOF | ||
+ | [centos] | ||
+ | baseurl=file:///var/www/html/centos6 | ||
+ | gpgcheck=0 | ||
+ | enabled=1 | ||
+ | name=centos | ||
+ | EOF | ||
+ | yum clean all | ||
+ | fi | ||
+ | service iptables stop | ||
+ | chkconfig iptables off | ||
+ | echo "$MY_IP $HOSTNAME " >> /etc/hosts | ||
+ | |||
+ | |||
+ | yum install -y httpd tftp-server wget syslinux dhcp | ||
+ | if [ 0 -ne $? ]; then | ||
+ | echo -e "\033[31m Please confirm yum \033[0m" | ||
+ | exit 0 | ||
+ | else | ||
+ | echo -e "\033[31m YUM IS READY \033[0m" | ||
+ | fi | ||
+ | sed -i 's/Listen 80/Listen 8888/g' /etc/httpd/conf/httpd.conf | ||
+ | |||
+ | cat > /etc/dhcp/dhcpd.conf <<- EOF | ||
+ | default-lease-time 600; | ||
+ | max-lease-time 7200; | ||
+ | log-facility local7; | ||
+ | subnet $PXENET netmask $NETMASK { | ||
+ | range $PXENET_START $PXENET_END; | ||
+ | option routers $MY_IP; | ||
+ | next-server $MY_IP; | ||
+ | filename "pxelinux.0"; | ||
+ | } | ||
+ | EOF | ||
+ | service dhcpd restart | ||
+ | chkconfig dhcpd on | ||
+ | service iptables stop | ||
+ | chkconfig iptables off | ||
+ | sed -i 's/SELINUX=.*/SELINUX=disabled/g' /etc/selinux/config | ||
+ | sed -i 's/disable.*/disable = no/g' /etc/xinetd.d/tftp | ||
+ | |||
+ | mkdir -p /var/lib/tftpboot/{centos6,centos7} | ||
+ | cp /usr/share/syslinux/pxelinux.0 /var/lib/tftpboot/ | ||
+ | mkdir /var/lib/tftpboot/pxelinux.cfg | ||
+ | cp /var/www/html/centos6/isolinux/isolinux.cfg /var/lib/tftpboot/pxelinux.cfg/default | ||
+ | |||
+ | #------------------------centos6------------------------------------------------------ | ||
+ | \cp -p /var/www/html/centos6/isolinux/* /var/lib/tftpboot/centos6/ | ||
+ | \cp -p /var/www/html/centos6/images/pxeboot/* /var/lib/tftpboot/centos6/ | ||
+ | |||
+ | |||
+ | #-------------------------centos7----------------------------------------- | ||
+ | \cp -p /var/www/html/centos7/images/pxeboot/* /var/lib/tftpboot/centos7/ | ||
+ | \cp -p /var/www/html/centos7/isolinux/* /var/lib/tftpboot/centos7/ | ||
+ | rm -rf /etc/httpd/conf.d/welcome.conf | ||
+ | |||
+ | cat > /var/lib/tftpboot/pxelinux.cfg/default <<- EOF | ||
+ | default centos6/vesamenu.c32 | ||
+ | timeout 50 | ||
+ | display centos6/boot.msg | ||
+ | menu background centos6/splash.jpg | ||
+ | menu title http://www.1daoyun.com! | ||
+ | menu color border 0 #ffffffff #00000000 | ||
+ | menu color sel 7 #ffffffff #ff000000 | ||
+ | menu color title 0 #ffffffff #00000000 | ||
+ | menu color tabmsg 0 #ffffffff #00000000 | ||
+ | menu color unsel 0 #ffffffff #00000000 | ||
+ | menu color hotsel 0 #ff000000 #ffffffff | ||
+ | menu color hotkey 7 #ffffffff #ff000000 | ||
+ | menu color scrollbar 0 #ffffffff #00000000 | ||
+ | label centos7 | ||
+ | menu label ^Install CentOS 7 CONTROLLER | ||
+ | menu default | ||
+ | kernel centos7/vmlinuz | ||
+ | append initrd=centos7/initrd.img ks=http://$MY_IP:8888/centos7_ks_controller.cfg | ||
+ | label centos7 | ||
+ | menu label ^Install CentOS 7 COMPUTE | ||
+ | kernel centos7/vmlinuz | ||
+ | append initrd=centos7/initrd.img ks=http://$MY_IP:8888/centos7_ks_compute.cfg | ||
+ | label centos6 | ||
+ | menu label ^Install CentOS 6 | ||
+ | kernel centos6/vmlinuz | ||
+ | append initrd=centos6/initrd.img ks=http://$MY_IP:8888/centos6_ks.cfg | ||
+ | EOF | ||
+ | cat > /var/www/html/centos6_ks.cfg <<- EOF | ||
+ | #platform=x86, AMD64, or Intel EM64T | ||
+ | #version=DEVEL | ||
+ | # Firewall configuration | ||
+ | firewall --disabled | ||
+ | # Install OS instead of upgrade | ||
+ | install | ||
+ | # Use network installation | ||
+ | url --url=http://$MY_IP:8888/centos6 | ||
+ | # Root password | ||
+ | rootpw 000000 | ||
+ | #rootpw --iscrypted $1$chengran$TeFFyqRQPsPrXHmzhQxPm/ | ||
+ | # System authorization information | ||
+ | auth --useshadow --enablemd5 | ||
+ | # Use graphical install | ||
+ | graphical | ||
+ | firstboot --disable | ||
+ | # System keyboard | ||
+ | keyboard us | ||
+ | # System language | ||
+ | lang en_US | ||
+ | # SELinux configuration | ||
+ | selinux --disabled | ||
+ | # Installation logging level | ||
+ | logging --level=info | ||
+ | # Reboot after installation | ||
+ | #reboot | ||
+ | # System timezone | ||
+ | timezone Asia/Shanghai | ||
+ | # Network information | ||
+ | network --bootproto=dhcp --device=eth0 --onboot=on | ||
+ | # System bootloader configuration | ||
+ | key --skip | ||
+ | bootloader --append="rhgb quiet" --location=mbr | ||
+ | # Clear the Master Boot Record | ||
+ | zerombr | ||
+ | # Partition clearing information | ||
+ | clearpart --all --initlabel | ||
+ | # Disk partitioning information | ||
+ | part /boot --fstype="ext4" --size=200 | ||
+ | part swap --fstype="swap" --size=16000 | ||
+ | part / --fstype="ext4" --size=$CENTOS6_Root_Part | ||
+ | %pre | ||
+ | # set welcom info | ||
+ | echo "Welcome " | ||
+ | %end | ||
+ | %post | ||
+ | echo "Welcome to Xiandian" >> /etc/motd | ||
+ | %end | ||
+ | |||
+ | %packages --nobase | ||
+ | openssh-server | ||
+ | openssh-clients | ||
+ | wget | ||
+ | vim | ||
+ | %end | ||
+ | EOF | ||
+ | |||
+ | service httpd restart | ||
+ | service dhcpd restart | ||
+ | service xinetd restart | ||
+ | |||
+ | chkconfig httpd on | ||
+ | chkconfig xinetd on | ||
+ | chkconfig dhcpd on | ||
+ | |||
+ | setup | ||
+ | |||
+ | } | ||
+ | |||
+ | |||
+ | |||
+ | config_controller() | ||
+ | { | ||
+ | cat > /var/www/html/centos7_ks_controller.cfg <<- EOF | ||
+ | #platform=x86, AMD64, or Intel EM64T | ||
+ | #version=DEVEL | ||
+ | # Firewall configuration | ||
+ | firewall --enabled | ||
+ | # Install OS instead of upgrade | ||
+ | install | ||
+ | # Use network installation | ||
+ | url --url=http://$MY_IP:8888/centos7/ | ||
+ | # Root password | ||
+ | rootpw 000000 | ||
+ | #rootpw --iscrypted $1$chengran$TeFFyqRQPsPrXHmzhQxPm/ | ||
+ | # System authorization information | ||
+ | auth --useshadow --enablemd5 | ||
+ | # Use graphical install | ||
+ | graphical | ||
+ | firstboot --enabled | ||
+ | # System keyboard | ||
+ | keyboard us | ||
+ | # System language | ||
+ | lang en_US | ||
+ | # SELinux configuration | ||
+ | selinux --enforcing | ||
+ | # Installation logging level | ||
+ | logging --level=info | ||
+ | # Reboot after installation | ||
+ | #reboot | ||
+ | # System timezone | ||
+ | timezone Asia/Shanghai | ||
+ | # Network information | ||
+ | network --bootproto=dhcp --device=$Interface_Name --onboot=yes --noipv6 | ||
+ | # System bootloader configuration | ||
+ | bootloader --append="rhgb quiet" --location=mbr | ||
+ | |||
+ | # Partition clearing information | ||
+ | clearpart --all --initlabel | ||
+ | # Disk partitioning information | ||
+ | part /boot --fstype="ext4" --size=200 | ||
+ | part swap --fstype="swap" --size=1000 | ||
+ | part / --fstype="ext4" --size=$CENTOS7_Root_Part | ||
+ | %pre | ||
+ | # set welcom info | ||
+ | echo "Welcome " | ||
+ | %end | ||
+ | %post | ||
+ | echo "" >> /etc/motd | ||
+ | echo "Welcome to Xiandian" >> /etc/motd | ||
+ | echo "This is controller node" >> /etc/motd | ||
+ | echo "" >> /etc/motd | ||
+ | |||
+ | Int_1_Name=\`ip a|grep BROADCAST|awk '{print \$2}'|awk -F ':' '{print \$1}' |sed -n '1p'\` | ||
+ | Int_2_Name=\`ip a|grep BROADCAST|awk '{print \$2}'|awk -F ':' '{print \$1}' |sed -n '2p'\` | ||
+ | |||
+ | rm -rf /etc/sysconfig/network-scripts/ifcfg-\$Int_1_Name | ||
+ | rm -rf /etc/sysconfig/network-scripts/ifcfg-\$Int_2_Name | ||
+ | |||
+ | echo "DEVICE=\$Int_1_Name" >>/etc/sysconfig/network-scripts/ifcfg-\$Int_1_Name | ||
+ | echo "TYPE=Ethernet" >>/etc/sysconfig/network-scripts/ifcfg-\$Int_1_Name | ||
+ | echo "ONBOOT=yes" >>/etc/sysconfig/network-scripts/ifcfg-\$Int_1_Name | ||
+ | echo "NM_CONTROLLED=no" >>/etc/sysconfig/network-scripts/ifcfg-\$Int_1_Name | ||
+ | echo "BOOTPROTO=static" >>/etc/sysconfig/network-scripts/ifcfg-\$Int_1_Name | ||
+ | echo "IPADDR=192.168.100.10" >>/etc/sysconfig/network-scripts/ifcfg-\$Int_1_Name | ||
+ | echo "PREFIX=24" >>/etc/sysconfig/network-scripts/ifcfg-\$Int_1_Name | ||
+ | echo "GATEWAY=192.168.100.1" >>/etc/sysconfig/network-scripts/ifcfg-\$Int_1_Name | ||
+ | |||
+ | |||
+ | echo "DEVICE=\$Int_2_Name" >>/etc/sysconfig/network-scripts/ifcfg-\$Int_2_Name | ||
+ | echo "TYPE=Ethernet" >>/etc/sysconfig/network-scripts/ifcfg-\$Int_2_Name | ||
+ | echo "ONBOOT=yes" >>/etc/sysconfig/network-scripts/ifcfg-\$Int_2_Name | ||
+ | echo "NM_CONTROLLED=no" >>/etc/sysconfig/network-scripts/ifcfg-\$Int_2_Name | ||
+ | echo "BOOTPROTO=static" >>/etc/sysconfig/network-scripts/ifcfg-\$Int_2_Name | ||
+ | echo "IPADDR=192.168.200.10" >>/etc/sysconfig/network-scripts/ifcfg-\$Int_2_Name | ||
+ | echo "PREFIX=24" >>/etc/sysconfig/network-scripts/ifcfg-\$Int_2_Name | ||
+ | |||
+ | sed -i -e '/testdisk1/d' -e '/testdisk2/d' /etc/fstab | ||
+ | rm -rf /root/*.ks | ||
+ | |||
+ | %end | ||
+ | |||
+ | %packages --nobase | ||
+ | openssh-server | ||
+ | openssh-clients | ||
+ | wget | ||
+ | %end | ||
+ | EOF | ||
+ | #鍚姩鏈嶅姟鍣?iptables -F | ||
+ | |||
+ | |||
+ | |||
+ | |||
+ | service httpd restart | ||
+ | service dhcpd restart | ||
+ | service xinetd restart | ||
+ | |||
+ | chkconfig httpd on | ||
+ | chkconfig xinetd on | ||
+ | chkconfig dhcpd on | ||
+ | |||
+ | } | ||
+ | |||
+ | config_compute() | ||
+ | { | ||
+ | cat > /var/www/html/centos7_ks_compute.cfg <<- EOF | ||
+ | #platform=x86, AMD64, or Intel EM64T | ||
+ | #version=DEVEL | ||
+ | # Firewall configuration | ||
+ | firewall --enabled | ||
+ | # Install OS instead of upgrade | ||
+ | install | ||
+ | # Use network installation | ||
+ | url --url=http://$MY_IP:8888/centos7 | ||
+ | # Root password | ||
+ | rootpw 000000 | ||
+ | #rootpw --iscrypted $1$chengran$TeFFyqRQPsPrXHmzhQxPm/ | ||
+ | # System authorization information | ||
+ | auth --useshadow --enablemd5 | ||
+ | # Use graphical install | ||
+ | graphical | ||
+ | firstboot --enabled | ||
+ | # System keyboard | ||
+ | keyboard us | ||
+ | # System language | ||
+ | lang en_US | ||
+ | # SELinux configuration | ||
+ | selinux --enforcing | ||
+ | # Installation logging level | ||
+ | logging --level=info | ||
+ | # Reboot after installation | ||
+ | #reboot | ||
+ | # System timezone | ||
+ | timezone Asia/Shanghai | ||
+ | # Network information | ||
+ | network --bootproto=dhcp --device=$Interface_Name --onboot=yes --noipv6 | ||
+ | # System bootloader configuration | ||
+ | bootloader --append="rhgb quiet" --location=mbr | ||
+ | |||
+ | # Partition clearing information | ||
+ | clearpart --all --initlabel | ||
+ | # Disk partitioning information | ||
+ | part /boot --fstype="ext4" --size=200 | ||
+ | part "BIOS Boot" --fstype="BIOS Boot" --size=1 | ||
+ | part swap --fstype="swap" --size=16000 | ||
+ | part / --fstype="ext4" --size=$CENTOS7_Root_Part_Compute | ||
+ | part /testdisk1 --fstype="ext4" --size=$CENTOS7_Custom_part1 | ||
+ | part /testdisk2 --fstype="ext4" --size=$CENTOS7_Custom_part2 | ||
+ | %pre | ||
+ | # set welcom info | ||
+ | echo "Welcome " | ||
+ | %end | ||
+ | %post | ||
+ | echo "" >> /etc/motd | ||
+ | echo "Welcome to Xiandian" >> /etc/motd | ||
+ | echo "This is compute node" >> /etc/motd | ||
+ | echo "" >> /etc/motd | ||
+ | |||
+ | Int_1_Name=\`ip a|grep BROADCAST|awk '{print \$2}'|awk -F ':' '{print $1}' |sed -n '1p'\` | ||
+ | Int_2_Name=\`ip a|grep BROADCAST|awk '{print \$2}'|awk -F ':' '{print $1}' |sed -n '2p'\` | ||
+ | |||
+ | rm -rf /etc/sysconfig/network-scripts/ifcfg-\$Int_1_Name | ||
+ | rm -rf /etc/sysconfig/network-scripts/ifcfg-\$Int_2_Name | ||
+ | |||
+ | echo "DEVICE=\$Int_1_Name" >>/etc/sysconfig/network-scripts/ifcfg-\$Int_1_Name | ||
+ | echo "TYPE=Ethernet" >>/etc/sysconfig/network-scripts/ifcfg-\$Int_1_Name | ||
+ | echo "ONBOOT=yes" >>/etc/sysconfig/network-scripts/ifcfg-\$Int_1_Name | ||
+ | echo "NM_CONTROLLED=no" >>/etc/sysconfig/network-scripts/ifcfg-\$Int_1_Name | ||
+ | echo "BOOTPROTO=static" >>/etc/sysconfig/network-scripts/ifcfg-\$Int_1_Name | ||
+ | echo "IPADDR=192.168.100.20" >>/etc/sysconfig/network-scripts/ifcfg-\$Int_1_Name | ||
+ | echo "PREFIX=24" >>/etc/sysconfig/network-scripts/ifcfg-\$Int_1_Name | ||
+ | echo "GATEWAY=192.168.100.1" >>/etc/sysconfig/network-scripts/ifcfg-\$Int_1_Name | ||
+ | |||
+ | |||
+ | echo "DEVICE=\$Int_2_Name" >>/etc/sysconfig/network-scripts/ifcfg-\$Int_2_Name | ||
+ | echo "TYPE=Ethernet" >>/etc/sysconfig/network-scripts/ifcfg-\$Int_2_Name | ||
+ | echo "ONBOOT=yes" >>/etc/sysconfig/network-scripts/ifcfg-\$Int_2_Name | ||
+ | echo "NM_CONTROLLED=no" >>/etc/sysconfig/network-scripts/ifcfg-\$Int_2_Name | ||
+ | echo "BOOTPROTO=static" >>/etc/sysconfig/network-scripts/ifcfg-\$Int_2_Name | ||
+ | echo "IPADDR=192.168.200.20" >>/etc/sysconfig/network-scripts/ifcfg-\$Int_2_Name | ||
+ | echo "PREFIX=24" >>/etc/sysconfig/network-scripts/ifcfg-\$Int_2_Name | ||
+ | |||
+ | sed -i -e '/testdisk1/d' -e '/testdisk2/d' /etc/fstab | ||
+ | rm -rf /root/*.ks | ||
+ | |||
+ | %end | ||
+ | |||
+ | %packages --nobase | ||
+ | openssh-server | ||
+ | openssh-clients | ||
+ | wget | ||
+ | %end | ||
+ | EOF | ||
+ | #鍚姩鏈嶅姟鍣?iptables -F | ||
+ | |||
+ | |||
+ | service httpd restart | ||
+ | service dhcpd restart | ||
+ | service xinetd restart | ||
+ | |||
+ | chkconfig httpd on | ||
+ | chkconfig xinetd on | ||
+ | chkconfig dhcpd on | ||
+ | |||
+ | } | ||
+ | |||
+ | |||
+ | config_all_node() | ||
+ | { | ||
+ | ##config_controller | ||
+ | cat > /var/www/html/centos7_ks_controller.cfg <<- EOF | ||
+ | #platform=x86, AMD64, or Intel EM64T | ||
+ | #version=DEVEL | ||
+ | # Firewall configuration | ||
+ | firewall --enabled | ||
+ | # Install OS instead of upgrade | ||
+ | install | ||
+ | # Use network installation | ||
+ | url --url=http://$MY_IP:8888/centos7/ | ||
+ | # Root password | ||
+ | rootpw 000000 | ||
+ | #rootpw --iscrypted $1$chengran$TeFFyqRQPsPrXHmzhQxPm/ | ||
+ | # System authorization information | ||
+ | auth --useshadow --enablemd5 | ||
+ | # Use graphical install | ||
+ | graphical | ||
+ | firstboot --enabled | ||
+ | # System keyboard | ||
+ | keyboard us | ||
+ | # System language | ||
+ | lang en_US | ||
+ | # SELinux configuration | ||
+ | selinux --enforcing | ||
+ | # Installation logging level | ||
+ | logging --level=info | ||
+ | # Reboot after installation | ||
+ | #reboot | ||
+ | # System timezone | ||
+ | timezone Asia/Shanghai | ||
+ | # Network information | ||
+ | network --bootproto=dhcp --device=$Interface_Name --onboot=yes --noipv6 | ||
+ | # System bootloader configuration | ||
+ | bootloader --append="rhgb quiet" --location=mbr | ||
+ | |||
+ | # Partition clearing information | ||
+ | clearpart --all --initlabel | ||
+ | # Disk partitioning information | ||
+ | part /boot --fstype="ext4" --size=200 | ||
+ | part swap --fstype="swap" --size=1600 | ||
+ | part / --fstype="ext4" --size=$CENTOS7_Root_Part | ||
+ | %pre | ||
+ | # set welcom info | ||
+ | echo "Welcome " | ||
+ | %end | ||
+ | %post | ||
+ | echo "" >> /etc/motd | ||
+ | echo "Welcome to Xiandian" >> /etc/motd | ||
+ | echo "This is controller node" >> /etc/motd | ||
+ | echo "" >> /etc/motd | ||
+ | |||
+ | Int_1_Name=\`ip a|grep BROADCAST|awk '{print \$2}'|awk -F ':' '{print \$1}' |sed -n '1p'\` | ||
+ | Int_2_Name=\`ip a|grep BROADCAST|awk '{print \$2}'|awk -F ':' '{print \$1}' |sed -n '2p'\` | ||
+ | |||
+ | rm -rf /etc/sysconfig/network-scripts/ifcfg-\$Int_1_Name | ||
+ | rm -rf /etc/sysconfig/network-scripts/ifcfg-\$Int_2_Name | ||
+ | |||
+ | echo "DEVICE=\$Int_1_Name" >>/etc/sysconfig/network-scripts/ifcfg-\$Int_1_Name | ||
+ | echo "TYPE=Ethernet" >>/etc/sysconfig/network-scripts/ifcfg-\$Int_1_Name | ||
+ | echo "ONBOOT=yes" >>/etc/sysconfig/network-scripts/ifcfg-\$Int_1_Name | ||
+ | echo "NM_CONTROLLED=no" >>/etc/sysconfig/network-scripts/ifcfg-\$Int_1_Name | ||
+ | echo "BOOTPROTO=static" >>/etc/sysconfig/network-scripts/ifcfg-\$Int_1_Name | ||
+ | echo "IPADDR=192.168.100.10" >>/etc/sysconfig/network-scripts/ifcfg-\$Int_1_Name | ||
+ | echo "PREFIX=24" >>/etc/sysconfig/network-scripts/ifcfg-\$Int_1_Name | ||
+ | echo "GATEWAY=192.168.100.1" >>/etc/sysconfig/network-scripts/ifcfg-\$Int_1_Name | ||
+ | |||
+ | |||
+ | echo "DEVICE=\$Int_2_Name" >>/etc/sysconfig/network-scripts/ifcfg-\$Int_2_Name | ||
+ | echo "TYPE=Ethernet" >>/etc/sysconfig/network-scripts/ifcfg-\$Int_2_Name | ||
+ | echo "ONBOOT=yes" >>/etc/sysconfig/network-scripts/ifcfg-\$Int_2_Name | ||
+ | echo "NM_CONTROLLED=no" >>/etc/sysconfig/network-scripts/ifcfg-\$Int_2_Name | ||
+ | echo "BOOTPROTO=static" >>/etc/sysconfig/network-scripts/ifcfg-\$Int_2_Name | ||
+ | echo "IPADDR=192.168.200.10" >>/etc/sysconfig/network-scripts/ifcfg-\$Int_2_Name | ||
+ | echo "PREFIX=24" >>/etc/sysconfig/network-scripts/ifcfg-\$Int_2_Name | ||
+ | |||
+ | |||
+ | #Net_1_Name=\`ip a|grep BROADCAST|awk '{print \$2}'|awk -F ':' '{print \$1}' |sed -n '1p'\` | ||
+ | |||
+ | if [[ ! "\$Int_1_Name" == "enp7s0" ]]; then | ||
+ | #statements | ||
+ | NetworkName1=enp7s0 | ||
+ | NetworkName2=enp8s0 | ||
+ | |||
+ | # Net_1_Name=enp8s0 | ||
+ | # Net_2_Name=enp9s0 | ||
+ | |||
+ | sed -i 's/rhgb quiet/net.ifnames=0 biosdevname=0 &/' /etc/default/grub | ||
+ | grub2-mkconfig -o /boot/grub2/grub.cfg | ||
+ | |||
+ | MacAddress1=\`ip a |grep link/ether|awk '{print \$2}'|sed -n '1p'\` | ||
+ | MacAddress2=\`ip a |grep link/ether|awk '{print \$2}'|sed -n '2p'\` | ||
+ | |||
+ | cat > /etc/udev/rules.d/70-persistent-net.rules <<- EEF | ||
+ | |||
+ | SUBSYSTEM=="net", ACTION=="add", DRIVERS=="?*", ATTR{address}=="\$MacAddress1", ATTR{type}=="1", KERNEL=="eth*", NAME="\$NetworkName1" | ||
+ | SUBSYSTEM=="net", ACTION=="add", DRIVERS=="?*", ATTR{address}=="\$MacAddress2", ATTR{type}=="1", KERNEL=="eth*", NAME="\$NetworkName2" | ||
+ | |||
+ | EEF | ||
+ | |||
+ | sed -i "s/\$Int_1_Name/\$NetworkName1/g" /etc/sysconfig/network-scripts/ifcfg-\$Int_1_Name | ||
+ | sed -i "s/\$Int_2_Name/\$NetworkName2/g" /etc/sysconfig/network-scripts/ifcfg-\$Int_2_Name | ||
+ | |||
+ | mv /etc/sysconfig/network-scripts/ifcfg-\$Int_1_Name /etc/sysconfig/network-scripts/ifcfg-\$NetworkName1 | ||
+ | mv /etc/sysconfig/network-scripts/ifcfg-\$Int_2_Name /etc/sysconfig/network-scripts/ifcfg-\$NetworkName2 | ||
+ | fi | ||
+ | |||
+ | sed -i -e '/testdisk1/d' -e '/testdisk2/d' /etc/fstab | ||
+ | rm -rf /root/*.ks | ||
+ | |||
+ | %end | ||
+ | |||
+ | %packages --nobase | ||
+ | openssh-server | ||
+ | openssh-clients | ||
+ | wget | ||
+ | %end | ||
+ | EOF | ||
+ | |||
+ | ##--------------------------------------------------------- | ||
+ | ##config_compute | ||
+ | cat > /var/www/html/centos7_ks_compute.cfg <<- EOF | ||
+ | #platform=x86, AMD64, or Intel EM64T | ||
+ | #version=DEVEL | ||
+ | # Firewall configuration | ||
+ | firewall --enabled | ||
+ | # Install OS instead of upgrade | ||
+ | install | ||
+ | # Use network installation | ||
+ | url --url=http://$MY_IP:8888/centos7 | ||
+ | # Root password | ||
+ | rootpw 000000 | ||
+ | #rootpw --iscrypted $1$chengran$TeFFyqRQPsPrXHmzhQxPm/ | ||
+ | # System authorization information | ||
+ | auth --useshadow --enablemd5 | ||
+ | # Use graphical install | ||
+ | graphical | ||
+ | firstboot --enabled | ||
+ | # System keyboard | ||
+ | keyboard us | ||
+ | # System language | ||
+ | lang en_US | ||
+ | # SELinux configuration | ||
+ | selinux --enforcing | ||
+ | # Installation logging level | ||
+ | logging --level=info | ||
+ | # Reboot after installation | ||
+ | #reboot | ||
+ | # System timezone | ||
+ | timezone Asia/Shanghai | ||
+ | # Network information | ||
+ | network --bootproto=dhcp --device=$Interface_Name --onboot=yes --noipv6 | ||
+ | # System bootloader configuration | ||
+ | bootloader --append="rhgb quiet" --location=mbr | ||
+ | |||
+ | # Partition clearing information | ||
+ | clearpart --all --initlabel | ||
+ | # Disk partitioning information | ||
+ | part /boot --fstype="ext4" --size=200 | ||
+ | part "BIOS Boot" --fstype="BIOS Boot" --size=1 | ||
+ | part swap --fstype="swap" --size=16000 | ||
+ | part / --fstype="ext4" --size=$CENTOS7_Root_Part_Compute | ||
+ | part /testdisk1 --fstype="ext4" --size=$CENTOS7_Custom_part1 | ||
+ | part /testdisk2 --fstype="ext4" --size=$CENTOS7_Custom_part2 | ||
+ | %pre | ||
+ | # set welcom info | ||
+ | echo "Welcome " | ||
+ | %end | ||
+ | %post | ||
+ | echo "" >> /etc/motd | ||
+ | echo "Welcome to Xiandian" >> /etc/motd | ||
+ | echo "This is compute node" >> /etc/motd | ||
+ | echo "" >> /etc/motd | ||
+ | |||
+ | Int_1_Name=\`ip a|grep BROADCAST|awk '{print \$2}'|awk -F ':' '{print \$1}' |sed -n '1p'\` | ||
+ | Int_2_Name=\`ip a|grep BROADCAST|awk '{print \$2}'|awk -F ':' '{print \$1}' |sed -n '2p'\` | ||
+ | |||
+ | rm -rf /etc/sysconfig/network-scripts/ifcfg-\$Int_1_Name | ||
+ | rm -rf /etc/sysconfig/network-scripts/ifcfg-\$Int_2_Name | ||
+ | |||
+ | echo "DEVICE=\$Int_1_Name" >>/etc/sysconfig/network-scripts/ifcfg-\$Int_1_Name | ||
+ | echo "TYPE=Ethernet" >>/etc/sysconfig/network-scripts/ifcfg-\$Int_1_Name | ||
+ | echo "ONBOOT=yes" >>/etc/sysconfig/network-scripts/ifcfg-\$Int_1_Name | ||
+ | echo "NM_CONTROLLED=no" >>/etc/sysconfig/network-scripts/ifcfg-\$Int_1_Name | ||
+ | echo "BOOTPROTO=static" >>/etc/sysconfig/network-scripts/ifcfg-\$Int_1_Name | ||
+ | echo "IPADDR=192.168.100.20" >>/etc/sysconfig/network-scripts/ifcfg-\$Int_1_Name | ||
+ | echo "PREFIX=24" >>/etc/sysconfig/network-scripts/ifcfg-\$Int_1_Name | ||
+ | echo "GATEWAY=192.168.100.1" >>/etc/sysconfig/network-scripts/ifcfg-\$Int_1_Name | ||
+ | |||
+ | |||
+ | echo "DEVICE=\$Int_2_Name" >>/etc/sysconfig/network-scripts/ifcfg-\$Int_2_Name | ||
+ | echo "TYPE=Ethernet" >>/etc/sysconfig/network-scripts/ifcfg-\$Int_2_Name | ||
+ | echo "ONBOOT=yes" >>/etc/sysconfig/network-scripts/ifcfg-\$Int_2_Name | ||
+ | echo "NM_CONTROLLED=no" >>/etc/sysconfig/network-scripts/ifcfg-\$Int_2_Name | ||
+ | echo "BOOTPROTO=static" >>/etc/sysconfig/network-scripts/ifcfg-\$Int_2_Name | ||
+ | echo "IPADDR=192.168.200.20" >>/etc/sysconfig/network-scripts/ifcfg-\$Int_2_Name | ||
+ | echo "PREFIX=24" >>/etc/sysconfig/network-scripts/ifcfg-\$Int_2_Name | ||
+ | |||
+ | |||
+ | #Net_1_Name=\`ip a|grep BROADCAST|awk '{print $2}'|awk -F ':' '{print $1}' |sed -n '1p'\` | ||
+ | |||
+ | if [[ ! "\$Int_1_Name" == "enp7s0" ]]; then | ||
+ | #statements | ||
+ | NetworkName1=enp7s0 | ||
+ | NetworkName2=enp8s0 | ||
+ | |||
+ | # Net_1_Name=enp8s0 | ||
+ | # Net_2_Name=enp9s0 | ||
+ | |||
+ | sed -i 's/rhgb quiet/net.ifnames=0 biosdevname=0 &/' /etc/default/grub | ||
+ | grub2-mkconfig -o /boot/grub2/grub.cfg | ||
+ | |||
+ | MacAddress1=\`ip a |grep link/ether|awk '{print $2}'|sed -n '1p'\` | ||
+ | MacAddress2=\`ip a |grep link/ether|awk '{print $2}'|sed -n '2p'\` | ||
+ | |||
+ | cat > /etc/udev/rules.d/70-persistent-net.rules <<- EEF | ||
+ | |||
+ | SUBSYSTEM=="net", ACTION=="add", DRIVERS=="?*", ATTR{address}=="\$MacAddress1", ATTR{type}=="1", KERNEL=="eth*", NAME="\$NetworkName1" | ||
+ | SUBSYSTEM=="net", ACTION=="add", DRIVERS=="?*", ATTR{address}=="\$MacAddress2", ATTR{type}=="1", KERNEL=="eth*", NAME="\$NetworkName2" | ||
+ | |||
+ | EEF | ||
+ | |||
+ | sed -i "s/\$Int_1_Name/\$NetworkName1/g" /etc/sysconfig/network-scripts/ifcfg-\$Int_1_Name | ||
+ | sed -i "s/\$Int_2_Name/\$NetworkName2/g" /etc/sysconfig/network-scripts/ifcfg-\$Int_2_Name | ||
+ | |||
+ | mv /etc/sysconfig/network-scripts/ifcfg-\$Int_1_Name /etc/sysconfig/network-scripts/ifcfg-\$NetworkName1 | ||
+ | mv /etc/sysconfig/network-scripts/ifcfg-\$Int_2_Name /etc/sysconfig/network-scripts/ifcfg-\$NetworkName2 | ||
+ | fi | ||
+ | |||
+ | sed -i -e '/testdisk1/d' -e '/testdisk2/d' /etc/fstab | ||
+ | rm -rf /root/*.ks | ||
+ | |||
+ | %end | ||
+ | |||
+ | %packages --nobase | ||
+ | openssh-server | ||
+ | openssh-clients | ||
+ | wget | ||
+ | %end | ||
+ | EOF | ||
+ | #鍚姩鏈嶅姟鍣?iptables -F | ||
+ | |||
+ | |||
+ | service httpd restart | ||
+ | service dhcpd restart | ||
+ | service xinetd restart | ||
+ | |||
+ | chkconfig httpd on | ||
+ | chkconfig xinetd on | ||
+ | chkconfig dhcpd on | ||
+ | |||
+ | } | ||
+ | |||
+ | |||
+ | |||
+ | setup() | ||
+ | { | ||
+ | echo -e "\033[34m-------Install Info------------\033[0m" | ||
+ | echo -e "\033[35m 1: install pxe \033[0m" | ||
+ | echo -e "\033[35m 2: switch controller mode \033[0m" | ||
+ | echo -e "\033[35m 3: switch compute mode \033[0m" | ||
+ | echo -e "\033[35m 4: switch all mode \033[0m" | ||
+ | echo -e "\033[37m Please select installation services: (eg :1 / 2 / 3 )\033[0m" | ||
+ | read KEY | ||
+ | case $KEY in | ||
+ | 1) | ||
+ | install_pxe; | ||
+ | ;; | ||
+ | 2) | ||
+ | config_controller; | ||
+ | ;; | ||
+ | 3) | ||
+ | config_compute; | ||
+ | ;; | ||
+ | 4) | ||
+ | config_all_node; | ||
+ | ;; | ||
+ | *) | ||
+ | echo -e "\033[31m Choose wrong, please try again \033[0m " | ||
+ | esac | ||
+ | } | ||
+ | setup | ||
+ | </nowiki> |
2019年10月22日 (二) 11:35的最新版本
母机安装
PXE 母机:10.1.0.10
操作系统: centos6.5
上传文件
将cento6,7 和pxe.sh的文件上传系统
service iptables stop
setenforce 0
执行脚本
[root@bogon ~]# chmod +x PXE.sh
[root@bogon ~]# ./PXE.sh
-------Install Info------------ 1: install pxe 2: switch controller mode 3: switch compute mode 4: switch all mode Please select installation services: (eg :1 / 2 / 3 )
-------Install Info------------ 1: install pxe 2: switch controller mode 3: switch compute mode 4: switch all mode Please select installation services: (eg :1 / 2 / 3 )
4
批量安装系统
子机服务器双网卡,开机按F12
#!/bin/bash #pxe system auto install scripts #by xiandian #---------------- env config ------------ HOSTNAME=pxe Interface_Name=eth0 PXENET=10.1.0.0 PXENET_START=10.1.0.100 PXENET_END=10.1.0.250 CENTOS6_Root_Part=200000 CENTOS6_Custom_part1=10000 CENTOS6_Link_NAME=eth0 # Int_1_Name=enp8s0 # Int_2_Name=enp9s0 CENTOS7_Root_Part=15360 CENTOS7_Root_Part_Compute=1000000 CENTOS7_Custom_part1=100000 CENTOS7_Custom_part2=100000 # CENTOS7_Link_NAME=enp8s0 ################################################################################ ################################################################################ #--------------------------------------------------------------------------------------------------- #----------------------------------------------------------------------------- IP=`ifconfig $Interface_Name |grep Bcast | sed 's/:/ /g'` MY_IP=`echo $IP |awk -F\ '{print $3}'` NETMASK=`echo $IP |awk -F\ '{print $7}'` hostname $HOSTNAME sed -i "s/HOSTNAME=.*/HOSTNAME=$HOSTNAME/g" /etc/sysconfig/network #------------------------------------------------------------------------------ system_version=`cat /proc/version |awk '{print $3}' |awk -F. '{print $4$5}'` if [ $system_version != 'el6x86_64' ];then echo -e "\033[31m ERROR\nPlease ensure that the operating system for Centos6.5!\033[0m" exit 1 fi install_pxe() { rpm -qa |grep system-config-kickstart if [ 0 -eq $? ]; then echo -e "\033[31mPxe is already installed\033[0m" exit 1 fi Find_CENTOS7_ISO=$(find / -name CentOS-7-x86_64-DVD-1511.iso) if [ ! -f $Find_CENTOS7_ISO ] ; then echo -e "\033[31mPlease confirm centos7 iso is READY!\033[0m" exit 1 else mkdir -p /var/www/html/centos7 mount -o loop $Find_CENTOS7_ISO /var/www/html/centos7 sed -i '/centos7/d' /etc/fstab echo "$Find_CENTOS7_ISO /var/www/html/centos7 iso9660 defaults,ro,loop 0 0" >> /etc/fstab fi Find_CENTOS6_ISO=$(find / -name CentOS-6.5-x86_64-bin.iso) if [ ! -f $Find_CENTOS6_ISO ] ; then echo -e "\033[31mPlease confirm iso is READY \033[0m" exit 1 else mkdir -p /var/www/html/centos6 mount -o loop $Find_CENTOS6_ISO /var/www/html/centos6 sed -i '/centos6/d' /etc/fstab echo "$Find_CENTOS6_ISO /var/www/html/centos6 iso9660 defaults,ro,loop 0 0" >> /etc/fstab mv /etc/yum.repos.d /etc/yum.repos.d.`date +%m%d%H%M` mkdir -p /etc/yum.repos.d cat >/etc/yum.repos.d/local.repo <<- EOF [centos] baseurl=file:///var/www/html/centos6 gpgcheck=0 enabled=1 name=centos EOF yum clean all fi service iptables stop chkconfig iptables off echo "$MY_IP $HOSTNAME " >> /etc/hosts yum install -y httpd tftp-server wget syslinux dhcp if [ 0 -ne $? ]; then echo -e "\033[31m Please confirm yum \033[0m" exit 0 else echo -e "\033[31m YUM IS READY \033[0m" fi sed -i 's/Listen 80/Listen 8888/g' /etc/httpd/conf/httpd.conf cat > /etc/dhcp/dhcpd.conf <<- EOF default-lease-time 600; max-lease-time 7200; log-facility local7; subnet $PXENET netmask $NETMASK { range $PXENET_START $PXENET_END; option routers $MY_IP; next-server $MY_IP; filename "pxelinux.0"; } EOF service dhcpd restart chkconfig dhcpd on service iptables stop chkconfig iptables off sed -i 's/SELINUX=.*/SELINUX=disabled/g' /etc/selinux/config sed -i 's/disable.*/disable = no/g' /etc/xinetd.d/tftp mkdir -p /var/lib/tftpboot/{centos6,centos7} cp /usr/share/syslinux/pxelinux.0 /var/lib/tftpboot/ mkdir /var/lib/tftpboot/pxelinux.cfg cp /var/www/html/centos6/isolinux/isolinux.cfg /var/lib/tftpboot/pxelinux.cfg/default #------------------------centos6------------------------------------------------------ \cp -p /var/www/html/centos6/isolinux/* /var/lib/tftpboot/centos6/ \cp -p /var/www/html/centos6/images/pxeboot/* /var/lib/tftpboot/centos6/ #-------------------------centos7----------------------------------------- \cp -p /var/www/html/centos7/images/pxeboot/* /var/lib/tftpboot/centos7/ \cp -p /var/www/html/centos7/isolinux/* /var/lib/tftpboot/centos7/ rm -rf /etc/httpd/conf.d/welcome.conf cat > /var/lib/tftpboot/pxelinux.cfg/default <<- EOF default centos6/vesamenu.c32 timeout 50 display centos6/boot.msg menu background centos6/splash.jpg menu title http://www.1daoyun.com! menu color border 0 #ffffffff #00000000 menu color sel 7 #ffffffff #ff000000 menu color title 0 #ffffffff #00000000 menu color tabmsg 0 #ffffffff #00000000 menu color unsel 0 #ffffffff #00000000 menu color hotsel 0 #ff000000 #ffffffff menu color hotkey 7 #ffffffff #ff000000 menu color scrollbar 0 #ffffffff #00000000 label centos7 menu label ^Install CentOS 7 CONTROLLER menu default kernel centos7/vmlinuz append initrd=centos7/initrd.img ks=http://$MY_IP:8888/centos7_ks_controller.cfg label centos7 menu label ^Install CentOS 7 COMPUTE kernel centos7/vmlinuz append initrd=centos7/initrd.img ks=http://$MY_IP:8888/centos7_ks_compute.cfg label centos6 menu label ^Install CentOS 6 kernel centos6/vmlinuz append initrd=centos6/initrd.img ks=http://$MY_IP:8888/centos6_ks.cfg EOF cat > /var/www/html/centos6_ks.cfg <<- EOF #platform=x86, AMD64, or Intel EM64T #version=DEVEL # Firewall configuration firewall --disabled # Install OS instead of upgrade install # Use network installation url --url=http://$MY_IP:8888/centos6 # Root password rootpw 000000 #rootpw --iscrypted $1$chengran$TeFFyqRQPsPrXHmzhQxPm/ # System authorization information auth --useshadow --enablemd5 # Use graphical install graphical firstboot --disable # System keyboard keyboard us # System language lang en_US # SELinux configuration selinux --disabled # Installation logging level logging --level=info # Reboot after installation #reboot # System timezone timezone Asia/Shanghai # Network information network --bootproto=dhcp --device=eth0 --onboot=on # System bootloader configuration key --skip bootloader --append="rhgb quiet" --location=mbr # Clear the Master Boot Record zerombr # Partition clearing information clearpart --all --initlabel # Disk partitioning information part /boot --fstype="ext4" --size=200 part swap --fstype="swap" --size=16000 part / --fstype="ext4" --size=$CENTOS6_Root_Part %pre # set welcom info echo "Welcome " %end %post echo "Welcome to Xiandian" >> /etc/motd %end %packages --nobase openssh-server openssh-clients wget vim %end EOF service httpd restart service dhcpd restart service xinetd restart chkconfig httpd on chkconfig xinetd on chkconfig dhcpd on setup } config_controller() { cat > /var/www/html/centos7_ks_controller.cfg <<- EOF #platform=x86, AMD64, or Intel EM64T #version=DEVEL # Firewall configuration firewall --enabled # Install OS instead of upgrade install # Use network installation url --url=http://$MY_IP:8888/centos7/ # Root password rootpw 000000 #rootpw --iscrypted $1$chengran$TeFFyqRQPsPrXHmzhQxPm/ # System authorization information auth --useshadow --enablemd5 # Use graphical install graphical firstboot --enabled # System keyboard keyboard us # System language lang en_US # SELinux configuration selinux --enforcing # Installation logging level logging --level=info # Reboot after installation #reboot # System timezone timezone Asia/Shanghai # Network information network --bootproto=dhcp --device=$Interface_Name --onboot=yes --noipv6 # System bootloader configuration bootloader --append="rhgb quiet" --location=mbr # Partition clearing information clearpart --all --initlabel # Disk partitioning information part /boot --fstype="ext4" --size=200 part swap --fstype="swap" --size=1000 part / --fstype="ext4" --size=$CENTOS7_Root_Part %pre # set welcom info echo "Welcome " %end %post echo "" >> /etc/motd echo "Welcome to Xiandian" >> /etc/motd echo "This is controller node" >> /etc/motd echo "" >> /etc/motd Int_1_Name=\`ip a|grep BROADCAST|awk '{print \$2}'|awk -F ':' '{print \$1}' |sed -n '1p'\` Int_2_Name=\`ip a|grep BROADCAST|awk '{print \$2}'|awk -F ':' '{print \$1}' |sed -n '2p'\` rm -rf /etc/sysconfig/network-scripts/ifcfg-\$Int_1_Name rm -rf /etc/sysconfig/network-scripts/ifcfg-\$Int_2_Name echo "DEVICE=\$Int_1_Name" >>/etc/sysconfig/network-scripts/ifcfg-\$Int_1_Name echo "TYPE=Ethernet" >>/etc/sysconfig/network-scripts/ifcfg-\$Int_1_Name echo "ONBOOT=yes" >>/etc/sysconfig/network-scripts/ifcfg-\$Int_1_Name echo "NM_CONTROLLED=no" >>/etc/sysconfig/network-scripts/ifcfg-\$Int_1_Name echo "BOOTPROTO=static" >>/etc/sysconfig/network-scripts/ifcfg-\$Int_1_Name echo "IPADDR=192.168.100.10" >>/etc/sysconfig/network-scripts/ifcfg-\$Int_1_Name echo "PREFIX=24" >>/etc/sysconfig/network-scripts/ifcfg-\$Int_1_Name echo "GATEWAY=192.168.100.1" >>/etc/sysconfig/network-scripts/ifcfg-\$Int_1_Name echo "DEVICE=\$Int_2_Name" >>/etc/sysconfig/network-scripts/ifcfg-\$Int_2_Name echo "TYPE=Ethernet" >>/etc/sysconfig/network-scripts/ifcfg-\$Int_2_Name echo "ONBOOT=yes" >>/etc/sysconfig/network-scripts/ifcfg-\$Int_2_Name echo "NM_CONTROLLED=no" >>/etc/sysconfig/network-scripts/ifcfg-\$Int_2_Name echo "BOOTPROTO=static" >>/etc/sysconfig/network-scripts/ifcfg-\$Int_2_Name echo "IPADDR=192.168.200.10" >>/etc/sysconfig/network-scripts/ifcfg-\$Int_2_Name echo "PREFIX=24" >>/etc/sysconfig/network-scripts/ifcfg-\$Int_2_Name sed -i -e '/testdisk1/d' -e '/testdisk2/d' /etc/fstab rm -rf /root/*.ks %end %packages --nobase openssh-server openssh-clients wget %end EOF #鍚姩鏈嶅姟鍣?iptables -F service httpd restart service dhcpd restart service xinetd restart chkconfig httpd on chkconfig xinetd on chkconfig dhcpd on } config_compute() { cat > /var/www/html/centos7_ks_compute.cfg <<- EOF #platform=x86, AMD64, or Intel EM64T #version=DEVEL # Firewall configuration firewall --enabled # Install OS instead of upgrade install # Use network installation url --url=http://$MY_IP:8888/centos7 # Root password rootpw 000000 #rootpw --iscrypted $1$chengran$TeFFyqRQPsPrXHmzhQxPm/ # System authorization information auth --useshadow --enablemd5 # Use graphical install graphical firstboot --enabled # System keyboard keyboard us # System language lang en_US # SELinux configuration selinux --enforcing # Installation logging level logging --level=info # Reboot after installation #reboot # System timezone timezone Asia/Shanghai # Network information network --bootproto=dhcp --device=$Interface_Name --onboot=yes --noipv6 # System bootloader configuration bootloader --append="rhgb quiet" --location=mbr # Partition clearing information clearpart --all --initlabel # Disk partitioning information part /boot --fstype="ext4" --size=200 part "BIOS Boot" --fstype="BIOS Boot" --size=1 part swap --fstype="swap" --size=16000 part / --fstype="ext4" --size=$CENTOS7_Root_Part_Compute part /testdisk1 --fstype="ext4" --size=$CENTOS7_Custom_part1 part /testdisk2 --fstype="ext4" --size=$CENTOS7_Custom_part2 %pre # set welcom info echo "Welcome " %end %post echo "" >> /etc/motd echo "Welcome to Xiandian" >> /etc/motd echo "This is compute node" >> /etc/motd echo "" >> /etc/motd Int_1_Name=\`ip a|grep BROADCAST|awk '{print \$2}'|awk -F ':' '{print $1}' |sed -n '1p'\` Int_2_Name=\`ip a|grep BROADCAST|awk '{print \$2}'|awk -F ':' '{print $1}' |sed -n '2p'\` rm -rf /etc/sysconfig/network-scripts/ifcfg-\$Int_1_Name rm -rf /etc/sysconfig/network-scripts/ifcfg-\$Int_2_Name echo "DEVICE=\$Int_1_Name" >>/etc/sysconfig/network-scripts/ifcfg-\$Int_1_Name echo "TYPE=Ethernet" >>/etc/sysconfig/network-scripts/ifcfg-\$Int_1_Name echo "ONBOOT=yes" >>/etc/sysconfig/network-scripts/ifcfg-\$Int_1_Name echo "NM_CONTROLLED=no" >>/etc/sysconfig/network-scripts/ifcfg-\$Int_1_Name echo "BOOTPROTO=static" >>/etc/sysconfig/network-scripts/ifcfg-\$Int_1_Name echo "IPADDR=192.168.100.20" >>/etc/sysconfig/network-scripts/ifcfg-\$Int_1_Name echo "PREFIX=24" >>/etc/sysconfig/network-scripts/ifcfg-\$Int_1_Name echo "GATEWAY=192.168.100.1" >>/etc/sysconfig/network-scripts/ifcfg-\$Int_1_Name echo "DEVICE=\$Int_2_Name" >>/etc/sysconfig/network-scripts/ifcfg-\$Int_2_Name echo "TYPE=Ethernet" >>/etc/sysconfig/network-scripts/ifcfg-\$Int_2_Name echo "ONBOOT=yes" >>/etc/sysconfig/network-scripts/ifcfg-\$Int_2_Name echo "NM_CONTROLLED=no" >>/etc/sysconfig/network-scripts/ifcfg-\$Int_2_Name echo "BOOTPROTO=static" >>/etc/sysconfig/network-scripts/ifcfg-\$Int_2_Name echo "IPADDR=192.168.200.20" >>/etc/sysconfig/network-scripts/ifcfg-\$Int_2_Name echo "PREFIX=24" >>/etc/sysconfig/network-scripts/ifcfg-\$Int_2_Name sed -i -e '/testdisk1/d' -e '/testdisk2/d' /etc/fstab rm -rf /root/*.ks %end %packages --nobase openssh-server openssh-clients wget %end EOF #鍚姩鏈嶅姟鍣?iptables -F service httpd restart service dhcpd restart service xinetd restart chkconfig httpd on chkconfig xinetd on chkconfig dhcpd on } config_all_node() { ##config_controller cat > /var/www/html/centos7_ks_controller.cfg <<- EOF #platform=x86, AMD64, or Intel EM64T #version=DEVEL # Firewall configuration firewall --enabled # Install OS instead of upgrade install # Use network installation url --url=http://$MY_IP:8888/centos7/ # Root password rootpw 000000 #rootpw --iscrypted $1$chengran$TeFFyqRQPsPrXHmzhQxPm/ # System authorization information auth --useshadow --enablemd5 # Use graphical install graphical firstboot --enabled # System keyboard keyboard us # System language lang en_US # SELinux configuration selinux --enforcing # Installation logging level logging --level=info # Reboot after installation #reboot # System timezone timezone Asia/Shanghai # Network information network --bootproto=dhcp --device=$Interface_Name --onboot=yes --noipv6 # System bootloader configuration bootloader --append="rhgb quiet" --location=mbr # Partition clearing information clearpart --all --initlabel # Disk partitioning information part /boot --fstype="ext4" --size=200 part swap --fstype="swap" --size=1600 part / --fstype="ext4" --size=$CENTOS7_Root_Part %pre # set welcom info echo "Welcome " %end %post echo "" >> /etc/motd echo "Welcome to Xiandian" >> /etc/motd echo "This is controller node" >> /etc/motd echo "" >> /etc/motd Int_1_Name=\`ip a|grep BROADCAST|awk '{print \$2}'|awk -F ':' '{print \$1}' |sed -n '1p'\` Int_2_Name=\`ip a|grep BROADCAST|awk '{print \$2}'|awk -F ':' '{print \$1}' |sed -n '2p'\` rm -rf /etc/sysconfig/network-scripts/ifcfg-\$Int_1_Name rm -rf /etc/sysconfig/network-scripts/ifcfg-\$Int_2_Name echo "DEVICE=\$Int_1_Name" >>/etc/sysconfig/network-scripts/ifcfg-\$Int_1_Name echo "TYPE=Ethernet" >>/etc/sysconfig/network-scripts/ifcfg-\$Int_1_Name echo "ONBOOT=yes" >>/etc/sysconfig/network-scripts/ifcfg-\$Int_1_Name echo "NM_CONTROLLED=no" >>/etc/sysconfig/network-scripts/ifcfg-\$Int_1_Name echo "BOOTPROTO=static" >>/etc/sysconfig/network-scripts/ifcfg-\$Int_1_Name echo "IPADDR=192.168.100.10" >>/etc/sysconfig/network-scripts/ifcfg-\$Int_1_Name echo "PREFIX=24" >>/etc/sysconfig/network-scripts/ifcfg-\$Int_1_Name echo "GATEWAY=192.168.100.1" >>/etc/sysconfig/network-scripts/ifcfg-\$Int_1_Name echo "DEVICE=\$Int_2_Name" >>/etc/sysconfig/network-scripts/ifcfg-\$Int_2_Name echo "TYPE=Ethernet" >>/etc/sysconfig/network-scripts/ifcfg-\$Int_2_Name echo "ONBOOT=yes" >>/etc/sysconfig/network-scripts/ifcfg-\$Int_2_Name echo "NM_CONTROLLED=no" >>/etc/sysconfig/network-scripts/ifcfg-\$Int_2_Name echo "BOOTPROTO=static" >>/etc/sysconfig/network-scripts/ifcfg-\$Int_2_Name echo "IPADDR=192.168.200.10" >>/etc/sysconfig/network-scripts/ifcfg-\$Int_2_Name echo "PREFIX=24" >>/etc/sysconfig/network-scripts/ifcfg-\$Int_2_Name #Net_1_Name=\`ip a|grep BROADCAST|awk '{print \$2}'|awk -F ':' '{print \$1}' |sed -n '1p'\` if [[ ! "\$Int_1_Name" == "enp7s0" ]]; then #statements NetworkName1=enp7s0 NetworkName2=enp8s0 # Net_1_Name=enp8s0 # Net_2_Name=enp9s0 sed -i 's/rhgb quiet/net.ifnames=0 biosdevname=0 &/' /etc/default/grub grub2-mkconfig -o /boot/grub2/grub.cfg MacAddress1=\`ip a |grep link/ether|awk '{print \$2}'|sed -n '1p'\` MacAddress2=\`ip a |grep link/ether|awk '{print \$2}'|sed -n '2p'\` cat > /etc/udev/rules.d/70-persistent-net.rules <<- EEF SUBSYSTEM=="net", ACTION=="add", DRIVERS=="?*", ATTR{address}=="\$MacAddress1", ATTR{type}=="1", KERNEL=="eth*", NAME="\$NetworkName1" SUBSYSTEM=="net", ACTION=="add", DRIVERS=="?*", ATTR{address}=="\$MacAddress2", ATTR{type}=="1", KERNEL=="eth*", NAME="\$NetworkName2" EEF sed -i "s/\$Int_1_Name/\$NetworkName1/g" /etc/sysconfig/network-scripts/ifcfg-\$Int_1_Name sed -i "s/\$Int_2_Name/\$NetworkName2/g" /etc/sysconfig/network-scripts/ifcfg-\$Int_2_Name mv /etc/sysconfig/network-scripts/ifcfg-\$Int_1_Name /etc/sysconfig/network-scripts/ifcfg-\$NetworkName1 mv /etc/sysconfig/network-scripts/ifcfg-\$Int_2_Name /etc/sysconfig/network-scripts/ifcfg-\$NetworkName2 fi sed -i -e '/testdisk1/d' -e '/testdisk2/d' /etc/fstab rm -rf /root/*.ks %end %packages --nobase openssh-server openssh-clients wget %end EOF ##--------------------------------------------------------- ##config_compute cat > /var/www/html/centos7_ks_compute.cfg <<- EOF #platform=x86, AMD64, or Intel EM64T #version=DEVEL # Firewall configuration firewall --enabled # Install OS instead of upgrade install # Use network installation url --url=http://$MY_IP:8888/centos7 # Root password rootpw 000000 #rootpw --iscrypted $1$chengran$TeFFyqRQPsPrXHmzhQxPm/ # System authorization information auth --useshadow --enablemd5 # Use graphical install graphical firstboot --enabled # System keyboard keyboard us # System language lang en_US # SELinux configuration selinux --enforcing # Installation logging level logging --level=info # Reboot after installation #reboot # System timezone timezone Asia/Shanghai # Network information network --bootproto=dhcp --device=$Interface_Name --onboot=yes --noipv6 # System bootloader configuration bootloader --append="rhgb quiet" --location=mbr # Partition clearing information clearpart --all --initlabel # Disk partitioning information part /boot --fstype="ext4" --size=200 part "BIOS Boot" --fstype="BIOS Boot" --size=1 part swap --fstype="swap" --size=16000 part / --fstype="ext4" --size=$CENTOS7_Root_Part_Compute part /testdisk1 --fstype="ext4" --size=$CENTOS7_Custom_part1 part /testdisk2 --fstype="ext4" --size=$CENTOS7_Custom_part2 %pre # set welcom info echo "Welcome " %end %post echo "" >> /etc/motd echo "Welcome to Xiandian" >> /etc/motd echo "This is compute node" >> /etc/motd echo "" >> /etc/motd Int_1_Name=\`ip a|grep BROADCAST|awk '{print \$2}'|awk -F ':' '{print \$1}' |sed -n '1p'\` Int_2_Name=\`ip a|grep BROADCAST|awk '{print \$2}'|awk -F ':' '{print \$1}' |sed -n '2p'\` rm -rf /etc/sysconfig/network-scripts/ifcfg-\$Int_1_Name rm -rf /etc/sysconfig/network-scripts/ifcfg-\$Int_2_Name echo "DEVICE=\$Int_1_Name" >>/etc/sysconfig/network-scripts/ifcfg-\$Int_1_Name echo "TYPE=Ethernet" >>/etc/sysconfig/network-scripts/ifcfg-\$Int_1_Name echo "ONBOOT=yes" >>/etc/sysconfig/network-scripts/ifcfg-\$Int_1_Name echo "NM_CONTROLLED=no" >>/etc/sysconfig/network-scripts/ifcfg-\$Int_1_Name echo "BOOTPROTO=static" >>/etc/sysconfig/network-scripts/ifcfg-\$Int_1_Name echo "IPADDR=192.168.100.20" >>/etc/sysconfig/network-scripts/ifcfg-\$Int_1_Name echo "PREFIX=24" >>/etc/sysconfig/network-scripts/ifcfg-\$Int_1_Name echo "GATEWAY=192.168.100.1" >>/etc/sysconfig/network-scripts/ifcfg-\$Int_1_Name echo "DEVICE=\$Int_2_Name" >>/etc/sysconfig/network-scripts/ifcfg-\$Int_2_Name echo "TYPE=Ethernet" >>/etc/sysconfig/network-scripts/ifcfg-\$Int_2_Name echo "ONBOOT=yes" >>/etc/sysconfig/network-scripts/ifcfg-\$Int_2_Name echo "NM_CONTROLLED=no" >>/etc/sysconfig/network-scripts/ifcfg-\$Int_2_Name echo "BOOTPROTO=static" >>/etc/sysconfig/network-scripts/ifcfg-\$Int_2_Name echo "IPADDR=192.168.200.20" >>/etc/sysconfig/network-scripts/ifcfg-\$Int_2_Name echo "PREFIX=24" >>/etc/sysconfig/network-scripts/ifcfg-\$Int_2_Name #Net_1_Name=\`ip a|grep BROADCAST|awk '{print $2}'|awk -F ':' '{print $1}' |sed -n '1p'\` if [[ ! "\$Int_1_Name" == "enp7s0" ]]; then #statements NetworkName1=enp7s0 NetworkName2=enp8s0 # Net_1_Name=enp8s0 # Net_2_Name=enp9s0 sed -i 's/rhgb quiet/net.ifnames=0 biosdevname=0 &/' /etc/default/grub grub2-mkconfig -o /boot/grub2/grub.cfg MacAddress1=\`ip a |grep link/ether|awk '{print $2}'|sed -n '1p'\` MacAddress2=\`ip a |grep link/ether|awk '{print $2}'|sed -n '2p'\` cat > /etc/udev/rules.d/70-persistent-net.rules <<- EEF SUBSYSTEM=="net", ACTION=="add", DRIVERS=="?*", ATTR{address}=="\$MacAddress1", ATTR{type}=="1", KERNEL=="eth*", NAME="\$NetworkName1" SUBSYSTEM=="net", ACTION=="add", DRIVERS=="?*", ATTR{address}=="\$MacAddress2", ATTR{type}=="1", KERNEL=="eth*", NAME="\$NetworkName2" EEF sed -i "s/\$Int_1_Name/\$NetworkName1/g" /etc/sysconfig/network-scripts/ifcfg-\$Int_1_Name sed -i "s/\$Int_2_Name/\$NetworkName2/g" /etc/sysconfig/network-scripts/ifcfg-\$Int_2_Name mv /etc/sysconfig/network-scripts/ifcfg-\$Int_1_Name /etc/sysconfig/network-scripts/ifcfg-\$NetworkName1 mv /etc/sysconfig/network-scripts/ifcfg-\$Int_2_Name /etc/sysconfig/network-scripts/ifcfg-\$NetworkName2 fi sed -i -e '/testdisk1/d' -e '/testdisk2/d' /etc/fstab rm -rf /root/*.ks %end %packages --nobase openssh-server openssh-clients wget %end EOF #鍚姩鏈嶅姟鍣?iptables -F service httpd restart service dhcpd restart service xinetd restart chkconfig httpd on chkconfig xinetd on chkconfig dhcpd on } setup() { echo -e "\033[34m-------Install Info------------\033[0m" echo -e "\033[35m 1: install pxe \033[0m" echo -e "\033[35m 2: switch controller mode \033[0m" echo -e "\033[35m 3: switch compute mode \033[0m" echo -e "\033[35m 4: switch all mode \033[0m" echo -e "\033[37m Please select installation services: (eg :1 / 2 / 3 )\033[0m" read KEY case $KEY in 1) install_pxe; ;; 2) config_controller; ;; 3) config_compute; ;; 4) config_all_node; ;; *) echo -e "\033[31m Choose wrong, please try again \033[0m " esac } setup