1 Cobbler简介
Cobbler是一个免费开源系统安装部署软件,用于自动化网络安装操作系统。Cobbler 集成了 DNS, DHCP, 软件包更新,带外管理以及配置管理,方便操作系统安装自动化。Cobbler 可以支持PXE启动, 操作系统重新安装,以及虚拟化客户机创建,包括Xen, KVM or VMware. Cobbler透过koan程序以支持虚拟化客户机安装。Cobbler可以支持管理复杂网路环境,如建立在链路聚合以太网的桥接环境。
该工具使用python开发,小巧轻便(才15k行python代码),使用简单的命令即可完成PXE网络安装环境的配置,同时还可以管理DHCP、DNS、以及yum仓库、构造系统ISO镜像。
Cobbler支持命令行管理,web界面管理,还提供了API接口,可以方便二次开发使用。Cobbler客户端Koan支持虚拟机安装和操作系统重新安装,使重装系统更便捷
2 Cobbler介绍
- Cobbler是一个Linux系统安装的服务,可以通过网络启动(PXE)的方式来快速安装、重装物理服务器和虚拟机,同时还可以管理DHCP,DNS等。
- Cobbler可以使用命令行方式管理,也提供了基于Web的界面管理工具(cobbler-web),还提供了API接口,可以方便二次开发使用。
- Cobbler是较早前的kickstart的升级版,优点是比较容易配置,还自带web界面比较易于管理。
- cobbler是Python开发编写的
- 提供了CLI字符界面和web图像界面的管理形式
3 Cobbler原理
Cobbler是通过将DHCP、TFTP、DNS、HTTP等服务进行集成,创建一个中央管理节点,其可以实现的功能有配置服务,创建存储库,解压缩操作系统媒介,代理或集成一个配置管理系统,控制电源管理等。 Cobbler的最终目的是实现无需进行人工干预即可安装机器。在进行进一步的操作之前,我们有必要先了解下pxe和kickstart
4 PXE简介
PXE,就是预启动执行环境,是一种引导启动的方式。这种协议一般由两部分构成,一部分是服务器端,一个是客户端。简单来说,我们通过这种方式可以自己创建一个“安装源”,在安装系统的时候只要能找到这个“源”便可以实现系统的安装。
在实现无人值守的安装前,我们必须要搭建一些服务,来实现“安装源”的建立,例如ftp、http、tftp、dhcp等。当一台主机启动时,标准输入输出会将PXE客户端调入我们的内存中进行相关的操作,并提示相关的选项,在这里我们可以进行选择。PXE的客户端通过网络下载(download)启动文件到本地运行。具体过程是,PXE客户端通过网卡向局域网内发送ip请求,然后DHCP服务器会提供给给它一个ip地址和系统安装所需要的文件,接下使用接收到的文件进行系统安装。而安装的过程又需要其他服务器提供的资源,例如:yum源,内核文件等,当主机拿到这些资源,便可以顺利的安装了。最终结果是:任意一台主机在选着网络启动时会获取DHCP服务器分发的ip,通过通过获取到的ip地址与局域网内的TFTP服务器通信并获取启动文件,与FTP或者HTTP通信并获取yum源文件及内核文件等。之后开始自动安装,而这个过程不需要人在做任何操作。
PXE安装优点,这种安装系统的方式可以不受光驱,光盘以及一些外部设备的限制,还可以做到无人值守,大大减轻了运维人员的工作负荷
5 kickstart简介
KickStart是一种无人职守安装方式。KickStart的工作原理是通过记录典型的安装过程中所需人工干预填写的各种参数,并生成一个名为ks.cfg的文件;在其后的安装过程中(不只局限于生成KickStart安装文件的机器)当出现要求填写参数的情况时,安装程序会首先去查找KickStart生成的文件,当找到合适的参数时,就采用找到的参数,当没有找到合适的参数时,才需要安装者手工干预。这样,如果KickStart文件涵盖了安装过程中出现的所有需要填写的参数时,安装者完全可以只告诉安装程序从何处取ks.cfg文件,然后去忙自己的事情。等安装完毕,安装程序会根据ks.cfg中设置的重启选项来重启系统,并结束安装
6 Cobbler工作流程
- client裸机配置了从网络启动后,开机后会广播包请求DHCP服务器(cobbler server)发送其分配好的一个IP
- DHCP服务器(cobbler server)收到请求后发送responese,包括其ip地址
- client裸机拿到ip后再向cobbler server发送请求OS引导文件的请求
- cobbler server告诉裸机OS引导文件的名字和TFTP server的ip和port
- client裸机通过上面告知的TFTPserver地址通信,下载引导文件
- client裸机执行执行该引导文件,确定加载信息,选择要安装的os,期间会再向cobbler server请求kickstart文件和os image
- cobbler server发送请求的kickstart和os iamge
- client裸机加载kickstart文件 .client裸机接收os image,安装该os image
7 cobbler集成的服务
- DHCP服务分配IP地址
- Client(获取IP地址、Next_server IP地址)
- Next_server(获取启动内核、initrd等文件)
- tftp (PXE引导文件、启动Cobbler选择界面)
- kickstart (确定加载项,根据NFS,httpd,ftp等共享)
8 cobbler配置文件详解
8.1 配置文件
cobbler配置文件目录在/etc/cobbler
yum install 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 : 模块的配置文件
8.2 cobbler数据目录
/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仓库存储目录
8.3 cobbler镜像目录
/var/www/cobbler/ks_mirror/ 导入的发行版系统的所有数据
/var/www/cobbler/images/ 导入发行版的kernel和initrd镜像用于远程网络启动
/var/www/cobbler/repo_mirror/ yum 仓库存储目录
8.4 cobbler日志文件
日志文件路径 | 说明 |
---|
/var/log/cobbler/installing | 客户端安装日志 | /var/log/cobbler/cobbler.log | cobbler日志 |
8.5 cobbler命令详解
cobbler check 核对当前设置是否有问题
cobbler list 列出所有的cobbler元素
cobbler report 列出元素的详细信息
cobbler sync 同步配置到数据目录,更改配置最好都要执行下
cobbler reposync 同步yum仓库
cobbler distro 查看导入的发行版系统信息
cobbler system 查看添加的系统信息
cobbler profile 查看配置信息
9 cobbler服务部署
// 关闭防火墙
[root@localhost ~]# systemctl disable --now firewalld
[root@localhost ~]# cat /etc/selinux/config
# This file controls the state of SELinux on the system.
# SELINUX= can take one of these three values:
# enforcing - SELinux security policy is enforced.
# permissive - SELinux prints warnings instead of enforcing.
# disabled - No SELinux policy is loaded.
[root@localhost ~]# reboot
SELINUX=disabled
[root@localhost ~]# getenforce
Disabled
// 下载epel源
[root@localhost ~]# yum -y install epel-release
//安装cobbler以及相关的软件
[root@localhost ~]# yum -y install httpd dhcp-* tftp xinetd pykickstart python3
[root@localhost ~]# yum -y module enable cobbler // 开启cobbler单元文件
// 下载cobbler和cobbler-web
[root@localhost ~]# dnf -y install cobbler
[root@localhost ~]# dnf -y install cobbler-web
/ 启动服务并设置开机自启
[root@localhost ~]# systemctl start httpd
[root@localhost ~]# systemctl start tftp
[root@localhost ~]# systemctl start cobblerd
[root@localhost ~]# systemctl enable httpd
Created symlink /etc/systemd/system/multi-user.target.wants/httpd.service → /usr/lib/systemd/system/httpd.service.
[root@localhost ~]# systemctl enable cobblerd
Created symlink /etc/systemd/system/multi-user.target.wants/cobblerd.service → /usr/lib/systemd/system/cobblerd.service.
[root@localhost ~]# systemctl enable tftp
Created symlink /etc/systemd/system/sockets.target.wants/tftp.socket → /usr/lib/systemd/system/tftp.socket.
// 修改server的ip地址为本机ip
[root@localhost ~]# sed -i 's/^server: 127.0.0.1/server: 192.168.25.147/' /etc/cobbler/settings.yaml
// 设置tftp的ip地址为本机ip
[root@localhost ~]# sed -i 's/^next_server: 127.0.0.1/next_server: 192.168.25.147/' /etc/cobbler/settings.yaml
// 下载缺失文件如果报错的解决方法
[root@localhost ~]# yum -y install syslinux
[root@localhost ~]# cp /usr/share/syslinux/pxelinux.0 /var/lib//cobbler/loaders/
[root@localhost ~]# cp /usr/share/syslinux/menu.c32 /var/lib/cobbler/loaders/[root@localhost ~]# cd /etc/cobbler/settings.d/
[root@localhost settings.d]# ls
bind_manage_ipmi.settings manage_genders.settings nsupdate.settings
[root@localhost settings.d]# cat bind_manage_ipmi.settings
# bind_manage_ipmi - used to let bind manage IPMI addresses if the power management address is an IP and if manage_bind
# is set.
bind_manage_ipmi: true // 如果是false修改为true
[root@localhost settings.d]# cat manage_genders.settings
# manage_genders - Bool to enable/disable managing an /etc/genders file for use with pdsh and others.
manage_genders: true // 如果是false修改为true
[root@localhost settings.d]# cat nsupdate.settings
# Set to "true" to enable Cobbler's dynamic DNS updates.
nsupdate_enabled: true // 如果是false修改为true
# define tsig key
//下载缺失文件
[root@localhost ~]# cobbler get-loaders
task started: 2021-10-12_084441_get_loaders
task started (id=Download Bootloader Content, time=Tue Oct 12 08:44:41 2021)
running python triggers from /var/lib/cobbler/triggers/task/get_loaders/pre/*
running shell triggers from /var/lib/cobbler/triggers/task/get_loaders/pre/*
shell triggers finished successfully
downloading https://cobbler.github.io/loaders/README to /var/lib/cobbler/loaders/README
downloading https://cobbler.github.io/loaders/COPYING.yaboot to /var/lib/cobbler/loaders/COPYING.yaboot
downloading https://cobbler.github.io/loaders/COPYING.syslinux to /var/lib/cobbler/loaders/COPYING.syslinux
downloading https://cobbler.github.io/loaders/yaboot-1.3.17 to /var/lib/cobbler/loaders/yaboot
path /var/lib/cobbler/loaders/pxelinux.0 already exists, not overwriting existing content, use --force if you wish to update
path /var/lib/cobbler/loaders/menu.c32 already exists, not overwriting existing content, use --force if you wish to update
downloading https://cobbler.github.io/loaders/grub-0.97-x86.efi to /var/lib/cobbler/loaders/grub-x86.efi
downloading https://cobbler.github.io/loaders/grub-0.97-x86_64.efi to /var/lib/cobbler/loaders/grub-x86_64.efi
*** TASK COMPLETE ***
|