Cobbler是一个Linux安装服务器,允许快速设置网络安装环境。它将许多相关的Linux任务聚合在一起并自动化,因此在部署新系统时,您不必在许多不同的命令和应用程序之间来回切换,在某些情况下,还可以更改现有的系统。Cobbler可以帮助提供、管理DNS和DHCP、包更新、电源管理、配置管理编制等。Cobbler支持众多的Linux发行版:Red Hat、 Fedora、CentOS、Debian、Ubuntu和SuSE,也可以支持网络安装windows。cobbler是PXE的二次封装,将多种安装参数封装到一个菜单 。Cobbler是一个让部署系统简单方便的自动化部署工具。同时还可以制作内部Yum源,对于日常运维工作或者批量系统安装部署新系统都是非常好的工具。
一、工作原理(流程)

工作过程图
工作流程:
??1.client配置了网络启动之后(现在大多数主机默认支持无需手动设置),开机后会广播报文请求DHCP服务器(cobbler serveer)提供一个ip地址。
??2.DHCP服务器(cobbler server)收到请求之后会发送response,包括为其分配的IP地址。
??3.client在得到IP地址之后再次向cobbler服务器发送请求OS引导文件的请求。
??4.cobbler server告诉client机器OS引导文件的名字和TFTP server的IP和端口。
??5.client用过得到的IP和端口,进行访问TFTP server,请求下载引导文件。
??6.client执行提供的引导文件,确定其加载的信息,选择要安装的os,期间会再次向cobbler server发送请求kickstart文件和os image文件。
??7.cobbler server 发送client请求的kickstart和OS image文件。
??8.client 加载kickstart文件。
??9.client接收os image,安装os image
二、cobber 安装配置
基础环境:基于cenos7.6系统做server端
IP 地址 192.168.138.100
关闭系统防火墙、selinux、设置能够连接外网、设置本地yum源和epel源
# 安装官方自带的epel源,不过速度比较慢
yum install -y https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm
# 安装cobbler
可能需要先安装python-pygments,从网上下载此包,先安装
# yum install python-pygments-1.4-10.el7.noarch.rpm
#yum -y install cobbler cobbler-web tftp tftp-server xinetd dhcp httpd pykickstart mod_wsgi mod_ssl rsync
#yum -y install debmirror python-ctypes python-cheetah python-netaddr python-simplejson python-urlgrabber PyYAML syslinux cman fence-agents createrepo mkisofs yum-utils
启动相应服务
systemctl enable cobblerd
systemctl start cobblerd
systemctl status cobblerd
systemctl enable httpd
systemctl start httpd
systemctl status httpd
systemctl start rsyncd.service
systemctl enable rsyncd.service
systemctl status rsyncd.service
systemctl start tftp
systemctl enable tftp
systemctl status tftp
开始配置collber
1、生产安装系统时的初始密码
# openssl passwd -1 -salt 'ljohn' '123456'
$1$ljohn$yBMDpKkntQ9jfV1ZAWKpU1
2、修改cobber的配置文件
# vi /etc/cobbler/settings
server: 192.168.138.100
next_server: 192.168.138.100
default_password_crypted: "$1$ljohn$yBMDpKkntQ9jfV1ZAWKpU1"
manage_dhcp 1
#cobbler check ##执行检查
会报错,可以根据报错内容,进行相应的修改

保存内容
如果当前节点可以访问互联网,执行“cobbler get-loaders”命令即可;否则, 需要安装syslinux程序包,而后复制/usr/share/syslinux/{pxelinux.0,memu.c32} 等文件至/var/lib/cobbler/loaders/目录中
执行下列命令以下载网络引导文件进行修复
[root@gwmgmt yum.repos.d]# cobbler get-loaders
# sed -i -e 's/@dists=.*/#@dists=/' /etc/debmirror.conf
# sed -i -e 's/@arches=.*/#@arches=/' /etc/debmirror.conf
# sed -i '/disable/c disable = no' /etc/xinetd.d/tftp
重启服务
#systemctl start cobblerd
再次检查ok
# cobbler check
No configuration problems found. All systems g
3、修改cobbler的dhcp配置模板
vim /etc/cobbler/dhcp.template
option routers 192.168.1.x; #修改为cobbler server端所在机器IP
option domain-name-servers 192.168.1.x; #修改为cobbler server端所在机器IP
subnet 192.168.138.0 netmask 255.255.255.0 { #设置网段
option routers 192.168.138.100; #设置网关
option domain-name-servers 192.168.138.100; #设置dns服务器地址
option subnet-mask 255.255.255.0;
range dynamic-bootp 192.168.138.200 192.168.138.254; #设置dhcp服务器IP地址租用的范围
default-lease-time 21600; ##租约时间
max-lease-time 43200; ##最大租约时间
next-server $next_server
# cobbler sync ## 同步下数据
# systemctl restart dhcpd
# systemctl restart cobblerd
4、挂载镜像(以rhel为例),导入镜像和应答文件
4.1#mount /dev/sr0 /mnt
# cobbler import --path=/mnt --name=CentOS-7.6-x86_64 --arch=x86_64
# --path 镜像路径
# --name 为安装源定义一个名字
# --arch 指定安装源是32位、64位、ia64, 目前支持的选项有: x86│x86_64│ia64
# 安装源的唯一标示就是根据name参数来定义,本例导入成功后,安装源的唯一标示就是:CentOS-7.4-x86_64,如果重复,系统会提示导入失败。
# cobbler distro list # 查看镜像列表
CentOS-7.6-x86_64
制作自定义kickstart文件,以rhel为例
可以使用system-config-kickstart图形化工具制作kickstart应答文件,也可以从网上下载文件,然后根据实际
情况进行修改。(比如磁盘划分等)
4.2关联镜像与kickstart 文件
cobbler profile edit --name=CentOS-7.6-x86_64 --distro=CentOS-7.6-x86_64
--kickstart=/var/lib/cobbler/kickstarts/cenos7.6.ks
#cobbler sync
同步配置,每次对cobbler更改都要执行同步
5、 客户端安装系统验证
安装启动前保证要安装的机器,所在的物理网络与现在Cobbler畅通,如果是虚拟机(VMware),要关闭其自身的DHCP服务

选择cenos7.6即可,完成自动化安装部署。