文章目录
为什么要实现批量部署
在企业里,要管理很多台服务器,要管理这些服务器,你首先得给电脑都装上linux系统,那么,难道要一台一台手动安装好几千台服务器?
当然不是,我们只需要一台已经做好相应配置的主机去批量安装其他主机系统就可以了。
PXE是什么
-
预启动执行环境(Preboot eXecution Environment,PXE)也被称为预执行环境,提供了一种使用网络接口(Network Interface)启动计算机的机制。这种机制让计算机的启动可以不依赖本地数据存储设备(如硬盘)或本地已安装的操作系统 。
-
由Intel和Systemsoft公司于1999年9月20日公布的技术
-
C/S的工作模式
-
PXE客户端会调用网际协议(IP)、用户数据协议(UDP)、动态主机分配协议(DHCP)、小型文件传输协议(TFTP)、HTTP等网络协议。
PXE 协议大致上结合了DHCP和TFTP,虽然都有在两者上面有改进。DHCP用于查找合适的启动伺服器,TFTP用于下载初始引导程序和附加文件。
PXE 工作模式的原理
思路:
服务器上的网卡是必须的设备,从网卡启动,访问别人的资源,进行自动安装。
注意:
为什么主机2要选择dhcp获取ip?
因为主机2只有网卡,并没有安装系统,要想静态获取ip,必须使用软件。
实现步骤
1.配置本地yum源
2.yum install httpd dhcp system-config-kickstart -y
资源的部署
共享镜像资源
http模块
mkdir /var/www/html/rhel7.0
systemctl start httpd systemctl stop firewalld
mount /镜像资源 /var/www/html/rhel7.0 #临时挂载
vim /etc/rc.d/rc.local#设置永久挂载,里面写mount...
chmod +x /etc/rc.d/rc.local
/etc/rc.d/rc.local
共享ks配置资源
system-config-kickstart 模块
mkdir /var/www/html/ks
system-config-kickstart #打开图形化界面,进行相应设置 其他步骤不变。第二步,选择的源是HTTP 172.25.254.110 (本机目录) 目录:/rhel7.0
在最后一步,设置安装系统后自动配置好yum源
cat >/etc/yum.repos.d/westos.repo <<EOF
[rhel7.0]
name=rhel7.0
baseurl=http://172.25.254.110/rhel7.0
gpgcheck=0
EOF
保存文件
/var/www/html/ks/ks1.cfg(名字可以随便起)
编辑文件
vim /var/www/html/ks/ks1.cfg
ksvalidator /var/www/html/ks/westos.cfg 对文件进行语法检测
此处有报错,修改之后,再检测没有错误。
程序的准备
dhcp模块
cd /etc/dhcp/
cat /dhcpd.conf
cp ....example /dhcpd.conf
vim dhcpd.conf
改删的删,该添的添
之前已经做过,这里不再赘述。
systemctl restart dhcp
此处操作不影响实验,是为了理解实验。可以不做。
cd /var/www/html/rhel7.0
cd isolinux/
vim isolinux.cfg
其实两个文件本身在 /var/www/html/rhel7.0/isolinux中也是有的。
所以安装系统时需要的文件都在isolinux目录
回到PEX工作原理,主机1在响应主机2的dhcp请求时,让它给2的file文件的内容是让主机2去读取isolinux目录里的内容,即可实现安装。
而isolinux目录的内容,是由PXE环境去引导读取的。
pxe模块
yum search pxelinux yum install syslinux.x86_64 -y #此程序包括了pxe环境执行时的一套组件包
查看syslinux的配置信息
less /usr/share/doc/syslinux-4.05/pxelinux.txt
#分页浏览
tftp模块
yum search tftp #发布资源时所需要的软件,之所以不用apache,因为pxelinux.0头文件只读tftp服务。是开发时设置的。
yum install tftp-server.x86_64 -y
sytemctl start tftp sytemctl enable tftp
实验环境到这里就部署好了,接下来是操作环节。
注意:
pxelinux就是之前一直所说的dhcp分配ip时,所带的那个"file"。
pxelinux.0的类型是数据,作用是读取tftp目录里的默认pxelinux.cfg/default文件。
但是安装系统时,需要读取isolinux下的isolinux.cfg文件,因此只需把此文件复制到pxelinux目录里,并且重命名为default。
isolinux.cfg就会被pxelinux.0自动读取
最后实现的具体步骤
1
rpm -ql tftp-server 查看tftp的配置文件
2.
cp /usr/share/syslinux/pxelinux.0 /var/lib/tftpboot #这两个文件都是安装了各自软件之后自己产生的。 拷贝pxelinux.0文件到tftpboot目录,目的是让主机2 得到ip的同时得到pxelinux.0,让pxelinux.0引导它下一步去哪里
cp /var/www/html/rhel7.0/isolinux/* /var/lib/tftpboot # /表示重命名为default 此步骤目的是拷贝镜像资源的配置文件到tftp服务的配置目录下,让主机2再pxe引导程序的引导下知道自己的内核等安装信息
3.
mkdir /var/lib/tftpboot/pxelinux.cfg 创建此目录,因为pxelinux.0默认其为配置目录,创建pxelinux.cfg目录,固定目录名称
4.
cp /var/lib/tftpboot/isolinux.cfg pxelinux.cfg/default 文件名称必须为default,这是pxe程序默认读取的文件,内容是isolinux.cfg文件的。
5
rpm-ql syslinux | grep pxelinux.0 查询pxelinux.0文件所在目录
6.vim /etc/dhcp/dhcpd.conf
pxelinux.0会告诉主机2 ,下一步应该去读取 var/lib/tftboot/pxelinux.cfg/default
文件,default所带的内容就是isolinux.cfg的内容。
systemctl restart dhcpd
7
vim /var/lib/tftpboot/pxelinux.cfg/default #编辑default文件的内容。
第65行:代替了用kickstart安装时,手动按键tab,只读ks.cfg和iso镜像资源的过程。自动完成安装。
至此,实验步骤完成。
测试
新建一个虚拟机:virt-manager 选择pxe启动方式
直接forward就可以了。
(或者不新建虚拟机:选择boot options 从网卡启动 再启动)
如何更改安装页面的相应参数
vim /var/lib/tftpboot/pxelinux.cfg/default
- 第2行:更改开机时间的秒数 为2
timeout 20 - 第11行:更改标题的名字
menu title xxxxxxx - 第61行左右:更改选择项的先后位置
若想让第一个为默认,则把menu default放在第一个label 下
注意:
-
安装过程中提示kickstart文件设置有误时,可直接使用
system-config-kickstart westos.cfg
进入图形化设置界面更改设备。 -
一般服务器出厂时,会设置默认启动方式为网卡启动,后面自己设置成从硬盘启动。我们通过usp电源,通过远程ssh方式开启,开启之后由于我的主机中有相应设置,服务器就会自动安装系统了。全程自动化。