PXE+KICKSTART

1. PXE+KICKSTART

1. KICKSTART简介

1.1 什么是KICKSTART

kickstart是一种无人值守的安装方式。

工作原理:
	通过记录典型的安装过程中所需要的人工干预填写的各种参数,并生成一个名为ks.cfg的文件;在其后的安装过程中(不只是局限于生成kickstart安装文件的机器),当出现要求填写各种参数的情况时,安装程序首先会查找kickstart生成的文件。当找到合适的参数时,就采用找到的参数,当没有找到合适的参数时,才需要安装人员手工干预。
	如果kickstart文件涵盖了安装过程中出现的所有需要填写的参数时,安装人员完全可以只告诉安装程序从何处提取ks.cfg文件,然后就去忙自己的事情。等待安装结束后,安装程序会根据ks.cfg中设置的重启选项来重启系统,并结束安装。
注意:
# 一般刚装完一个Linux系统之后都会在/root目录下生成三个文件,这三个文件就包括了系统在安装时都装了什么软件,一些记录等等。
[root@localhost ~]# ls
anaconda-ks.cfg  install.log  install.log.syslog


1.2 什么是PXE

严格地说,PXE并不是一种安装方式,而是一种引导方式。
进行PXE安装的必要条件:
需要安装在计算机中包含一个PXE支持的网卡(NIC),即网卡中必须要有PXE Client.

PXE(Pre-boot Execution Environment)协议使计算机可以通过网络启动,网卡中必须要有PXE芯片。

协议分为client端和server端,PXE client在网卡的ROM中,当计算机引导时,BIOS把PXE client调入内存执行,由PXE client将放置在远端的文件通过网络下载到本地上运行。运行PXE协议需要设置DHCP服务器和TFTP服务器。
DHCP服务器用来给PXE client(将要安装系统的主机)分配一个IP地址,由于是给PXE client分配IP地址,所以在配置DHCP服务器时需要增加相应地PXE设置。此外,在PXE client的ROM中,已经存在了TFTP client。PXE client 通过TFTP协议到server上下载所需要的文件。
所以要配置kickstart需要先配置DHCP服务,TFTP服务和web服务。

1.3 工作原理图

PXE+kickstart原理

clipboard

1.4 实验步骤

1. 实验环境

需要两台虚拟机,一台做所有的配置,另外一台用来做测试。

第一台配置所有的需要配置的文件,添加一块网卡并设置其为仅主机模式。测试机也同样设置为仅主机模式。

2. PXE+KICKSTART批量部署
1. 安装dhcp并配置信息
# 安装dhcp 注意是dhcp 不是dhcpd
[root@localhost ~]# yum -y install dhcp


# 安装完成后需要将配置文件拷贝过来
[root@localhost ~]# cp /usr/share/doc/dhcp*/dhcpd.conf.example /etc/dhcp/dhcpd.conf 

# 修改配置文件的信息,注意自己的ip网段即可
# A slightly different configuration for an internal subnet.
subnet 192.168.100.0 netmask 255.255.255.0{
  range 192.168.100.100 192.168.100.120;
  option domain-name-servers 192.168.100.100;
  option domain-name "internal.example.org";
  option routers 192.168.100.1;
  #option broadcast-address 10.5.5.31;
  default-lease-time 600;
  max-lease-time 7200;
}

# 重启服务查看端口是否打开
[root@localhost ~]# systemctl restart dhcpd
[root@localhost ~]# ss -anplu
UNCONN     0      0                *:67                           *:*                   users:(("dhcpd",pid=8157,fd=8))
UNCONN     0      0         *%virbr0:67                           *:*   

# 在dhcp的配置文件中添加选项命令
# A slightly different configuration for an internal subnet.
subnet 192.168.100.0 netmask 255.255.255.0{
  range 192.168.100.100 192.168.100.120;
  option domain-name-servers 192.168.100.100;
  option domain-name "internal.example.org";
  option routers 192.168.100.1;
  #option broadcast-address 10.5.5.31;
  default-lease-time 600;
  max-lease-time 7200;
  next-server 192.168.100.100;
  filename "pxelinux.0";
}
2. 搭建tftp服务器

让客户端可以下载预安装文件,启动文件

先搭建tftp 并测试tftp是否能够正常工作

# 准备预安装文件
[root@localhost ~]# yum -y install /mnt/Packages/syslinux-4.05-15.el7.x86_64.rpm 
[root@localhost ~]# rpm -ql syslinux | grep pxelinux.0
/usr/share/syslinux/gpxelinux.0
/usr/share/syslinux/pxelinux.0


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

# 查询tftp的配置文件位置
[root@localhost ~]# rpm -ql tftp-server 
/etc/xinetd.d/tftp
/var/lib/tftpboot

# 将pxelinux.0拷贝至/var/lib/tftpboot下
[root@localhost ~]# cp /usr/share/syslinux/pxelinux.0 /var/lib/tftpboot/

3. 拷贝配置文件信息
[root@localhost ~]# mount /dev/cdrom /mnt/
mount: /dev/sr0 is write-protected, mounting read-only

[root@localhost ~]# mkdir /var/lib/tftpboot/pxelinux.cfg
[root@localhost ~]# cd /var/lib/tftpboot/
[root@localhost tftpboot]# ls
pxelinux.0  pxelinux.cfg
[root@localhost tftpboot]# cp /mnt/isolinux/isolinux.cfg /var/lib/tftpboot/pxelinux.
cfg/default
4. 修改配置文件
[root@localhost tftpboot]# vim /var/lib/tftpboot/pxelinux.cfg/default
5. 拷贝内核和初始化文件
[root@manager tftpboot]# cp /mnt/images/pxeboot/{vmlinuz,initrd.img} /var/lib/tftpboot/

# 要列表的话,文件全拷贝
[root@mail tftpboot]# cp /mnt/isolinux/* /var/lib/tftpboot/
6. 配置httpd
# 安装httpd
[root@localhost ~]# yum -y install httpd

# 查看端口
[root@localhost ~]# ss -anplt
LISTEN     0      128         [::]:80                      [::]:*                   users:(("httpd",pid=56585,fd=4),("httpd",pid=56584,fd=4),("httpd",pid=56583,fd=4),("httpd",pid=56582,fd=4),("httpd",pid=56581,fd=4),("httpd",pid=56580,fd=4))
LISTEN     0      128         [::]:22  



[root@localhost ~]# cd /var/www/html/
[root@localhost html]# mkdir iso
[root@localhost html]# mkdir ks
7. 创建ks文件
[root@manager ~]# yum install system-config-kickstart


前提:必须做好yum库 
进入/etc/yum.repo.d/下,创建yum库 
[development]
name=pxe install
baseurl=http://192.168.100.100/iso
gpgcheck=0
enabled=1
注意:这里必须是development,不能是其他的名字
8. 运行并测试
[root@manager ~]# system-config-kickstart
启动后,将相关配置配置好将最后的ks.cfg文件保存在/var/www/html/ks/目录下

挂载光盘或者镜像文件到/pxe/iso目录,形成安装源
[root@manager pxelinux.cfg]# mount /dev/cdrom /var/www/html/iso/


[root@manager pxelinux.cfg]# systemctl restart httpd

使用另一台虚拟机做测试。
9. 实验中需要注意的问题
1.在测试机如果出现
Exiting intel PXE ROM.
Operating system not found

则问题可能是出现在dhcp的网关配置错误

2.如果出现
pxe-e32:tftp open timeout 
则这个问题是xinetd的disabled没有选择no
[root@localhost ~]# vim /etc/xinetd.d/tftp 
service tftp
{
        socket_type             = dgram
        protocol                = udp
        wait                    = yes
        user                    = root
        server                  = /usr/sbin/in.tftpd
        server_args             = -s /var/lib/tftpboot
        disable                 = no
        per_source              = 11
        cps                     = 100 2
        flags                   = IPv4
}


3.如果出现
arp timeout

则可能是自己新添加的网卡和原网卡ip地址冲突。

4. 如果出现安装过程中全程是黑屏状态,则问题是因为没有选择KICKSTART安装引导程序。

2. 注意事项

一些实验中需要用到的端口号

http :80
dhcp :67
tftp :69
在每次启动相关服务时,要时刻注意自己的端口号是否打开或者被占用

2.cobbler

1. cobbler简介

​ 网络安装服务器套件 Cobbler(补鞋匠)从前,我们一直在做装机民工这份很有前途的职业。自打

若干年前 Red Hat 推出了 Kickstart,此后我们顿觉身价倍增。不再需要刻了光盘一台一台地安装

Linux,只要搞定 PXE、DHCP、TFTP,还有那满屏眼花缭乱不知所云的 Kickstart 脚本,我们就

可以像哈里波特一样,轻点魔棒,瞬间安装上百台服务器。这一堆花里胡哨的东西可不是一般人

都能整明白的,没有大专以上学历,通不过英语四级, 根本别想玩转。总而言之,这是一份多么

有前途,多么有技术含量的工作啊。很不幸,Red Hat 最新(Cobbler项目最初在2008年左右发

布)发布了网络安装服务器套件 Cobbler(补鞋匠),它已将 Linux 网络安装的技术门槛,从大专以

上文化水平,成功降低到初中以下,连补鞋匠都能学会。对于我们这些在装机领域浸淫多年,经

验丰富,老骥伏枥,志在千里的民工兄弟们来说,不啻为一个晴天霹雳。

2. 工作原理

img

3. cobbler核心组件

DISTROS
PROFILE
SYSTEMS
REPOS
KICKSTARTS

Distribution  每一个distribution就相当于仓库(存放的一个发行版镜像)

Repository:指定用户去那里访问distribution安装时所需要的程序的一个地址。 

Profile:指定那一个文件对应的Distribution仓库来定义的(把repositorise和distribution合并起来并附加一个kickstart文件,从而提供了一个自动化安装的过程)porfile可以有多个实现不同的安装环境

System:指定IP、MAC和profile安装时是那个(不是必须的组件 ) 

4. 安装过程

1. DHCP配置

# 安装dhcpd,进行相关配置。上述的KICKSTART已经配置过所以可以直接拿来用

[root@server cobbler]# yum -y install dhcpd

[root@server cobbler]# cp /usr/share/doc/dhcp-4.1.1/dhcpd.conf.sample /etc/dhcp/dhcpd.conf

# 在dhcp的配置文件中添加选项命令
# A slightly different configuration for an internal subnet.
subnet 192.168.100.0 netmask 255.255.255.0{
  range 192.168.100.100 192.168.100.120;
  option domain-name-servers 192.168.100.100;
  option domain-name "internal.example.org";
  option routers 192.168.100.1;
  #option broadcast-address 10.5.5.31;
  default-lease-time 600;
  max-lease-time 7200;
  next-server 192.168.100.100;
  filename "pxelinux.0";
}

2. tftp配置

# 安装一下包需要使用网络源

root@server cobbler]# yum install epel-*

[root@server cobbler]# yum -y install cobbler cobbler-web pykickstart debmirror

[root@server cobbler]# systemctl restart cobblerd

[root@server cobbler]# netstat -anplt | grep 25151

tcp 0 0 127.0.0.1:25151 0.0.0.0:* LISTEN 4873/python2

[root@server cobbler]# systemctrl restart httpd

[root@server cobbler]# setenforce 0

[root@server cobbler]# cobbler check

​ 在将所有的安装包安装完毕之后使用cobbler check命令可以查看cobbler相关配置问题。只有解决的全部的问题才可以进行下一步操作。

# 使用cobbler check命令可以检测存在的问题

The following are potential configuration items that you may want to fix:

# 1.修改/etc/cobbler/settings文件的server参数的值为提供cobbler服务的主机对应的ip地址
1 : The 'server' field in /etc/cobbler/settings must be set to something other than localhost, or kickstarting features will not work. This should be a resolvable hostname or IP for the boot server as reachable by all machines that will use it.

# 2.修改/etc/cobbler/settings文件的next_server参数的值为提供PXE服务的主机的对应IP地址
2 : For PXE to be functional, the 'next_server' field in /etc/cobbler/settings must be set to something other than 127.0.0.1, and should match the IP of the boot server on the PXE network.

# 3.设置selinux
3 : SELinux is enabled. Please review the following wiki page for details on ensuring cobbler works correctly in your SELinux environment:

https://github.com/cobbler/cobbler/wiki/Selinux

# 4.如果当前节点可以访问互联网,执行“cobbler get-loader”命令下载pxelinux.0,menu.c32,elilo.efi, 或yaboot文件,否则,需要安装syslinux程序包,而后复制/usr/share/syslinux/中的 pxelinux.0,menu.c32等文件至/var/lib/cobbler/loaders目录中
4 : some network boot-loaders are missing from /var/lib/cobbler/loaders, you may run 'cobbler get-loaders' to download them, or, if you only want to handle x86/x86_64 netbooting, you may ensure that you have installed a *recent* version of the syslinux package installed and can ignore this message entirely. Files in this directory, should you want to support all architectures, should include pxelinux.0, menu.c32, elilo.efi, and yaboot. The 'cobbler get-loaders' command is the easiest way to resolve these requirements.

# 5.将/etc/xinetd.d/rsync中的disable改为no,或者执行“chkconfig rsync on”
5 : change 'disable' to 'no' in /etc/xinetd.d/rsync

# 6.设置iptables
6 : since iptables may be running, ensure 69, 80/443, and 25151 are unblocked

# 7.注释/etc/debmirror.conf文件中的“@dists="sid";”一行
7 : comment out 'dists' on /etc/debmirror.conf for proper debian support

# 8.注释/etc/debmirror.conf文件中的“@arches="i386";”一行
8 : comment out 'arches' on /etc/debmirror.conf for proper debian support

# 9.执行“openssl passwd -1 -salt $(openssl rand -hex 4)”生成密码,并用其替换/etc/cobbler/settings文件中default_password_crypted参数
9 : The default password used by the sample templates for newly installed machines (default_password_crypted in /etc/cobbler/settings) is still set to 'cobbler' and should be changed, try: "openssl passwd -1 -salt 'random-phrase-here' 'your-password-here'" to generate new one

# 10.安装cam和fance-agents来实现电源管理
10 : fencing tools were not found, and are required to use the (optional) power management features. install cman or fence-agents to use them

Restart cobblerd and then run 'cobbler sync' to apply changes.

如上各问题的解决办法

# 1.修改/etc/cobbler/settings文件的server参数的值为提供cobbler服务的主机对应的ip地址
# 2.修改/etc/cobbler/settings文件的next_server参数的值为提供PXE服务的主机的对应IP地址
[root@server cobbler]# vim settings
next_server: 192.168.100.100
server: 192.168.100.100
将这两个地址修改为自己的地址,默认地址是127.0.0.1

# 3.设置selinux
[root@server cobbler]# vim /etc/selinux/config
disabled

# 4.如果当前节点可以访问互联网,执行“cobbler get-loader”命令下载pxelinux.0,menu.c32,elilo.efi, 或yaboot文件,否则,需要安装syslinux程序包,而后复制/usr/share/syslinux/中的 pxelinux.0,menu.c32等文件至/var/lib/cobbler/loaders目录中
[root@server cobbler]#  cobbler get-loaders

或者

本地解决,没有互联网(但是依然有错误提示)
[root@server cobbler]# yum install syslinux
[root@server cobbler]# cp /usr/share/syslinux/pxelinux.0 /var/lib/cobbler/loaders/
[root@server cobbler]# cp /usr/share/syslinux/menu.c32 /var/lib/cobbler/loaders/

# 5.将/etc/xinetd.d/rsync中的disable改为no,或者执行“chkconfig rsync on”
[root@server cobbler]# yum install rsync
[root@server cobbler]# vim /etc/xinetd.d/rsync
disabled
[root@server cobbler]# systemctl restart rsyncd
[root@server cobbler]# systemctl enable rsyncd


# 6.设置iptables
关闭防火墙

# 7.注释/etc/debmirror.conf文件中的“@dists="sid";”一行
# 8.注释/etc/debmirror.conf文件中的“@arches="i386";”一行
[root@server cobbler]# vim /etc/debmirror.conf
#@dists="sid";
#@arches="i386";


# 9.执行“openssl passwd -1 -salt $(openssl rand -hex 4)”生成密码,并用其替换/etc/cobbler/settings文件中default_password_crypted参数

[root@server cobbler]# openssl passwd -1 -salt `openssl rand -hex 4` "redhat"

$1$52f588d1$D54aRU20YQQHgAQfE1poG/

[root@server cobbler]# vim settings

default_password_crypted: "$1$52f588d1$D54aRU20YQQHgAQfE1poG/"


# 10. 使用cobbler check命令可以检测存在的问题
[root@server cobbler]# yum install fence-agents

[root@server cobbler]# [systemctl enable httpd](interm)

[root@server cobbler]# systemctl enable rsyncd

[root@server cobbler]# systemctl enable cobblerd

[root@server cobbler]# cobbler sync 同步配置文件

[root@server cobbler]# ls /var/lib/t[ftpboot/](ftpboot/)

boot grub memdisk ppc pxelinux.cfg

etc images menu.c32 pxelinux.0 s390x

image-20201207192530840

3. 导入安装树

[root@server ~]# cobbler import --name="centos7.7-x86_64" --path=/mnt

可以通过网页查询

image-20201207192940282

当网页不能查询一直显示不出来的时候,解决方法:

在vmware中的网络选项把自己的ip地址网段设置为仅主机的网段,然后就可以进行从网页上查看。

[root@server ~]# cobbler distro list

centos7.7-x86_64

4. 生成kickstart文件

[root@server ~]# cp /var/www/html/ks/ks.cfg /var/lib/cobbler/kickstarts/


url --url="[http://192.168.100.100/cobbler/ks_mirror/centos7.7-x86_64"](http://172.16.110.1/cobbler/ks_mirror/centos7.7-x86_64)

5. 定义profile


[root@server ~]# cobbler profile add --name=centos7.7-x86_64-basic --distro=centos7.7-x86_64 --kickstart=/var/lib/cobbler/kickstarts/ks.cfg

[root@server ~]# cobbler profile list

centos7.7-x86_64

centos7.7-x86_64-basic

[root@server ~]# cobbler profile remove --name=centos7.7-x86_64

[root@server ~]# cobbler profile list

centos7.7-x86_64-basic

[root@server cobbler]# cobbler list 查看所有设定组件


6. 修改对应的kickstart文件

[root@server cobbler]# cobbler profile edit --name centos7.7-x86_64 --distro=centos7.7-x86_64 --kickstart=/var/lib/cobbler/kickstarts/ks.cfg

7. 注意事项

# 写完 ks 文件之后,先通过 validateks 测试一下有没有语法错误

# cobbler validateks

# ks文件中不能有中文

5. CobblerWeb界面

1. 设置验证方式

[root@server cobbler]# vim /etc/cobbler/modules.conf

[authentication]

module = authn_pam

[root@server cobbler]# useradd cobuser

[root@server cobbler]# passwd cobuser

[root@server cobbler]# vim /etc/cobbler/users.conf

[admins]

admin = "cobuser"

[root@server cobbler]# service cobblerd restart

2. 登录测试

https://192.168.100.100/cobbler_web

网页测试显示如下结果则为成功

image-20201208094949620

使用设置的账户名密码进行登录即可

image-20201208094511810

​ 使用另一台虚拟机测试,进入的时候点击电源,打开电源进入固件,将选项选择到最上面,然后保存退出进行安装。出现以下界面则为成功

image-20201208094220654

注:
如果出现进入时一直显示dhcp旋转则说明dhcp没有启动,重新启动dhcp服务,重新启动测试机既可以
成功进入安装
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

脑子是空的啊

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值