基于Cobbler的系统自动化安装部署——Cobbler的安装部署实践

基于Cobbler的系统自动化安装部署------原理https://blog.csdn.net/xiaochenXIHUA/article/details/159200419?spm=1001.2014.3001.5501

一、Cobbler的安装

1.1、Cobbler安装前的准备内容

|--------|---------------------------------------------|
| 序号 | Cobbler安装前的准备内容 |
| 1 | 操作系统:RHEL9或红帽系系统(如:Almalinux9、Rockylinux9等) |
| 2 | IP地址:设置为静态IP (如:192.168.1.35) |
| 3 | Cobbler版本:cobbler3.3.X |
| 4 | 关闭防火墙、关闭SELinux、配置yum源、该服务器可上网。 |
[Cobbler安装前的准备内容]

bash 复制代码
#1-关闭防火墙命令
#1.1-临时停止防火墙
systemctl stop firewalld.service
#1.2-永久停止防火墙
systemctl disable firewalld.service


#2-关闭SELinux
#2.1-获取当前SELinux的状态(若结果显示【enforcing】表示开启了SELinux需要禁用)
getenforce
#2.2-临时禁用SELinux
setenforce 0
#2.3-永久禁用SELinux(打开SELinux的配置文件,且将【SELINUX=enforcing】修改为【SELINUX=disabled】)
vi /etc/selinux/config


#3-配置yum源(如:我这里将Almalinux9的yum源修改为阿里云的)
  sed -e 's|^mirrorlist=|#mirrorlist=|g' \
      -e 's|^# baseurl=https://repo.almalinux.org|baseurl=https://mirrors.aliyun.com|g' \
      -i.bak \
      /etc/yum.repos.d/almalinux*.repo

dnf makecache

1.2、安装Cobbler

bash 复制代码
#安装Cobbler3.3.7并启动
yum install -y epel-release
yum install -y cobbler-3.3.7 dhcp-server pykickstart httpd yum-utils tftp-server
systemctl restart httpd cobblerd
systemctl enable httpd cobblerd

1.3、Cobbler的目录结构

|------------------|--------------------------------|----------------------------------------|
| Cobbler的模块 | 具体路径与文件 | 说明 |
| Cobbler的配置文件 | /etc/cobbler | 是Cobbler的配置文件目录 |
| Cobbler的配置文件 | /etc/cobbler/settings.yaml | 是Cobbler的主配置文件,文件格式是yaml;且是使用python编写的 |
| Cobbler的配置文件 | /etc/cobbler/dhcp.template | DHCP服务的配置模板 |
| |||
| Cobbler的数据目录 | /var/lib/cobbler | 是Cobbler的数据目录 |
| Cobbler的数据目录 | /var/lib/cobbler/templates | 默认存放kickstart文件(即:各系统自动安装的引导文件) |
| Cobbler的数据目录 | /var/lib/cobbler/loaders | 存放的各种引导程序 |
| |||
| 系统镜像安装目录 | /var/www/cobbler | 是各种系统镜像的安装目录 |
| 系统镜像安装目录 | /var/www/cobbler/distro_mirror | 是导入的系统镜像列表 |
| 系统镜像安装目录 | /var/www/cobbler/images | 是导入的系统镜像启动文件 |
| |||
| Cobbler日志目录 | /var/log/cobbler | 是Cobbler的日志目录 |
| Cobbler日志目录 | /var/log/cobbler/install.log | 是各客户端系统的安装日志 |
| Cobbler日志目录 | /var/log/cobbler/cobbler.log | 是Cobbler的日志 |
[Cobbler的目录结构解析]

二、Cobbler的配置

2.1、检查Cobbler的环境是否正常

bash 复制代码
#1-检查Cobbler的环境是否正常命令(初次安装好后检查会有很多的内容需要修复,我们逐一修复)
cobbler check

2.2、修复Cobbler的异常环境

2.2.1、解决Cobbler主配置文件IP问题

bash 复制代码
#解决"1: The 'server' field in /etc/cobbler/settings.yaml must be set to something other than localhost, or automatic installation 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_v4' field in /etc/cobbler/settings.yaml 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: For PXE to be functional, the 'next_server_v6' field in /etc/cobbler/settings.yaml must be set to something other than ::1, and should match the IP of the boot server on the PXE network."问题

#先获取Cobbler所在服务器的IP信息(获取到该主机网卡的IPV4地址与IPV6地址)
ip a

#0-打开Cobbler的主配置文件【/etc/cobbler/settings.yaml】进行如下内容修改
vi /etc/cobbler/settings.yaml

#1-将主配置文件中的【server】后内容修改为cobbler所在主机的IPV4地址(如:192.168.1.35)
server:192.168.1.35

#2-将主配置文件中的【next_server_v4】后内容修改为cobbler所在主机的IPV4地址(如:192.168.1.35)
next_server_v4:192.168.1.35

#3-将主配置文件中的【next_server_v6】后内容修改为cobbler所在主机的IPV6地址(如:2106:813c:2b34:f1a:26c:26ff:fe45:1162)
next_server_v6:2106:813c:2b34:f1a:26c:26ff:fe45:1162

#4-将主配置文件中的DHCP服务开启
manage_dhcp:true
manage_dhcp_v4: true

2.2.2、解决网络引导程序丢失问题

由于cobbler引导程序需要【pxelinux.0(引导文件)】与【menu.c32(菜单文件)】两个文件,而这两个文件是从sysliunx包里面来的。因此需要先安装这个包,然后复制到对应的位置即可;详细操作如下:

bash 复制代码
#解决"4: some network boot-loaders are missing from /var/lib/cobbler/loaders. 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, andmenu.c32."问题

#1-直接安装syslinux
yum install -y syslinux

#2-将安装好的syslinux的内容复制到Cobbler的【/var/lib/cobbler/loaders/】目录下即可
cp /usr/share/syslinux/pxelinux.0 /var/lib/cobbler/loaders/
cp /usr/share/syslinux/menu.c32 /var/lib/cobbler/loaders/

2.2.3、重启Cobbler服务并再次检查环境是否正常

bash 复制代码
#重启Cobbler服务并再次检查环境是否正常
#1-重启Cobbler服务
systemctl restart cobblerd

#2-再次检查Cobbler的环境是否正常(经过检查可以发现目前还有5个异常内容;其中第二个问题,已经解决,可忽略;第三个问题的Cobbler的老版本问题可忽略,第五问题是关于电源管理功能的,是可选项也是直接忽略即可。因此,接下来只用关注解决问题一与问题四即可。)
cobbler check

2.2.4、解决DHCP问题

由于已经将DHCP交给Cobbler进行管理了,因此要配置DHCP的话,只需要修改Cobbler目录下的dhcp模板即可。**注意:**不能直接修改dhcp本身的配置文件,因为Cobbler每次同步都会进行覆盖,因此只能修改【/etc/cobbler/dhcp.template】文件。

bash 复制代码
#解决"service dhcpd is not running"问题

#1-修改/etc/cobbler/dhcp.template文件
vi /etc/cobbler/dhcp.template

#2-【/etc/cobbler/dhcp.template】文件中需修改的内容如下
#【subnet】表示网段。
#【option routers】表示网关。
#【option domain-name-servers】表示DNS
#【option subnet-mask】表示子网掩码
#【range dynamic-bootp】表示DHCP动态分配的IP地址范围(前提是这些IP未被使用,否则会冲突)
subnet 192.168.1.0 netmask 255.255.255.0 {
     option routers             192.168.1.1;
     option domain-name-servers 223.5.5.5;
     option subnet-mask         255.255.255.0;
     range dynamic-bootp        192.168.1.130 192.168.1.254;
     default-lease-time         21600;
     max-lease-time             43200;
     next-server                $next_server_v4;

2.2.5、解决安装系统后root用户的初始密码问题

bash 复制代码
#解决"The default password used by the sample templates for newly installed machines (default_password_crypted in /etc/cobbler/settings.yaml) is still set to 'cobbler' and should be changed, try: "openssl passwd -1 -salt 'random-phrase-here' 'your-password-here'" to generate new one"问题

#1-生成root用户的初始密码,可自定义(如:我这里设置安装好系统root用户的明文初始密码是admin123456;获取到的SSL加密密码是:$1$98fa94df$IEvQ4GUE1S4neDBAm7p5q/)
openssl passwd -1 -salt `openssl rand -hex 4` 'admin123456' 

#2-编辑Cobbler的主配置文件里面的【default_password_crypted】后的值设置为新生成的root用户初始密码
vi /etc/cobbler/settings.yaml
default_password_crypted: "$1$98fa94df$IEvQ4GUE1S4neDBAm7p5q/"

2.2.6、同步配置并重新检查环境是否正常

bash 复制代码
#同步配置、且重启Cobbler服务并重新检查环境是否正常
cobbler sync
systemctl restart cobblerd
cobbler check

2.3、启动TFTP服务

TFTP服务没有额外的特殊配置,只需要启动即可。

bash 复制代码
#启动TFTP服务
systemctl status tftp.socket
systemctl start tftp.socket
systemctl enable tftp.socket


#可查看TFTP目录下的内容
ll var/lib/tftpboot/

三、Cobbler中导入所需的系统镜像

3.1、将所需系统镜像导入到Cobbler中

Cobbler要实现对系统的全自动化安装,还需要安装源;因此还需要导入系统安装介质到Cobbler中(即:先下载需要安装操作系统的iso安装介质并上传到cobbler服务器上;然后再将iso系统镜像文件进行挂载)【这个导入镜像的过程,其实是将iso文件的内容统一拷贝到/var/www/cobbler/distro_mirror目录下,形成一个安装镜像源】。

bash 复制代码
#Cobbler中导入所需的系统镜像操作

#1-将系统镜像上传到指定目录中(如:/data/linuxos)
mkdir -p /data/linuxos
ls

#2-创建系统所挂载的路径并挂载上(如:将/data/linuxos/CentOS-7-x86_64-DVD-2009.iso系统挂载到/data/osimg/centos7目录中)
mkdir -p /data/osimg/centos7
mount -o loop /data/linuxos/CentOS-7-x86_64-DVD-2009.iso /data/osimg/centos7/
ll /data/osimg/centos7/

#3-将镜像导入到Cobbler中(
#--path:指定镜像路径;
#--name:定义安装源名称,可任意指定, 安装源唯一标识通过name参数来定义;
#--arch:指定安装源平台信息,目前支持的选项有:i386、x86_64、arm、aarch64;
#最后显示【TASK COMPLETE】则表示导入完成)
cobbler import --path=/data/osimg/centos7 --name=centos7.9 --arch=x86_64

#4-查看Cobbler中目前导入的镜像(显示结果中主要有三个内容需要关注:
#【distros】表示某个发行版的对象,不同的镜像导入后对应不同的distro(比如:centos7-x86_64)。
#【profiles】是distro的配置文件,一个distro可对应一个或多个profile。默认导入时会为distro生成一个profile。每个profile背后关联一个ks文件,用于决定kickstart安装操作系统时的配置。
#【systems】是system对象不是必须要创建的,但它可以指导cobbler进行更定制化的操作(比如:我们有多个profile文件,需要为不同的机器安装不同配置的操作系统,没有system对象时,需要手动选择profile文件,而通过system对象可以使指定机器使用指定的profile配置))
cobbler list

#5-查看指定的配置文件内容(如:查看名为【centos7.9-x86_64】的配置文件内容;
#从输出可以看到【centos7.9-x86_64】profile关联的ks文件是sample.ks,这个sample.ks默认路径位于【/var/lib/cobbler/templates】下。
#接下来我们要做的,就是基于原始的ks模版文件,进行修改。修改完成后,修改profile中的Kickstart文件路径,使其指向我们自己的ks模版文件。)
cobbler profile report --name=centos7.9-x86_64
ll /var/lib/cobbler/templates

3.2、新增导入镜像的全自动安装ks文件

bash 复制代码
#新增导入镜像的全自动安装配置ks文件(如:centos7系统的全自动安装配置)

#1-进入镜像全自动安装配置目录创建该镜像对应的ks文件
cd /var/lib/cobbler/templates
vi centos7.ks

#【centos7.ks】文件的完整内容如下:
# This kickstart file should only be used with EL > 5 and/or Fedora > 7.
# For older versions please use the sample.ks kickstart file.

#platform=x86, AMD64, or Intel EM64T
# System authorization information
auth  --useshadow  --enablemd5
# System bootloader configuration
bootloader --location=mbr
# Partition clearing information
clearpart --all --initlabel
# Use text mode install
text
# Firewall configuration
firewall --disabled
# Run the Setup Agent on first boot
firstboot --disable
# System keyboard
keyboard us
# System language
lang en_US
# Use network installation
url --url=http://192.168.1.35/cblr/links/centos7.9-x86_64/
# If any cobbler repo definitions were referenced in the kickstart profile, include them here.
$yum_repo_stanza
# Network information
$SNIPPET('network_config')
# Reboot after installation
reboot

#Root password
rootpw --iscrypted $default_password_crypted
# SELinux configuration
selinux --disabled
# Do not configure the X Window System
skipx
# System timezone
timezone  Asia/Shanghai
# Install OS instead of upgrade
install
# Clear the Master Boot Record
zerombr
# Allow anaconda to partition the system as needed
#autopart
part /boot --fstype="xfs" --ondisk=sda --size=2048
part swap --fstype="swap" --ondisk=sda --size=8192
part /var --fstype="xfs" --ondisk=sda --size=20480
part /usr --fstype="xfs" --ondisk=sda --size=30720
part / --fstype="xfs" --ondisk=sda --size=10240
part /data --fstype="xfs" --ondisk=sda --grow --size=1

%pre
$SNIPPET('log_ks_pre')
$SNIPPET('kickstart_start')
$SNIPPET('pre_install_network_config')
# Enable installation monitoring
$SNIPPET('pre_anamon')
%end

%packages
#$SNIPPET('func_install_if_enabled')
@additional-devel
@development
@platform-devel
bash-completion
chrony
dos2unix
kexec-tools
lrzsz
sysstat
tree
vim
wget
git
net-tools
%end

%post --nochroot
$SNIPPET('log_ks_post_nochroot')
%end

%post
$SNIPPET('log_ks_post')
# Start yum configuration
$yum_config_stanza
# End yum configuration
$SNIPPET('post_install_kernel_options')
$SNIPPET('post_install_network_config')
$SNIPPET('func_register_if_enabled')
$SNIPPET('download_config_files')
$SNIPPET('koan_environment')
$SNIPPET('redhat_register')
$SNIPPET('cobbler_register')
# Enable post-install boot notification
$SNIPPET('post_anamon')
# Start final steps
$SNIPPET('kickstart_done')
# End final steps
%end


#2-修改导入镜像使用的自动安装ks文件为自定义的ks文件(如:centos7.ks)
#2.1-查看Cobbler中目前导入的镜像
cobbler list
#2.2-修改Cobbler中导入镜像名称为【centos7.9】的配置文件【centos7.9-x86_64】的全自动安装配置ks文件为【自建的centos7.ks】
cobbler profile edit --name centos7.9-x86_64 --autoinstall=centos7.ks
#查看指定的配置文件内容(如:查看名为【centos7.9-x86_64】的配置文件内容)
cobbler profile report --name=centos7.9-x86_64

使用虚拟机手把手教你安装生产环境Linux系统------以AImaLinux与OpenEuler为例

3.3、让修改后的配置同步并生效及其生成可引导加载程序

bash 复制代码
#生成可引导GRUB2的引导加载程序【在cobbler3版本之后,还需要手动执行如下命令生成GRUB2引导程序】
cd /var/lib/cobbler/loaders/
cobbler mkloaders

#让修改后的配置同步到Cobbler中并生效
cobbler sync
systemctl restart cobblerd

#查看cobblerd、tftp.sock、dhcpd服务是否都正常运行中
systemctl status cobblerd.service 
systemctl status tftp.socket
systemctl status dhcpd

四、测试客户端全自动安装系统

现在找一台全新的服务器或者新建一个虚拟机与我们这里搭建好的Cobbler服务器在同一个网段内(如:我这里是192.168.1网段);然后设置该设备从网络引导是否可以显示【centos7.9-x86_64】并选择该镜像后,耐心等待全自动安装我们部署好的Centos7.9系统即可,如下图所示:

到这里,恭喜你,从零到一实现了全路径的【基于Cobbler的系统自动化安装部署实践】!!!

相关推荐
吠品1 小时前
Zabbix Web界面误报Server未运行的排查与解决
java·服务器·数据库
XMAIPC_Robot1 小时前
软硬协同实时控制|RK3588业务调度+FPGA硬件时序,ethercat实现半导体设备微秒级响应(125us)
linux·arm开发·人工智能·fpga开发
AOwhisky1 小时前
Python 学习笔记(第十五期)——运维自动化(下·后篇):堡垒机实战——paramiko高阶篇
运维·python·学习·云原生·自动化·运维开发
重生的黑客2 小时前
Linux 进程优先级、切换与调度:从孤儿进程到 O(1) 调度模型
linux·运维·服务器·进程优先级·nice
Urbano2 小时前
夹克与商务单西口袋工序自动化技改研究报告
运维·自动化
骑上单车去旅行3 小时前
MD5校验对比脚本
linux·服务器·windows
平生幻3 小时前
Linux 常用命令
linux
期待着20133 小时前
docker 安装 ,在centos7.9
运维·docker·容器
踏月的造梦星球3 小时前
DM8 DSC 单机双实例部署
运维·开发语言·数据库
MXsoft6184 小时前
平台化是智能运维发展的必然趋势吗?
运维