当前位置 : 主页 > 网络安全 > 测试自动化 >

实现基于PXE的系统自动化安装

来源:互联网 收集:自由互联 发布时间:2021-06-19
初始化:iptables|firewalld,selinux,ntp|chrony 环境:两台主机 一台主机A:DHCP,TFTP,HTTP,ks,yum 源 vmnet15,10.10.10.10 一台主机B:客户端pxe vmnet15 在A上实现。 一、http服务上需要实现的功能。 1.实现
初始化:iptables|firewalld,selinux,ntp|chrony
环境:两台主机
一台主机A:DHCP,TFTP,HTTP,ks,yum 源 vmnet15,10.10.10.10
一台主机B:客户端pxe vmnet15

在A上实现。
一、http服务上需要实现的功能。

1.实现http服务,下载http服务,并且开启服务,设置成开机自动启动。(centos7)

yum install httpd 
systemctl start httpd 
systemctl enable httpd

2.配置启动文件yum源文件的挂载,yum源文件提前拷贝到机器上

[[email protected] ]#cd /var/www/html
[[email protected] html]#mkdir -pv centos/{6,7}/os/x86_64/
把拷贝好的光盘文件挂载上去,放的位置不同,挂载的位置也不同。在/etc/fstab添加下面2行
[[email protected] html]#vim /etc/fstab
/data/CentOS-7-x86_64-Everything-1810.iso /var/www/html/centos/7/os/x86_64/ iso9660 defaults 0 0
/data/CentOS-6.10-x86_64-bin-DVD1.iso /var/www/html/centos/6/os/x86_64/ iso9660 defaults 0 0
自动挂载
[[email protected] html]#mount -a

3.应答文件的配置,在图形化界面配置生成,必须可以打开图形功能(centos7) 6和7的文件要在不同的机器上分别生成,6和7还是有一点点细微的差别的。

[[email protected] ~]#yum install system-config-kickstart 
[[email protected] ~]#system-config-kickstart


分区要自己设置的,由于图片原因,就不细写了

下面这个地方要注意了。必须要在本机的yum仓库中把一个yum名字改成development,不然不会出现下图的包的选择。需要什么包自己选择,也可以不选择,但是centos6必须选择一个包,生成文件后也可以删除,不选择的话会把所有的包都安装上。

安装后脚本,可以自己写个初始化脚本,图片被吃了

下面是应答文件的保存

生成文件后还可以修改。具体情况自己选择。

[[email protected] ]#cd /var/www/html
[[email protected] html]#mkdir ksdir

把生成ks文件拷贝到里面

[[email protected] html]#cd ksdir/
[[email protected] ksdir]#tree
.
├── ks6_desktop.cfg
└── ks7_mini.cfg

0 directories, 2 files

这里贴一个ks文件,可以照的修改修改。6和7是有区别的。需要自己生成。

#platform=x86, AMD64, or Intel EM64T
#version=DEVEL
# Install OS instead of upgrade
install
# Keyboard layouts
keyboard ‘us‘
# Root password
rootpw --plaintext magedu
# Use network installation
url --url="http://10.10.10.10/centos/7/os/x86_64"
# System language
lang en_US
# System authorization information
auth --useshadow --passalgo=sha512
# Use text mode install
text
firstboot --disable
# SELinux configuration
selinux --disabled

# Firewall configuration
firewall --disabled
# Network information
network --bootproto=dhcp --device=eth0
# Reboot after installation
reboot
# System timezone
timezone Africa/Abidjan
# System bootloader configuration
bootloader --append="net.ifnames=0" --location=mbr
# Clear the Master Boot Record
zerombr
# Partition clearing information
clearpart --all --initlabel
# Disk partitioning information
part / --fstype="xfs" --size=10000
part /boot --fstype="xfs" --size=1000
part swap --fstype="swap" --size=1024

%post
useradd wang 
echo 123456 | passwd --stdin wang &> /dev/null
mkdir /etc/yum.repos.d/backup
cd /etc/yum.repos.d/
mv *.repo backup/
cat >base.repo <<EOF
[base]
baseurl=file:///misc/cd
gpgcheck=0
EOF
systemctl enable autofs
%end

%packages
autofs
tree
vim-enhanced
%end

最后的httpd的结构目录,这是没有挂载光盘文件之前的。index.html这个是没有什么用的文件。

[[email protected] html]#tree
.
├── centos
│ ├── 6
│ │ └── os
│ │ └── x86_64
│ └── 7
│ └── os
│ └── x86_64
├── index.html
└── ksdir
    ├── ks6_desktop.cfg
    └── ks7_mini.cfg

8 directories, 3 files

二、dhcp服务需要实现的功能

[[email protected] network-scripts]#yum install dhcp
把配置示例弄过来,然后在修改修改
[[email protected] network-scripts]#cp /usr/share/doc/dhcp*/dhcpd.conf.example /etc/dhcp/dhcpd.conf 
[[email protected] ksdir]#vim /etc/dhcp/dhcpd.conf
主要修改如下,就不一一解释了,截图写的详细太累了,一一解释实在是太多了。
default-lease-time 86400;
max-lease-time 864000;
subnet 10.10.10.0 netmask 255.255.255.0 {
 range 10.10.10.11 10.10.10.100;
 range 10.10.10.130 10.10.10.254;
 option routers 10.10.10.10;
 option domain-name-servers 114.114.114.114,8.8.8.8;
 option domain-name "yuming.org";
 next-server 10.10.10.10;
 filename "pxelinux.0";
}

host mysql {
  hardware ethernet 00:0c:29:ec:ab:e6;
  fixed-address 10.10.10.5;
}

配置好就可以启动服务等,在另一台机器上查看效果了,看看是否可以得到地址,注意一定要在同一个网段,看能否得到地址、网关等。

[[email protected] dhcpd]#systemctl start dhcpd
[[email protected] dhcpd]#systemctl enable dhcpd

三、tftp服务

[[email protected] dhcpd]#yum install tftp-server
[[email protected] dhcpd]#systemctl start tftp.service
[[email protected] dhcpd]#systemctl enable tftp.service

客户端包。测试的时候可以使用
[[email protected] isolinux]#yum install tftp

四、相关PXE相关文件

[[email protected] tftpboot]#yum install syslinux
[[email protected] tftpboot]#cp /usr/share/syslinux/pxelinux.0 /var/lib/tftpboot/
[[email protected] tftpboot]# cd /var/lib/tftpboot
安装菜单的准备工作
[[email protected] tftpboot]#mkdir /var/lib/tftpboot/pxelinux.cfg/
[[email protected] tftpboot]#cp /misc/cd//isolinux/isolinux.cfg /var/lib/tftpboot/pxelinux.cfg/default
把光盘上的启动文件拷贝过来
mkdir /var/lib/tftpboot/centos{6,7}
cp /var/www/html/centos/7/os/x86_64/isolinux/{vmlinux,initrd.img} /var/lib/tftpboot/centos7
cp /var/www/html/centos/6/os/x86_64/isolinux/{vmlinux,initrd.img} /var/lib/tftpboot/centos6

下面只是为了改一下开机的图片显示,改成简易的风格,还有一些菜单选项需要修改。
kernel和append的路径一定要写对了。
[[email protected] tftpboot]#cp /usr/share/syslinux/menu.c32 /var/lib/tftpboot
 [[email protected] tftpboot]#vim pxelinux.cfg/default
default menu.c32
timeout 600

menu title Auto Install CentOS

label linux7
  menu label Install ^Mini_CentOS 7
  menu default
  kernel centos7/vmlinuz
  append initrd=centos7/initrd.img ks=http://10.10.10.10/ksdir/ks7_mini.cfg

label linux6                                                                                 
  menu label Install Desktop_CentOS 6
  kernel centos6/vmlinuz
  append initrd=centos6/initrd.img ks=http://10.10.10.10/ksdir/ks6_desktop.cfg

label local
  menu label Boot from ^local drive
  localboot 0xffff

最后的目录结构是这样的

[[email protected] tftpboot]#tree
.
├── centos6
│ ├── initrd.img
│ └── vmlinuz
├── centos7
│ ├── initrd.img
│ └── vmlinuz
├── menu.c32
├── pxelinux.0
└── pxelinux.cfg
    └── default

3 directories, 7 files

五、A机器搭建完成。B机器配置同样网段就可以测试使用了,效果图如下。

网友评论