一键部署pxe

该脚本详细演示了如何通过bash脚本自动配置PXE网络安装环境,包括关闭防火墙,配置新网卡ens36,安装DHCP、TFTP服务,设置VSFTP,安装并配置Kickstart文件,最后提供了一个简单的ks.cfg配置示例,用于自动化安装CentOS7系统。
摘要由CSDN通过智能技术生成

#!/bin/bash

echo "=============================PXE 自动安装==================================="

#关闭防火墙,安全防护中心
systemctl stop firewalld.service &> /dev/null
systemctl disable firewalld.service &> /dev/null
setenforce 0 &> /dev/null

echo "温馨提示:请新增一张网卡如ens36,设置为仅主机模式,共服务使用。
                IP设置请根据虚拟机的虚拟网络编辑器的IP来自行定义。
                祝您好运!!!!!!!!!!!!!!!!!!!!!                                                                                   
                本脚本安装系统,默认登录用户名为:root  密码为:root   请及时修改!!!   

 下面开始安装#########################################################"

echo "==============ens36网卡配置================================="

cd /etc/sysconfig/network-scripts
cp ifcfg-ens33 ifcfg-ens36
sed -i '/IPADDR/d' /etc/sysconfig/network-scripts/ifcfg-ens36 &>/dev/null
sed -i '/NETMASK/d' /etc/sysconfig/network-scripts/ifcfg-ens36 &>/dev/null
sed -i '/GATEWAY/d' /etc/sysconfig/network-scripts/ifcfg-ens36 >&/dev/null
sed -i '/DNS/d' /etc/sysconfig/network-scripts/ifcfg-ens36 &>/dev/null
sed -i '/DEVICE/d' /etc/sysconfig/network-scripts/ifcfg-ens36 &>/dev/null
sed -i '/NAME/d' /etc/sysconfig/network-scripts/ifcfg-ens36 &>/dev/null
sed -i '/UUID/d' /etc/sysconfig/network-scripts/ifcfg-ens36 &>/dev/null
sed -i '/BOOTPROTO/d' /etc/sysconfig/network-scripts/ifcfg-ens36 &>/dev/null
read -p "请输入IP地址: " IP
read -p "请输入子网掩码地址: " NET
read -p "请输入网关地址: " GAT
read -p "请输入DNS地址: " dns
echo "IPADDR=$IP
NETMASK=$NET
GATEWAY=$GAT
DNS1=$dns
BOOTPROTO=static
NAME=ens36
DEVICE=ens36" >> /etc/sysconfig/network-scripts/ifcfg-ens36
echo "网卡配置完成"

#重启网络配置,生效ens36
systemctl restart network &> /dev/null
  if [ $? -eq 0 ];then
    echo "网络服务重启成功"
    else
   echo "网络服务重启失败,请检查"
  fi

echo "==============安装配置DHCP服务================================="
#判断dhcp是否安装
rpm -q dhcp &> /dev/null
if [ $? -eq 0 ];then
  echo "DHCP服务已安装" 
else
  yum -y install dhcp &> /dev/null
fi
rm -rf /etc/dhcp/dhcpd.conf &> /dev/null
cp /usr/share/doc/dhcp*/dhcpd.conf.example /etc/dhcp/dhcpd.conf &> /dev/null
read -p "输入DHCP网段: " wangduan
read -p "输入子网掩码: " yanma
read -p "输入地址池(中间以空格间隔): " dizhichi
read -p "输入DHCP网关IP地址: " wangguan

echo "
ddns-update-style none;
subnet $wangduan netmask $yanma {
  range $dizhichi;
  option routers $IP;
  option domain-name-servers 114.114.114.114;
  next-server $IP;
  filename \"pxelinux.0\";
}" >>/etc/dhcp/dhcpd.conf

systemctl start dhcpd &> /dev/null
   if [ $? -eq 0 ];then 
     echo "dhcp服务启动成功"
   else 
     echo "dhcp服务启动失败"
   fi
systemctl enable dhcpd &> /dev/null
echo "==================配置TFTP、xinetd============================="
#判断TFTP是否存在
rpm -q tftp-server &> /dev/null
if [ $? -eq 0 ];then 
  echo "TFTP服务已安装"
else
  yum -y install tftp-server &> /dev/null
fi
#判断xinetd是否存在
rpm -q xinetd &> /dev/null
if [ $? -eq 0 ];then
  echo "tftp服务已安装"
else
  yum -y install xinetd &> /dev/null
fi
#修改TFTP的配置文件
sed -i '10s/yes/no/' /etc/xinetd.d/tftp
sed -i '14s/yes/no/' /etc/xinetd.d/tftp

systemctl start xinetd &> /dev/null
if [ $? -eq 0 ];then
     echo "xinetd服务启动成功"
   else
     echo "xinetd服务启动失败"
   fi

systemctl enable  xinetd &> /dev/null
systemctl start tftp &> /dev/null
if [ $? -eq 0 ];then
     echo "tftp服务启动成功"
   else
     echo "tftp服务启动失败"
   fi


systemctl enable tftp &> /dev/null

#挂载镜像
mount /dev/cdrom /mnt &> /dev/null

#复制镜像中的文件‘
cp /mnt/images/pxeboot/initrd.img /var/lib/tftpboot/

cp /mnt/images/pxeboot/vmlinuz /var/lib/tftpboot/

echo "=================安装pxelinux.0和syslinux================="
yum provides */pxelinux.0 -y &> /dev/null
yum -y install syslinux &> /dev/null
cp /usr/share/syslinux/pxelinux.0 /var/lib/tftpboot/ 
mkdir /var/lib/tftpboot/pxelinux.cfg
echo "default auto 
prompt 0
label auto  
      kernel vmlinuz 
      append initrd=initrd.img method=ftp://$IP/centos7 ks=ftp://$IP/ks.cfg 
label linux text
      kernel vmlinuz 
      append text initrd=initrd.img method=ftp://$IP/centos7 ks=ftp://$IP/ks.cfg

label linux rescue
      kernel vmlinuz 
      append rescue initrd=initrd.img method=ftp://$IP/centos7 ks=ftp://$IP/ks.cfg " >> /var/lib/tftpboot/pxelinux.cfg/default

echo "=======================安装VSFTP============================="
#安装FTP

rpm -q vsftpd &> /dev/null
if [ $? -eq 0 ];then
  echo "VSFTP服务已安装"
else
  yum -y install vsftpd &> /dev/null
fi
mkdir /var/ftp/centos7
cd /var/ftp/centos7
cp -rf /mnt/* ./
systemctl start vsftpd &> /dev/null
if [ $? -eq 0 ];then
  echo "vsftp服务启动成功"
else 
  echo "vsftp服务启动失败"
fi

systemctl enable vsftpd &> /dev/null

yum -y install system-config-kickstart &> /dev/null

if [ $? -eq 0 ];then
  echo "kickstart安装成功"
else
  echo "kickstart安装失败"
fi


echo "
#platform=x86, AMD64, 或 Intel EM64T
#version=DEVEL
# Install OS instead of upgrade
install
# Keyboard layouts
keyboard 'us'
# Root password
rootpw --plaintext root
# Use network installation
url --url="ftp://192.168.68.68/centos7"
# System language
lang en_US
# System authorization information
auth  --useshadow  --passalgo=sha512
# Use graphical install
graphical
firstboot --disable
# SELinux configuration
selinux --disabled

# Firewall configuration
firewall --disabled
# Network information
network  --bootproto=dhcp --device=ens33
# Reboot after installation
reboot
# System timezone
timezone Asia/Shanghai
# System bootloader configuration
bootloader --location=mbr
# Clear the Master Boot Record
zerombr
# Partition clearing information
clearpart --all --initlabel
# Disk partitioning information
part /boot --fstype="xfs" --size=1024
part swap --fstype="swap" --size=4096
part / --fstype="xfs" --grow --size=1 

%packages
@^gnome-desktop-environment
@base
@core
@guest-agents
@guest-desktop-agents
@input-methods
@internet-browser
@java-platform
@multimedia
@network-file-system-client
@networkmanager-submodules
@print-client
@x11
chrony
kexec-tools

%end" > /var/ftp/ks.cfg  


echo "你的运气太好了!!!
      可以进行批量系统安装了!!!"


 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值