pxe批量自动安装系统

pxe自动安装系统

环境:rhel8+dhcp+tftp+http+kickstart

总体概述:

本次pxe环境使用VMware软件来搭建,镜像为rhel8,通过dhcp+tftp+http+kickstart来实现自动化安装。

pxe主机两块网卡,管理卡在192.168.174.0网段(也可以自动获取,只要能ssh上主机就可以),另一块规划IP为10.1.0.1/24,地址池为10.1.0.100-10.1.0.200

操作步骤概述:

  1. 安装rhel8的操作系统

正常安装即可,但是需要另添加一块网卡,这样我们有两块网卡ens160和ens192,ens160采用桥接模式,作为管理可以让我们进行登录操作,ens192采用特定的虚拟网络,采用vmnet2仅主机模式,作为DHCP地址分发网口。将vmnet2的DHCP关掉。

  1. 关闭subscription-managerselinux和防火墙

进入 /etc/yum/pluginconf.d/subscription-manager.conf,将subscription-manager这个订阅模块关闭,这个不关闭会存在一定问题(如果有红帽的订阅也可以直接登录订阅,那就省去配置本地yum

[root@localhost ~]# cat /etc/selinux/config

SELINUX=disable

[root@localhost ~]# systemctl stop firewalld

[root@localhost ~]# systemctl status firewalld

  1. 搭建本地yum仓库,

[root@localhost ~]# mount /dev/sr0 /mnt

mount: /mnt: WARNING: device write-protected, mounted read-only.

[root@localhost ~]# vi /etc/yum.repos.d/bendi.repo

[root@localhost ~]# cat /etc/yum.repos.d/bendi.repo

[BaseOS]

name =BaseOS

enable =yes

gpgcheck =0

baseurl =file:///mnt/BaseOS/

[AppStream]

name =AppStream

enable =yes

gpgcheck =0

baseurl =file:///mnt/AppStream/

[root@localhost ~]# yum repolist

repo id                                       repo name

AppStream                                     AppStream

BaseOS                                        BaseOS

[root@localhost ~]# yum list

  1. 配置网卡

个人使用networkmanager来管理网卡,安装bash-completion来使nmcli命令可以补全(需要重启生效)

[root@localhost ~]# nmcli connection add con-name static type ethernet ifname ens192 ipv4.addresses 10.1.0.1/24 ipv4.method man

[root@localhost ~]# nmcli connection show

NAME    UUID                                  TYPE      DEVICE

ens160  f6c07f5f-33c3-4546-8a8f-9cadae517cbc  ethernet  ens160

static  79943213-bca3-45b6-9b37-5188bf395934  ethernet  ens192

  1. 安装配置DHCP

   [root@localhost selinux]# yum install -y dhcp-server

   [root@localhost ~]# rpm -ql dhcp-server

/etc/dhcp/dhcpd.conf

/usr/share/doc/dhcp-server/dhcpd.conf.example

[root@localhost~]#cp/usr/share/doc/dhcp-server/dhcpd.conf.example /etc/dhcp/dhcpd.conf

[root@localhost ~]# cat /etc/dhcp/dhcpd.conf

subnet 10.1.0.0 netmask 255.255.255.0 {

  range 10.1.0.100 10.1.0.200;

  next-server 10.1.0.1;

  filename "pxelinux.0";

}

  1. 安装配置TFTP

[root@localhost ~]# yum install -y tftp-server.x86_64

[root@localhost ~]# rpm -ql tftp-server

[root@localhost ~]# cat /usr/lib/systemd/system/tftp.service

[Unit]

Description=Tftp Server

Requires=tftp.socket

Documentation=man:in.tftpd

[Service]

ExecStart=/usr/sbin/in.tftpd -s /var/lib/tftpboot

StandardInput=socket

[root@localhost isolinux]# pwd

/mnt/isolinux

[root@localhost isolinux]# cp vmlinuz initrd.img /var/lib/tftpboot/

检查pxelinux.0这个文件是否存在

[root@localhost syslinux]# find / -name pxelinux.0

没有的话安装syslinux这个包

[root@localhost ~]# yum install -y syslinux

[root@localhost ~]# find / -name pxelinux.0

/usr/share/syslinux/pxelinux.0

[root@localhost isolinux]# cp ldlinux.c32 /var/lib/tftpboot/

[root@localhost isolinux]# mkdir /var/lib/tftpboot/pxelinux.cfg

[root@localhost isolinux]# touch /var/lib/tftpboot/pxelinux.cfg/default

[root@localhost isolinux]# cd

[root@localhost ~]#  cp -rf /usr/share/syslinux/* /var/lib/tftpboot/

cp: overwrite '/var/lib/tftpboot/ldlinux.c32'? y

cp: overwrite '/var/lib/tftpboot/pxelinux.0'? y

[root@localhost ~]# vim /var/lib/tftpboot/pxe

pxechn.c32    pxelinux.0    pxelinux.cfg/

[root@localhost ~]# vim /var/lib/tftpboot/pxelinux.cfg/default

[root@localhost ~]# cat /var/lib/tftpboot/pxelinux.cfg/default

default vesamenu.c32

#加载引导文件

timeout 3000

#超时时间

label shihppxe

#名称

  1. 安装配置http

[root@localhost ~]# yum install -y httpd

[root@localhost ~]# systemctl restart httpd

[root@localhost ~]# mkdir /var/www/html/iso

[root@localhost ~]# mount /dev/sr0 /var/www/html/iso/

mount: /var/www/html/iso: WARNING: device write-protected, mounted read-only.

[root@localhost ~]# systemctl restart httpd

将以下写入/var/lib/tftpboot/pxelinux.cfg/default文件中

  kernel vmlinuz

  append initrd=initrd.img method=http://10.1.0.1/iso/

[root@localhost ~]# cat /var/lib/tftpboot/pxelinux.cfg/default

default vesamenu.c32

#加载引导文件

timeout 3000

#超时时间

label shihppxe

#名称

  kernel vmlinuz

  append initrd=initrd.img method=http://10.1.0.1/iso/

到这里已经实现了网络安装,我们新建虚拟机把网卡设置为vmnet2,开机就是自动进入安装界面,要想实现全自动安装,我们还需要kickstart来帮助我们实现这个操作

  1. 编写kickstart文件

在我们超级用户root家目录中,有一个anaconda-ks.cfg的文件,这个就是kickstart文件,这里面记录我们装系统时,安装的具体操作,比如分区信息,时区信息用户密码等信息,我们针对这个文件进行修改放入http目录下,在default文件中将ks指向该文件即可

里面主要的修改信息是

repo --name="AppStream" --baseurl=file:///run/install/sources/mount-0000-cdrom/AppStream(这条删除,替换为url --url=http://10.1.0.1/iso

删除cdrom

添加reboot

编辑default文件

[root@localhost ~]# cat /var/lib/tftpboot/pxelinux.cfg/default

default vesamenu.c32

#加载引导文件

timeout 3000

#超时时间

label shihppxe

#名称

  kernel vmlinuz

  append initrd=initrd.img method=http://10.1.0.1/iso/ ks=http://10.1.0.1/test.cfg

现在重启pxe测试虚拟机,就可以自动化安装了,kickstart文件也可以使用软件生成。

下面是ks文件,密码是1,写入了一些其他配置,通过网络拉取yum仓库直接搭建本地仓库

#version=RHEL8
# Use graphical install
graphical

url --url="http://10.1.0.1/jj"


%packages
@^minimal-environment
kexec-tools

%end

# Keyboard layouts
keyboard --xlayouts='cn'
# System language
lang zh_CN.UTF-8

# Network information
network  --bootproto=dhcp --device=ens160 --ipv6=auto --activate
network  --hostname=localhost.localdomain

# Use CDROM installation media
reboot

# Run the Setup Agent on first boot
firstboot --enable

ignoredisk --only-use=nvme0n1
autopart
# Partition clearing information
clearpart --none --initlabel

# System timezone
timezone America/New_York --isUtc

# Root password
rootpw --iscrypted $6$dRGmRXbYKiMFICDy$R2AyGkhad0xp26BfMniB1D0Sv8hsx4TI9USaltow4syfK0SOHAPbbyYp1EwIdoKFEiLChFhij0xm2RrXFca.f.

%addon com_redhat_kdump --enable --reserve-mb='auto'

%end

%post
#/bin/bash

touch /etc/yum.repos.d/1.repo
touch /etc/yum.repos.d/bendi.repo
echo "[baseos]
name =baseos
enable =yes
gpgcheck =0
baseurl =http://10.1.0.1/jj/BaseOS/
[appstream]
name =appstream
enable =yes
gpgcheck =0
baseurl =http://10.1.0.1/jj/AppStream/" >>/etc/yum.repos.d/1.repo

yum repolist

yum list

yum install -y createrepo

yum install -y yum-utils-4.0.21-3.el8.noarch

mkdir /cangku

reposync --repo baseos -p /cangku

reposync --repo appstream -p /cangku

createrepo -v /cangku/baseos
createrepo -v /cangku/appstream

echo "[BaseOS]
name =BaseOS
enable =yes
gpgcheck =0
baseurl =file:///cangku/baseos/

[AppStream]
name =AppStream
enable =yes
gpgcheck =0
baseurl =file:///cangku/appstream/" >>/etc/yum.repos.d/ben.repo

rm -rf 1.repo

yum repolist

yum list


%end

%anaconda
pwpolicy root --minlen=6 --minquality=1 --notstrict --nochanges --notempty
pwpolicy user --minlen=6 --minquality=1 --notstrict --nochanges --emptyok
pwpolicy luks --minlen=6 --minquality=1 --notstrict --nochanges --notempty
%end

简述:

1.安装DHCP服务

复制配置模板到配置文件

在配置文件中写入网段,网关,分发地址的qishi地址和终止地址,写入ghcp服务器地址(net-server 10.1.0.1),指向启动文件(filename “pxelinux.0”)

2.安装tftp服务

vmlinuz initrd.imgldlinux.c32放入tftpboot

tftpboot下建立pxelinux.cfg目录,并在pxelinux.cfg中建立default文件

/usr/share/syslinux/下所有文件放入tftpboot

编辑default文件,里面写入指向加载引导文件,超时时间,pxe名称,内核文件

default vesamenu.c32

#加载引导文件

timeout 3000

#超时时间

label shihppxe

#名称

kernel vmlinuz

#指定内核文件

append initrd=initrd.img method=http://10.1.0.1/iso/  ks=http://10.1.0.1/test.cfg

3.安装配置HTTP服务

安装http服务

在默认路径下建立一个空目录xx

将本地镜像文件挂载到xx

将ks文件放入html下

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值