批量无人值守装机(cobbler + pxe+dhcp+tftp+httpd+kickstart)

cho一、cobbler简介

​        本文章所讲的cobbler是基于pxe+kickstart技术的二次封装工具,简化了安装部署流程,增加了对多发行版的支持,并且有独立的web管理页面,极大方便了运维初级人员的学习和使用。

 二、cobbler工作原理

pxe+kickstart工作原理:

        PXE(Pre-boot Execution Environment)是由Intel设计的协议,它可以使计算机通过网络启动。PXE协议分为client和server两端,PXE client在网卡的ROM中,当计算机引导时,BIOS把PXE client调入内存执行,并显示出命令菜单,经用户选择后,PXE client将放置在远端的操作系统通过网络下载到本地运行。PXE在其启动过程中,客户端请求服务器分配IP地址,之后PXE Client使用TFTP Client通过TFTP(Trivial File Transfer Protocol)协议下载启动安装程序所需的文件。

​        PXE网络安装:客户机通过支持PXE的网卡向网络中发送请求DHCP信息的广播请求IP地址等信息,DHCP服务器给客户端提供IP地址和其它信息(TFTP服务器、启动文件等),之后请求并下载安装需要的文件。

​        Kickstart是一种无人值守的安装方式。它的工作原理是在安装过程中记录需要人工干预填写的各种参数,并记录生成一个名为anaconda-ks.cfg的文件。

PXE工作流程:

1. PXE Client 从自己的PXE网卡启动,向本网络中的DHCP服务器索取IP和安装相关文件

2. DHCP 服务器返回分配给客户机的IP地址,以及PXE文件的存放位置(文件一般是放在一台TFTP服务器上)

3. PXE Client 向本网络中的TFTP服务器索取pxelinux.0 文件

4. PXE Client 取得pxelinux.0 文件后之执行该文件

5. 根据pxelinux.0 的执行结果,通过TFTP服务器加载内核和文件系统

6. 进入安装画面, 此时可以通过选择HTTP、FTP、NFS 方式之一进行安装相关软件包

pxe+dhcp+tftp+httpd(ftp|nfs)+kickstart

各部分作用:

pxe:网卡启动

dhcp:分配网络资源 + 告知客户端tftp服务器的地址和要下载的文件名

tftp:共享装机过程中需要的资源(引导程序,装机菜单,内核,驱动,文件系统)

httpd:共享软件包(*.rpm)

kickstart:生成自动装机脚本

cobbler二次封装后的工作原理:

三、cobbler部署流程

1.准备工作        

搞一个大点容量的磁盘,后续空间需求很大!!!

        添加一块新的磁盘,100GB,平均分成两个分区,然后,分别挂载至:/iso 和 /var/www 目录上,然后再进行后续实验。**

1.1 关闭防火墙和SELinux

systemctl stop firewalld

systemctl disable firewalld

#关闭firewalld

setenforce 0

sed -i 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/selinux/config

#关闭SELinux

1.2 配置网卡

vim /etc/sysconfig/network-scripts/ifcfg-ens33

TYPE=Ethernet

PROXY_METHOD=none

BOOTPROTO=none

NAME=ens33

UUID=4b1e5f8a-1eda-4f66-bbb3-119bf51479fc

DEVICE=ens33

ONBOOT=yes

IPADDR=192.168.88.110

PREFIX=24

GATEWAY=192.168.88.2

DNS1=114.114.114.114
systemctl restart network

1.3 配置基础网络yum源和epel扩展yum源(或使用自带的Base网络源)

​
wget -O /etc/yum.repos.d/CentOS-Base.repo https://mirrors.aliyun.com/repo/Centos-7.repo

wget -O /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-7.repo

​
yum clean all

yum makecache

如上图,网络yum源元数据建立时,可能网络原因导致存在部分数据创建失败,导致部分软件找不到软件包,重新建立元数据即可

2.安装cobbler和相关软件

2.1 安装软件

  yum -y install epel-release cobbler cobbler-web tftp-server dhcp httpd xinetd #注意:需先安装epel-release拓展源

2.2 启动&设置开机自启动

systemctl start httpd cobblerd

systemctl enable httpd cobblerd

3.配置cobbler

3.1 检查cobbler配置,根据提示完成修改

$ cobbler check

——————————————————————

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

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 : 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 : change 'disable' to 'no' in /etc/xinetd.d/tftp

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 : enable and start rsyncd.service with systemctl

6 : debmirror package is not installed, it will be required to manage debian deployments and repositories

7 : ksvalidator was not found, install pykickstart

8 : 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

9 : 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.

——————————————————————

3.2 逐个问题解决

问题一&问题二:修改cobbler配置文件,打开DNSDHCP开关,开启pxe选项,修改cobbler服务IP地址以及发送给客户端的tftp服务器IP地址

$ vim /etc/cobbler/settings

allow_dynamic_settings: 1

server: 192.168.88.150

next_server: 192.168.88.150

pxe_just_once: 1

manage_dhcp: 1

#如果系统在其BIOS顺序中首先设置为PXE,则可能出现PXE引导循环。如果PXE在您的BIOS引导顺序中位于首位,则启用此选项,否则禁用此选项。请参阅手册中的——netboot-enabled。

$ systemctl restart cobblerd

#一定要先重启服务然后执行下面两条命令

$ cobbler check
cobbler get-loaders

问题三:解决方法

$ vim  /etc/xinetd.d/tftp

disable = no

问题四:

cobbler get-loaders

#这个是原来的解决方案,但是最近官方做了重大更新,不在提供引导程序的下载功能了,so这个会报错

接下来是这个解决方案报错的解决方案!

#https://github.com/hbokh/cobbler-loaders

下载大神做好的文件

https://raw.githubusercontent.com/hbokh/cobbler-loaders/main/files/cobbler-loaders.tar.gz

yum -y install grub2-efi-x64-modules grub2-pc-modules

tar -xf /root/cobbler-loaders.tar.gz

cd /var/lib/cobbler/loaders/

cp -a /root/cobbler/loaders/* /var/lib/cobbler/loaders

问题五:

systemctl enable rsyncd

systemctl start rsyncd

问题六:忽略即可,debian相关配置

问题七:

yum -y install pykickstart

问题八:

$ openssl passwd -1 -salt 'root' '123456'

$1$root$j0bp.KLPyr.u9kgQ428D10

#以上内容是加密密码,最终在kickstart文件中生效

$ vim /etc/cobbler/settings

default_password_crypted: "$1$root$j0bp.KLPyr.u9kgQ428D10"

问题九:

$ yum -y install fence-agents

3.3 配置cobbler-dhcp

$ vim /etc/cobbler/dhcp.template

subnet 192.168.88.0 netmask 255.255.255.0 {

     option routers             192.168.88.2;

     option domain-name-servers    114.114.114.114;

     option subnet-mask          255.255.255.0;

     range dynamic-bootp         192.168.88.100 192.168.88.254;   

#未列出所有,仅列出了修改内容

systemctl restart cobblerd

3.4 将cobbler控制的各个服务和文件复制到指定位置

#切记,一定要在以上所有的操作都正常完成并生效后再指定以下命令。

$ cobbler sync

——————————————————————

如果又报错:dhcpd -t failed

原因:python文件内命令错误

解决:

cp -a /usr/lib/python2.7/site-packages/cobbler/modules/sync_post_restart_services.py /tmp

cd /tmp

vim sync_post_restart_services.py

#修改前dhcp_restart_command = "service %s restart" % dhcp_service_name

#修改后dhcp_restart_command = "/usr/bin/systemctl restart %s " % dhcp_service_name

python -m compileall  sync_post_restart_services.py

python -O -m compileall  sync_post_restart_services.py

#重新编译

cp -a *  /usr/lib/python2.7/site-packages/cobbler/modules/

#复制粘贴回去

systemctl restart cobbler

cobbler sync

——————————————————————

3.5 将所有服务全部重启一遍

systemctl restart httpd rsyncd dhcpd xinetd cobblerd tftp.socket

systemctl enable httpd rsyncd dhcpd xinetd cobblerd tftp.socket

 四、导入镜像绑定ks文件

1.导入镜像

mkdir /iso/centos7.6/

mount -r /dev/sr0 /iso/centos7.6/

cobbler import --name="CentOS-7.6-x86_64" --path=/iso/centos7.6

#此步骤极其缓慢,主要原因是镜像太大了

#cobbler会将镜像中的所有安装文件拷贝到本地一份,放在/var/www/cobbler/ks_mirror下的CentOS-7.2-x86_64目录下。因此/var/www/cobbler目录必须具有足够容纳安装文件的空间。

ll /var/www/cobbler/ks_mirror/

cobbler profile list

#列出所有导入的镜像列表

2.生成ks模板文件

cd /var/lib/cobbler/kickstarts/

#可以直接导入之前pxe用的文件

vim centos7.cfg

auth --enableshadow --passalgo=sha512

url --url=http://192.168.47.130/cobbler/ks_mirror/CentOS-7.6-x86_64/

graphical

firstboot --enable

ignoredisk --only-use=sda

keyboard --vckeymap=us --xlayouts='us'

lang en_US.UTF-8

network  --bootproto=dhcp --device=ens33 --onboot=on --ipv6=auto --no-activate

network  --hostname=localhost.localdomain

rootpw --iscrypted $6$LO0oxqvmJfQOFW7p$cgV.4sVUp7UgEDSwUToHSIhRCmX4ETF2S/CoRmhnf.NHkCJvS1.Or8HENDSPkCrfnCgUlnVdxNWR0iK20GZF70

firewall --disabled

selinux --disabled

services --disabled="chronyd"

timezone Asia/Shanghai --isUtc --nontp

bootloader --append=" crashkernel=auto" --location=mbr --boot-drive=sda

clearpart --none --initlabel

part /boot --fstype="xfs" --ondisk=sda --size=1024

part swap --fstype="swap" --ondisk=sda --size=2048

part / --fstype="xfs" --ondisk=sda --grow --size=1

%packages

@^web-server-environment

@base

@core

@web-server

kexec-tools

gcc

lrzsz

%end

%post --interpreter=bash

cd /etc/yum.repos.d/

mkdir back

mv C* back/

echo "[centos7]

name=centos7 repo for kickstart

baseurl=http://192.168.47.130/cobbler/ks_mirror/CentOS-7.6-x86_64/

enable=1

gpgcheck=0" >> CentOS-Media.repo

%end

reboot

#修改为指定目录

Vim /var/lib/tftpboot/pxelinux.cfg/default

MENU DEFAULT加到CentOS-7.6选项下

并且修改OUTTIMEOUT选项将local修改为CentOS-7.6-x86_64  #为了超时后自动选择安装CentOS7

3.查看指定镜像的profile配置文件,将ks文件绑定到指定镜像

cobbler profile report --name=CentOS-7.6-x86_64

#根据提示修改内容,将自定义ks文件绑定到该镜像上

cobbler profile edit --name=CentOS-7.6-x86_64 --kickstart=/var/lib/cobbler/kickstarts/centos7.cfg

4.创建测试虚拟机进行验证

注意:虚拟机的内存必须大于2G,否则会出现无法安装的情况

五、设置web管理终端

修改cobbler的web验证模式

grep -A 1 "\[authentication\]" /etc/cobbler/modules.conf

[authentication]

module = authn_configfile

$ htdigest -c /etc/cobbler/users.digest Cobbler admin

Adding password for admin in realm Cobbler.

New password:

Re-type new password:

使用浏览器登陆cobbler_web管理终端

https://192.168.88.110/cobbler_web

#此处必须使用https协议进行登陆

进入web管理首页

导入镜像文件

```

导入镜像文件有个前置条件,需要创建目录,并将光盘文件进行挂载

mount -o loop /root/CentOS6.8-xxxxx.iso /iso/centos6.8

```

添加ks模板文件

将ks文件和指定的镜像绑定在一起

最后执行配置同步

cobbler配置相关目录

六、相关目录和命令帮助

配置文件目录:

/etc/cobbler

/etc/cobbler/settings : cobbler 主配置文件

/etc/cobbler/iso/: iso模板配置文件

/etc/cobbler/pxe: pxe模板文件

/etc/cobbler/power: 电源配置文件

/etc/cobbler/user.conf: web服务授权配置文件

/etc/cobbler/users.digest: web访问的用户名密码配置文件

/etc/cobbler/dhcp.template : dhcp服务器的的配置末班

/etc/cobbler/dnsmasq.template : dns服务器的配置模板

/etc/cobbler/tftpd.template : tftp服务的配置模板

/etc/cobbler/modules.conf : 模块的配置文件

数据目录:

/var/lib/cobbler/config/: 用于存放distros,system,profiles 等信 息配置文件

/var/lib/cobbler/triggers/: 用于存放用户定义的cobbler命令

/var/lib/cobbler/kickstart/: 默认存放kickstart文件

/var/lib/cobbler/loaders/: 存放各种引导程序 ,镜像目录

/var/www/cobbler/ks_mirror/: 导入的发行版系统的所有数据

/var/www/cobbler/images/ : 导入发行版的kernel和initrd镜像用于 远程网络启动

/var/www/cobbler/repo_mirror/: yum 仓库存储目录

日志目录:

/var/log/cobbler/installing: 客户端安装日志

/var/log/cobbler/cobbler.log : cobbler日志

cobbler commands 介绍:

cobbler check 核对当前设置是否有问题

cobbler list 列出所有的cobbler元素

cobbler report 列出元素的详细信息

cobbler sync 同步配置到数据目录,更改配置最好都要执行下

cobbler reposync 同步yum仓库

cobbler distro 查看导入的发行版系统信息

cobbler system 查看添加的系统信息

cobbler profile 查看配置信息

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值