利用PXE自动化安装centos7
前言
PXE的功能及原理。大概解释一下意思就是:
- 启动计算机的时候如果没有插入U盘以及光驱等介质的话,boot启动项是有一个从PXE启动的选项,如果都没有则会从pxe启动。
- PXE上的DHCP客户端会向DHCP服务器,申请IP地址,DHCP服务器分配一个IP址地给它,同时DHCP服务器还会告诉客户端配置文件名称以及TFTP服务器的地址,让PXE客户端去下载。
- 配置文件(一般是pxelinux.0)告诉PXE客户端系统的安装启动项是在pxelinux.cfg目录下面的default这个文件里。
- PXE下载并依据配置文件的内容下载启动必须的文件,并通过kickstart.cfg 配置文件开始安装系统
- 使用cobbler 也可以自动化安装,这个是二次封装,用着相对简单一点,感兴趣的可以自行搜索。有时间我会再写一篇。
环境准备
这里我提前安装了一台centos7,来当服务器。
服务器需要安装:
dhcp服务:用来给刚开机的客户端分配ip地址以及告知配置文件和tftp服务器的IP地址。
tftp服务:用来给客户端提供所需配置文件的下载路径。
httpd/vsftpd服务:两者选一即可,用来让客户端下载镜像。
xinetd服务:用来接管tftp服务,来做一些策略。
syslinux: 需要从这里来拷贝pxelinux.0等文件。
总之一条命令:
[root@localhost tftpboot]# yum install dhcpd tftp-server httpd syslinux xinetd -y
#其中httpd可换成vsftpd,我这里就用httpd做了,就不安装vsftpd了
服务器需要的配置:
- 关闭防火墙
关闭防火墙
systemctl stop firewalld.service
#关闭防火墙
systemctl disable firewalld.service
#取消防火墙开机自启动
setenforce 0
#临时关闭防火墙
getenforce
#获取防火墙状态
把/etc/selinux/config 里的SELINUX=enforcing 改成 SELINUX=disabled
#来永久关闭selinux
#centos 7 现在使用firewalld.service代替iptables,并且使用systemctl来管理比较方便#
- 配置静态ip
因为dhcp服务器需要,所以需要把服务器更改成静态ip
[root@localhost ~]#vim /etc/sysconfig/network-scripts/ifcfg-ens37
TYPE="Ethernet"
PROXY_METHOD="none"
BROWSER_ONLY="no"
BOOTPROTO="static"
DEFROUTE="yes"
IPV4_FAILURE_FATAL="no"
IPADDR=192.168.2.1
NETMASK=255.255.255.0
NAME="ens37"
DEVICE="ens37"