Cobbler自动化装机

作者:zhangyunlong 发布时间: 2023-06-16 阅读量:9 评论数:0

关于Cobbler

http://cobbler.github.io

https://github.com/cobbler/cobbler

Cobbler是一款自动化操作系统部署的实现工具,由Python语言开发,是对PXE的二次封装。融合多种特性,提供了CLI和Web的管理形式。同时,Cobbler也提供了API接口,方便二次开发使用。它不仅可以安装物理机,同时也支持kvm、xen虚拟化、Guest OS的安装。另外,它还能结合Puppet等集中化管理软件,实现自动化管理。

Cobbler的作用:

· 服务器上架后,可以手动选择需要安装的系统(如:Centos6.8 或 Centos 7.3)

· 服务器上架后,能够根据需求,安装配置操作系统(如:修改IP地址、主机名、选择安装包)

· 系统安装后,可以自定义的执行脚本,完成系统基础软件初始化

· 可以当内部YUM源,并在系统安装时进行初始化

· 可以重装系统

· Cobbler支持API,可以融合到自建运维平台中

· Cobbler支持网卡的路由配置、DNS配置、bonding

Cobbler的原理:

Cobbler是通过将DHCP、TFTP、DNS、HTTP等服务进行集成,创建一个中央管理节点,其可以实现的功能有配置服务,创建存储库,解压缩操作系统媒介,代理或集成一个配置管理系统,控制电源管理等。 Cobbler的最终目的是实现无需进行人工干预即可安装机器。

image-UUrN.png

Server端执行流程:

· 第一步,启动Cobbler服务

· 第二步,进行Cobbler错误检查,执行cobbler check命令

· 第三步,进行配置同步,执行cobbler sync命令

· 第四步,复制相关启动文件文件到TFTP目录中

· 第五步,启动DHCP服务,提供地址分配

· 第六步,DHCP服务分配IP地址

· 第七步,TFTP传输启动文件

· 第八步,Server端接收安装信息

· 第九步,Server端发送ISO镜像与Kickstart文件

Client端执行流程:

· 第一步,客户端以PXE模式启动

· 第二步,客户端获取IP地址

· 第三步,通过TFTP服务器获取启动文件

· 第四步,进入Cobbler安装选择界面

· 第五步,客户端确定加载信息 

· 第六步,根据配置信息准备安装系统 

· 第七步,加载Kickstart文件

· 第八步,传输系统安装的其它文件 

· 第九步,进行安装系统


CobblerServer安装

1. 系统安装

  • 以CentOS-7为例:

CentOS版本号: CentOS Linux release 7.9.2009 (Core)

CentOS内核版本: Linux version 3.10.0-1160.83.1.el7.x86_64 (mockbuild@kbuilder.bsys.centos.org)

CentOS7镜像下载地址:https://mirrors.tuna.tsinghua.edu.cn/centos/7.9.2009/isos/x86_64/CentOS-7-x86_64-DVD-2009.iso

服务器所属网段为192.168.228

子网IP为192.168.228.0

网关IP为192.168.228.2

 

  • 使用物理机或者虚拟机安装CobblerServer

本次示例为虚拟机:

VMware信息: VMware® Workstation 12 Pro 版本:12.5.4 build-5192485

分配1GB内存,20GB硬盘,网络适配器选择NAT模式,CD/DVD选择使用ISO映像文件

 

注意:使用VMware虚拟机安装可能遇到不兼容问题,原因是宿主机开启了Hyper-V

解决方法参考https://blog.csdn.net/qq_37463791/article/details/119346322

宿主机关闭Hyper-V后,使用此服务的程序将无法启动,比如DockerDesktop

图片2.png

注意: 低版本VMware在部分机器上安装会有蓝屏问题, VMware17版本有兼容性优化, 推荐.

image-QUOS.png 注意: 低版本vmware可能遇到此问题, 升级版本即可.

2. 配置静态IP

编辑网卡配置,将服务器设置为静态IP:192.168.228.133

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

修改内容为:

# 使用静态ip
BOOTPROTO=none
# 网卡名
NAME=ens33
# 网卡设备名
DEVICE=ens33
# 系统启动时激活网卡
ONBOOT=yes
# 静态ip
IPADDR=192.168.228.133
# 子网掩码
NETMASK=255.255.255.0
# 网关
GATEWAY=192.168.228.2
DNS服务器地址,可配置多个,以DNS1,DNS2以此类推
DNS1=114.114.114.114

安装ifconfig查看工具,重启网卡

yum -y install net-tools.x86_64
service network restart
# 检查静态ip是否正确:
ifconfig
# 如果是虚拟机安装,在主机侧ping虚拟机是否畅通
ping 192.168.228.133

3. 配置主机名并关闭防火墙

# 主机名设置为cobblerServer
hostnamectl set-hostname cobblerServer
# 关闭防火墙,并禁用防火墙
systemctl stop firewalld && systemctl disable firewalld

# 设置SELinux 成为permissive模式 临时关闭selinux防火墙
setenforce 0

# 永久关闭selinux防火墙
vi /etc/selinux/config
SELINUX=disabled
init 6(centOS-7.6中删除此行, 否则yum源更新失败, 其他版本写入此行)

 

注意:防火墙状态状态不对的需要重装防火墙

systemctl stop firewalld
yum remove firewalld
yum install firewalld -y
systemctl restart firewalld
systemctl enable firewalld

4. 配置yum源

注意,在没有外网环境下,此处可以指定别的私有yum仓库信息

# 安装wget下载工具,下载国内yum仓库信息
yum install wget
wget http://mirrors.aliyun.com/repo/Centos-7.repo
wget http://mirrors.163.com/.help/CentOS7-Base-163.repo
# 安装第三方源
yum -y install epel-release
# 清除yum缓存
yum clean all
# 建立包信息缓存
yum makecache
# 查看所有可用仓库
yum repolist enable
# 查看拥有的仓库
yum repolist all
# 升级所有包,软件,以及内核
yum update -y

5. 安装cobbler

注意: 在没有外网环境下,可通过ftp上传这些包进行编译安装(make && make install)

# 安装cobbler,cobbler-web管理端,以及相关依赖包
yum -y install cobbler httpd rsync tftp-server xinetd dhcp pykickstart fence-agents cobbler-web vim lrzsz net-tools syslinux

6. 配置tftp

如果配置不成功,需要重装tftp-server和xinetd服务

vim /etc/xinetd.d/tftp
# 将disable=yes改为no,取消禁用,允许在服务器与客户机之间进行简单文件传输

7. 配置http

vim /etc/httpd/conf/httpd.conf
# 将ServerName的值改为此服务器分配的ip,Apache网络服务器配置,相当于nginx的server块配置,用于cobbler_web管理页面访问

8. 生成系统默认装机密码

注意,确认系统已经安装有openssl,否则yum -y install openssl

# 使用openssl加密生成自动装机后客户机的root用户密码,暂存生成的密文密码
openssl passwd -1 -salt 'root' 'root'

9. 修改cobbler配置文件

vim /etc/cobbler/settings
# 允许Cobbler管理dhcp, cobbler会根据/etc/cobbler/dhcp.template生成dhcp.conf文件,此文件是cobbler管理dhcp的模板,确保dhcp分配的地址和cobbler在同一网段
manage_dhcp: 1
# 让cobbler管理dhcp和rsync,后面用于同步更新配置信息[cobbler sync]
manage_tftpd: 1
manage_rsync: 1
# DHCP/PXE引导文件被下载的TFTP服务IP,与server设置为同一IP
next_server: 192.168.228.133
# cobbler服务的主机IP地址
server: 192.168.228.133
default_password_crypted: "上一步生成的加密密码"

10. 配置dhcp

cobbler管理的dhcp模板配置,需要配置可分配的网段,路由等信息

vim /etc/cobbler/dhcp.template

subnet 192.168.228.0 netmask 255.255.255.0 {
option routers             192.168.228.2;
#     option domain-name-servers 192.168.228.1;
option subnet-mask         255.255.255.0;
range dynamic-bootp        192.168.228.100 192.168.228.254;
default-lease-time         21600;
max-lease-time             43200;
next-server                $next_server;

11. 启动相关服务

启动web服务器,tftp文件传输服务,cobbler服务,同步配置服务, 并设置系统服务自启

systemctl start httpd
systemctl start xinetd
systemctl start cobblerd
systemctl start rsyncd
systemctl start tftp
systemctl enable httpd
systemctl enable xinetd
systemctl enable cobblerd
systemctl enable rsyncd
systemctl enable tftp

12. 安装Debian相关文件(按需选择, 可跳过)

yum -y install debmirror
vi /etc/debmirror.conf
# 编辑配置文件,注释掉
#@dists="sid";
#@arches="i386";

注意: CentOS属于redhat系列,与Linux另一主流分支的Debian有差异,如果客户机安装Debian系列系统,需要执行此操作, 不安装则会在cobbler check时出现报错:

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

13. 重启服务器, 然后检查cobbler配置

reboot
cobbler check

注意:如果遇到下列问题,解决后需要同步配置使之生效,命令为cobbler sync

可能遇到的问题以及解决办法:

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.

解决方法:参考第9步,cobbler的server不可以配置为localhost或者127.0.0.1形式,需要指定为网段内的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.

解决方法: 参考第9步,pxe引导下载文件的tftp地址,next_server配置不正确

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

解决方法:参考第3步,防火墙问题

4 : change 'disable' to 'no' in /etc/xinetd.d/tftp

解决方法: 参考第6步,启用tftp服务

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

解决方法: 需要cobbler get-loaders命令解决,在CentOS7中安装cobbler没有此命令,CentOS8中有,可以选择忽略,也可以从CentOS8中拷贝到此服务器的/var/lib/cobbler/loaders/目录下

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

解决方法:参考第12步

7 : 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步,cobbler配置文件中的密文密码配置问题

8 : fencing tools were not found, and are required to use the (optional) power management features. install cman or fence-agents to use them

解决方法: 安装电源管理工具yum -y install fence-agents, 可忽略

Cobbler自动装机

1. 登陆cobbler管理页

地址:https://192.168.228.133/cobbler_web 账号密码: cobbler/cobbler

2. 导入ISO镜像到cobbler

上传iso文件到/opt目录下,只读挂载后导入到cobbler的镜像列表中

以CentOS-7.9镜像为例:

mount /opt/CentOS-7_64.iso /mnt/

cobbler import --name="centos7.9" --path=/mnt

其中--name指的是安装源定义的名字

--path指的是ISO镜像挂载的位置

--arch指定安装源是32位或64位, 目前支持x86,x86_64, ia64

 

注意: 导入失败cobbler不会删除加载的镜像信息, 长久累计在/var/www/cobbler/ks_mirror目录下

注意: cobbler导入镜像时会进行镜像签名校验, 自定义镜像校验无法通过, 需要修改/var/lib/cobbler/distro_signatures.json, 添加一条匹配所有的记录

注意, arm版本的镜像必须指--arch

3. 同步cobbler配置信息

同步命令为cobbler sync

查看是否导入成功,控制台打印信息中distros和profile列表出现关于此镜像的信息

命令为cobbler list

4. KS文件定制

登录cobbler_web管理页, 选择Kickstart Templates, 点击create new Kickstart Templates创建新的ks文件.

保存后点击profile, 选择一个镜像, 点击编辑, 将ks文件切换为新创建的ks文件, 保存

以安装net-tools.x86_64为例: 

新的ks文件在%packages和%end之间添加内容: net-tools.x86_64

 

关于ks文件常用内容说明:

软件包段: 

以%packages开头, 以%end结尾, 在安装过程中默认安装的包, 安装软件会自动分析依赖关系

脚本段: 

以%post开头, 以%end结尾, 在安装完系统后执行的相关linux命令或脚本

以%pre开头, 以%end结尾, 在安装系统之前执行的相关linux命令或脚本

 

Ks文件格式检查工具: 

yum install pykickstart

ksvalidator centos-xxx-ks.cfg

5. cobbler自动装机

使用虚拟机装机:

新建虚拟机,保持和cobblerServer处于同一个网段

不使用ISO镜像文件,选择使用物理驱动器

网络适配器选择NAT模式

确保CobblerServer正常启动,开机,等待载入cobbler信息,选择要安装的系统镜像,开始自动装机,装机完成后,使用安装CobblerServer过程中配置的密文密码的明文登录

image-mgHk.png

图片1.png

注意:

如果启动过程中一直不加载cobbler信息,如下图,参考CobblerServer安装中的第13节,检查cobbler状态,解决问题后同步配置,重新进行装机.

图片3.png

如果检查cobblerServer正常,依然遇到这个问题,检查cobbler_web页面能否进入,ssh是否正常,此问题与VMware网卡有关,关闭所有虚拟机,点击VMware的编辑->虚拟网络编辑器,选中NAT模式,还原默认设置,再将网段修改为CobblerServer所使用的网段,应用后重启CobblerServer虚拟机,继续重新装机.

使用虚拟机启动时,由于没有系统镜像文件,选择的是物理驱动,而宿主机可能没有光驱设备,会出现无法连接虚拟设备ide1:0,关闭忽略即可(部分设备可能会蓝屏,与硬件设备和VMware版本有关, 目前VMware17进行了兼容处理, 暂未发现蓝屏)

图片4.png图片5.png

客户机内存最少分配2GB, 否则在装机时会报错:no space left on device.

图片6.png

部分定制化系统需要更高的内存要求, 比如ctyunos需要至少4GB, 否则装机过程中会提示CPU禁用相关问题.

6. cobbler定制化自动装机

创建虚拟机过程参考第5步, 创建之后编辑网络适配器,获取此客户机的mac地址(物理机直接获取mac地址即可)

图片7.png

登录cobbler_web管理界面,创建System,根据需要配置定制化参数

图片8.png

图片9.png

图片10.png

图片11.png

图片12.png

配置完成后,执行cobbler sync同步配置

启动客户机,等待自动装机,与第3步不同的是,定制化装机由于指定了mac地址,会跳过cobbler选择镜像界面,根据配置的镜像直接进入装机过程

图片13.png

评论