Shell脚本——自动部署一键安装PXE+Kickstart无人值守

PXE装机与Kickstart无人值守安装详解

PXE装机与Kickstart无人值守安装详解

一键PXE(Shell脚本)

#!bin/bash
ping -c1 -W1 www.baidu.com &> /dev/null      
【用于测试网络通不通以及确定当前是NAT还是仅主机模式】
  if [ $? -eq 0 ];then                       
【如果ping的命令返回值为0,则当前为NAT模式】
    mkdir -p /etc/yum.repos.d/repo.bak
    mv -f /etc/yum.repos.d / * /etc/yum.repos.d/repo.bak &> /dev/null
【将local.repo文件移动到repos.bak目录下(也可以是别的备份目录)】
    wget -O /etc/yum.repos.d/CentOS-Base.repo https://mirrors.aliyun.com/repo/Centos-7.repo &> /dev/null
【将阿里云镜像下载到/etc/yum.repos.d/目录下】
    yum clean all && yum makecache &> /dev/null
【清理缓存并且生成新的缓存】
    yum list &> /dev/null
【查询软件包列表】
  else
【如果为仅主机模式,则配置本地yum仓库】
    mount /dev/sr0 /mnt &> /dev/null
    cd /etc/yum.repos.d/
    mkdir -p /etc/yum.repos.d/repo.bak
    mv -f \/etc/yum.repos.d/ * /etc/yum.repos.d/repo.bak &> /dev/null

    echo '[local]
    name=local
    baseurl=file:///mnt
    enabled=1
    gpgcheck=0' > /etc/yum.repos.d/local.repo
    yum clean all && yum makecache &> /dev/null
    
    df -h | grep "mnt"
【用df+grep查看mnt情况】
      if [ $? -eq 0 ];then
【若果$?等于0则条件表达式】
       echo “本地yum源已配置完成”
     else
       echo “当前为仅主机模式,但光盘未挂载”
     fi
  fi



【安装启用TFTP服务并进行相应配置的修改】
yum -y install tftp-server xinetd &> /dev/null
【修改配置文件】
sed -i 's/yes/no/g' /etc/xinetd.d/tftp
【将配置文件里的所有yse替换成no】
systemctl start tftp
systemctl enable tftp
systemctl start xinetd
systemctl enable xinetd

【安装启用DHCP服务并进行相应配置的修改】
yum -y install dhcp &> /dev/null

【修改配置文件】
cat /usr/share/doc/dhcp-4.2.5/dhcpd.conf.example > /etc/dhcp/dhcpd.conf
【使用cat命令将/usr/share/doc/dhcp-4.2.5/dhcpd.conf.example里的内容标准输入到/etc/dhcp/dhcpd.conf】

echo 'ddns-update-style none;
next-server 192.168.131.10;
filename "pxelinux.0";' >> /etc/dhcp/dhcpd.conf
【输出''内的内容并追加到/etc/dhcp/dhcpd.conf文件最后】

echo   'subnet 192.168.131.0 netmask 255.255.255.0 {
    
    
range 192.168.131.100 192.168.131.200;
option routers 192.168.131.30;
}' >> /etc/dhcp/dhcpd.conf
systemctl restart dhcpd
systemctl enable dhcpd


【准备Linux内核、初始化镜像文件】
【将Liunx系统的内核文件和初始化镜像文件(Linux引导加载模块)复制到TFTP根目录下】
cp /mnt/images/pxeboot/initrd.img /var/lib/tftpboot
cp /mnt/images/pxeboot/vmlinuz /var/lib/tftpboot


【因为PXE引导程序由软件包syslinux提供,所以这里安装并复制PXE引导程序到TFTP根目录下】
yum -y install syslinux &> /dev/null
cp /usr/share/syslinux/pxelinux.0 /var/lib/tftpboot/


yum -y install vsftpd &> /dev/null
【安装vsftpd服务并在ftp根目录下创建目录centos7后将将镜像文件强制复制到centos7目录中】  

mkdir /var/ftp/centos7              
cp -rf /mnt/ * /var/ftp/centos7/     
systemctl start vsftpd              
systemctl enable vsftpd             

mkdir /var/lib/tftpboot/pxelinux.cfg
touch /var/lib/tftpboot/pxelinux.cfg/default
【在tftpboot目录中创建pxelinux.cfg空的子目录,并在其中创建空的default文件】

echo 'default auto                                                           
label auto                                                         【指定默认入口名称】
prompt 0                                                           【设置是否等待用户选择,"0"表示不等待用户控制】             
kernel vmlinuz                                                     【kernel和append用来定义引导参数】
append initrd=initrd.img method=ftp://192.168.131.10/centos7

label linux text                                                   【文本安装引导入口】
kernel vmlinuz                                                     【kernel定义内核文件】
append text initrd=initrd.img method=ftp://192.168.131.10/centos7  【append定义镜像文件和安装源】  

label linux rescue                                                 【救援模式引导入口】
kernel vmlinuz
append rescue initrd=initrd.img method=ftp://192.168.131.10/centos7' > /var/lib/tftpboot/pxelinux.cfg/default
【将''输出的结果保存到default文件内】

systemctl stop firewalld.service
setenforce 0
【到这里我们的PXE相关配置就完成了】



【接下来将进行kickstart相关配置】
yum install -y system-config-kickstart
cp /root/qz.cfg /var/ftp/ks.cfg
【将/root/目录的自动应答文件qz.cfg拷贝到/var/ftp/】

sed -i '6d' /var/lib/tftpboot/pxelinux.cfg/default
【通过sed把文件内的第6行删除】

sed -i '5a append initrd=initrd.img method=ftp://192.168.131.10/centos7 ks=ftp://192.168.131.10/ks.cfg' /var/lib/tftpboot/pxelinux.cfg/default
【通过sed把''里的内容插入到文件的第5行下面】

猜你喜欢

转载自blog.csdn.net/TaKe___Easy/article/details/114946426