使用免交互一键进行PXE批量装机
bash #!/bin/bash #先磁盘判断是否挂载,并检查tftp和xinetd软件包是否安装 df | grep "sr0" if [ $? -eq 0 ];then yum install -y tftp-server xinetd else mount /dev/cdrom /mnt yum install -y tftp-server xinetd fi #修改TFTP服务的配置文件:/etc/xinetd.d/tftp sed -i s/yes/no/g /etc/xinetd.d/tftp #将该配置文件中的no全部改成yes,以达到多台客户机一起安装和开启TFTP服务的目的 #开启TFTP服务 systemctl start tftp systemctl enable tftp systemctl start xinetd systemctl enable xinetd #安装并启用DHCP服务与ecpect yum install -y dhcp expect #复制配置文件,进行免交互操作 /usr/bin/expect <<EOF spawn cp /usr/share/doc/dhcp-4.2.5/dhcpd.conf.example /etc/dhcp/dhcpd.conf expect "是否覆盖"/etc/dhcp/dhcpd.conf"?" {send "yes "} interact EOF #修改DHCP服务配置文件:/etc/dhcp/dhcpd.conf cat >/etc/dhcp/dhcpd.conf <<FOE #使用Here Document进行免交互设置 ddns-update-style none; #禁用DNS动态更新,提高效率 next-server 192.168.200.10; #指定TFTP服务器的地址 filename "pxelinux.0"; #指定PXE引导程序的文件名 subnet 192.168.200.0 netmask 255.255.255.0 { #声明要分配的网段地址 range 192.168.200.100 192.168.200.200; #设置地址池 option routers 192.168.200.10; #设置默认网关地址,指向TFTP服务器的IP地址 } FOE #开启DHCP服务 systemctl start dhcpd systemctl enable dhcpd #准备Linux内核与初始化镜像文件 cd /mnt/images/pxeboot #已事先把光盘挂载到/mnt目录中 cp vmlinuz /var/lib/tftpboot #复制Linux系统的内核文件到TFTP根目录下 cp initrd.img /var/lib/tftpboot/ #复制初始化镜像文件(linux引导加载模块)到TFTP根目录下 #准备PXE引导程序 yum -y install syslinux #PXE引导程序由软件包syslinux提供 cp /usr/share/syslinux/pxelinux.0 /var/lib/tftpboot/ #复制PXE引导程序到TFTP根目录下 #安装并启用FTP服务,准备centos 7 安装源 yum -y install vsftpd 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 cat >/var/lib/tftpboot/pxelinux.cfg/default << ABC default auto #指定默认入口名称 prompt 0 #设置是否等待用户选择, "1"表示等待用户控制,”0“表示不等待用户控制 label auto # 图形安装(默认)引导入口, label用来定义启动项 kernel vmlinuz #kernel 和 append用来定义引导参数 append initrd=initrd.img method=ftp://192.168.200.10/centos7 label linux text #文本安装引导入口 kernel vmlinuz append text initrd=initrd.img method=ftp://192.168.200.10/centos7 label linux rescue #救援模式引导入口 kernel vmlinuz append rescue initrd=initrd.img method=ftp://192.168.200.10/centos7 ABC #关闭防火墙 systemctl stop firewalld.service setenforce 0
下一篇:
序列化是什么用来做什么