一键部署pxe环境

系统:Centos6.5

环境:VMware Workstation12

#!/bin/bash
# Please prepare CentOS ISO image first
# root password:123456
# initialization
ip=192.168.126.11
dhcp_start=192.168.126.100
dhcp_end=192.168.126.200
subnet=192.168.126.0
netmask=255.255.255.0
broadcast=192.168.126.255
swap_size=2048


# Mount CentOS ISO
[ -e /dev/cdrom -a -e /dev/cdrom1 ]||{
echo "please insert iso image";exit
}

mkdir -p /pxe/{centos6,centos7,ks}
mount /dev/cdrom  /pxe/centos6 &>/dev/null
mount /dev/cdrom1 /pxe/centos7 &>/dev/null
echo "/dev/cdrom   /pxe/centos6  iso9660  defaults 0 0" >>/etc/fstab
echo "/dev/cdrom1  /pxe/centos7  iso9660  defaults 0 0" >>/etc/fstab

# Install NFS
echo "NFS Installing..."
yum install nfs-utils -y &>/dev/null
echo "/pxe/centos6 *(ro)" >> /etc/exports
echo "/pxe/centos7 *(ro)" >> /etc/exports
echo "/pxe/ks *(ro)" >> /etc/exports
service rpcbind restart &>/dev/null
service nfs restart &>/dev/null
chkconfig rpcbind on
chkconfig nfs on
[ `ps -ef|grep nfsd|wc -l` -gt 1 ]&& echo "NFS is ready!"|| {
 echo "NFS error";exit
}

# Install TFTP
echo "TFTP Installing..."
yum install xinetd tftp-server -y &>/dev/null
sed -i '/disable/s/yes/no/' /etc/xinetd.d/tftp
sed -i '/server_args/c\server_args	= -t -s -v /var/lib/tftpboot' /etc/xinetd.d/tftp
service xinetd restart &>/dev/null
chkconfig xinetd on
[ `ss -anu|grep :69|wc -l` -gt 0 ]&& echo "TFTP is ready!"||{
echo "TFTP error";exit
}

# Prepare Boot File
echo "syslinux Installing..."
yum install syslinux -y &>/dev/null
mkdir -p /var/lib/tftpboot/centos{6..7}
\cp /usr/share/syslinux/{pxelinux.0,menu.c32} /var/lib/tftpboot/
\cp /pxe/centos6/isolinux/{initrd.img,vmlinuz} /var/lib/tftpboot/centos6
\cp /pxe/centos7/isolinux/{initrd.img,vmlinuz} /var/lib/tftpboot/centos7
mkdir -p /var/lib/tftpboot/pxelinux.cfg

cat >/var/lib/tftpboot/pxelinux.cfg/default <<-EOF
default menu.c32
timeout 600
menu title Welcome to CentOS Automatic Install
label local
  menu label Boot from local drive
  localboot 0xffff
label centos6.5
  menu label Install CentOS 6.5 Minimal
  kernel centos6/vmlinuz
  append initrd=centos6/initrd.img ks=nfs:$ip:/pxe/ks/centos6.cfg
label centos7.3
  menu label Install CentOS 7.3 Minimal
  kernel centos7/vmlinuz
  append initrd=centos7/initrd.img inst.ks=nfs:$ip:/pxe/ks/centos7.cfg
EOF
echo "The boot file is ready!"

# Install DHCP
echo "DHCP Installing..."
yum install dhcp -y &>/dev/null
cat >/etc/dhcp/dhcpd.conf <<-EOF
next-server $ip;
filename "/var/lib/tftpboot/pxelinux.0";
allow bootp;
allow booting;
subnet $subnet netmask $netmask {
  range $dhcp_start $dhcp_end;
  option domain-name-servers $ip;
  option routers $ip;
  option broadcast-address $broadcast;
}
EOF
service dhcpd restart &>/dev/null
chkconfig dhcpd on
[ `ss -anu|grep :67|wc -l` -gt 0 ]&& echo "DHCP is ready!"||{
echo "DHCP error";exit
}

# Prepare ks file

# centos6 
echo "ks file preparing..."
cat > /pxe/ks/centos6.cfg <<-EOF
firewall --disabled
install
nfs --server=$ip --dir=/pxe/centos6
rootpw --iscrypted \$1\$PWGYEp1D\$UmqHNIm./L8dLSsF4owc30
auth  --useshadow  --passalgo=sha512
text
keyboard us
lang zh_CN
selinux --disabled
skipx
logging --level=info
reboot
timezone  Asia/Shanghai
network  --bootproto=dhcp --device=eth0 --onboot=on
bootloader --append="quiet" --location=mbr
zerombr
clearpart --all  
part /boot --asprimary --fstype="ext4" --size=200      
part pv.008002 --size=1 --grow
volgroup vg --pesize=4096 pv.008002
logvol swap --fstype=swap --name=swap --vgname=vg --size=$swap_size
logvol / --fstype=ext4 --name=root --vgname=vg --size=1 --grow
%packages --nobase
@Core
%end
%post
sed -i 's/^GSSAPIAuthentication yes/GSSAPIAuthentication no/' /etc/ssh/sshd_config
sed -i '/UseDNS/c\UseDNS no' /etc/ssh/sshd_config
%end
EOF

# centos7
\cp /pxe/ks/{centos6.cfg,centos7.cfg}
sed -i '/^nfs/s/centos6/centos7/' /pxe/ks/centos7.cfg
sed -i 's/ext4/xfs/;s/--size=200/--size=500/' /pxe/ks/centos7.cfg
sed -i '$a\%addon com_redhat_kdump --disable --reserve-mb='auto'\n%end' /pxe/ks/centos7.cfg 

echo "ks file is ready!"
echo "Installation is complete!!!"

 

转载于:https://www.cnblogs.com/fcing/p/9348019.html

你可能感兴趣的:(运维)