在前面讲述的PXE安装操作系统,需要自己一个一个的配置服务,有些人会觉得有些麻烦,就编写了cobbler程序,大大降低了复杂度。

一、Cobbler

1、Cobbler概念

Cobbler是一个Linux服务器快速网络安装的服务,而且在经过调整也可以支持网络安装windows。 该工具使用python开发,小巧轻便(才15k行python代码),可以通过网络启动(PXE)的方式来快速安装、重装物理服务器和虚拟机,同时还可以管理DHCP,DNS,TFTP、RSYNC以及yum仓库、构造系统ISO镜像。 Cobbler可以使用命令行方式管理,也提供了基于Web的界面管理工具(cobbler-web),还提供了API接口,可以方便二次开发使用。 Cobbler是较早前的kickstart的升级版,优点是比较容易配置,还自带web界面比较易于管理。 Cobbler内置了一个轻量级配置管理系统,但它也支持和其它配置管理系统集成,如Puppet,暂时不支持SaltStack。 Cobbler客户端Koan支持虚拟机安装和操作系统重新安装,使重装系统更便捷。

2、工作流程

(a)client裸机配置了从网络启动后,开机后会广播包请求DHCP服务器(cobbler server)发送其分配好的一个IP

(b)DHCP服务器(cobbler server)收到请求后发送responese,包括其ip地址

(c)client裸机拿到ip后再向cobbler server发送请求OS引导文件的请求

(d)cobbler server告诉裸机OS引导文件的名字和TFTP server的ip和 port

(e)client裸机通过上面告知的TFTP server地址通信,下载引导文件

(f)client裸机执行执行该引导文件,确定加载信息,选择要安装的os,

(g)期间会再向cobbler server请求kickstart文件和os p_w_picpath

(h)cobbler server发送请求的kickstart和os iamge client裸机加载kickstart文件

(i)client裸机接收os p_w_picpath,安装该os p_w_picpath

3、cobbler包介绍

cobbler包集成了dhcp,pxe服务,rsync,http,dns,kiskstart,IPMI电源管理。

cobbler命令

格式: cobbler command [subcommand] [--arg1=value1] [--arg2=value2]

cobbler check 核对当前设置是否有问题 cobbler list 列出所有的cobbler元素 cobbler repo 列出元素的详细信息

cobbler sync 同步配置到数据目录,更改配置

cobbler reposync 同步yum仓库

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

cobbler distro add
cobbler distro copy
cobbler distro edit
cobbler distro find
cobbler distro list
cobbler distro remove
cobbler distro rename
cobbler distro report

cobbler system 查看添加的系统信息

cobbler profile 查看配置信息

cobbler profile add

    --name=NAME
    --distro=DISTRO 
    --kickstart=KICKSTART 

cobbler profile list    #列出配置文件信息
cobbler profile remove     
cobbler profile rename  修改配置文件名称  
cobbler profile report  #列出某个配置文件的报告
    --name=NAME

cobbler improt

--arch=ARCH OS architecture being imported
--breed=BREED the breed being imported
--os-version=OS_VERSION the version being imported
--path=PATH local path or rsync location
--name=NAME name, ex 'RHEL-5'
--available-as=AVAILABLE_AS tree is here, don't mirror
--kickstart=KICKSTART_FILE assign this kickstart file
--rsync-flags=RSYNC_FLAGS pass additional flags to rsync

3、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/p_w_picpaths/ : 导入发行版的kernel和initrd镜像用于远程网络启动
/var/www/cobbler/repo_mirror/: yum 仓库存储目录

日志目录

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

4、相关术语

发行版:表示一个操作系统。它承载了内核和initrd信息,以及内核参数等其他数据。

配置文件:包含一个发行版、一个kickstart文件以及可能的存储库,还包含更多特定的内核参数等其他数据。

系统:表示要配给的机器。它包含一个配置文件或一个镜像,还包含IP和MAC地址、电源管理以及更专业的数据信息。

存储库:保存一个yum或rsync存储库的镜像信息。 镜像:可替换一个包含不属于此类别的文件的发行版对象。(例如,无法分为内核和initrd对象)

二、cobbler实战

(1)安装cobbler安装包和dhcp [root@localhost ~]# yum install -y cobbler [root@localhost ~]# yum install -y dhcp

(2)将服务设为开机启动并启动服务 [root@localhost ~]# systemctl enable tftp #将tftp服务设为开机启动,并启动它[root@localhost ~]# systemctl start tftp [root@localhost ~]# systemctl enabel httpd #将http服务设为开机启动并启动[root@localhost ~]# systemctl enable httpd [root@localhost ~]# systemctl start httpd[root@localhost ~]# systemctl enable cobblerd #将cobbler设为开机启动并启动 [root@localhost ~]# systemctl start cobblerd

(3)运行cobbler check命令解决问题 为了确保出现不必要的问题,禁用iptables和setenforce [root@localhost ~]# iptables -F #清空防火墙规则 [root@localhost ~]# setenforce 0 #将selinux设为permissiving [root@localhost ~]# cobbler check #检查cobbler环境是否配置正确

当运行cobbler check命令时出现上述的问题,我们通过一个一个解决就可以慢慢的实现cobbler自动化安装CentOS 系统。下面我们一个一个的解决这些文件

(a)修改cobbler服务端地址选项server[root@localhost ~]# vim /etc/cobbler/settings

[root@localhost ~]# cobbler sync #将修改过的文件同步

(b)修改next_server 此选项是修改tftp的地址 [root@localhost ~]# vim /etc/cobbler/settings

[root@localhost ~]# cobbler sync

(c)修改mange_dhcp 此选项是要cobbler管理dhcp [root@localhost ~]# vim /etc/cobbler/settings

[root@localhost ~]# cobbler sync

(d)获取启动菜单 方法一: 如果有网络的话使用如下方式 [root@localhost ~]# cobbler get-loaders 方法二: 如果没有网络/var/lib/tftpboot/目录下的pxelinux.0和menu.c32文件复制到/var/lib/cobbler/loaders[root@localhost ~]# cp /var/lib/tftpboot/{pxelinux.0,menu.c32} /var/lib/cobbler/loaders/ [root@localhost ~]# cobbler sync 

(e)修改用户口令 [root@localhost ~]# openssl passwd -1 #生成加密口令

Password: 
Verifying - Password: 
$1$gMx01QUD$eo5dQGlEDGh9o0fY8dgnr.

[root@localhost ~]# cobbler sync 

(f)配置dhcp服务 [root@localhost ~]# vim /etc/cobbler/dhcp.template[root@localhost tftpboot]# cobbler sync #将修改后内容太同步到/etc/dhcp/dhcpd.conf文件中

(4)导入yum源 [root@localhost ~]# cobbler import --path=/media/cdrom --name=centos7.3 --arch=x86_64

--path:指明yum源的路径
--name:指明复制到`/var/www/cobbler`目录下
--arhc:指明架构类型

(5)编辑ks文件并导入

默认的ks位置/var/lib/cobbler/kickstarts/sample.ks

首先将ks文件复制到/var/lib/cobbler/kickstarts目录下,然后将ks文件导入

[root@localhost kickstarts]# cobbler profile edit/add --name=centos7.3-x86_64 --distro=centos7.3-x86_64 --kickstart=/var/lib/cobbler/kickstarts/ks7.cfg#编辑原有的ks文件

[root@localhost tftpboot]# cobbler sync

(6)编辑菜单文件

默认的菜单文件/etc/cobbler/pxe/pxedefault.template #默认菜单模板

启动菜单存放位置/var/lib/tftpboot/pxelinux.cfg/default

[root@localhost tftpboot]# cobbler sync

(7)新建一台虚拟机测试

另外cobbler也提供web管理。Cobbler web界面是一个很好的前端,非常容易管理Cobbler。可以添加和删除system、distro、profile,可以查看、编辑distros、profiles、subprofiles、systems、repos、kickstart文件 cobbler认证方式有两种:

方式一:

(1)修在认证方式

(2)创建管理用户 [root@localhost ~]# htdigest -c /etc/cobbler/users.digest "Cobbler" admin

注意:第一创建是需要加选项“-c”意味着创建文件/etc/cobbler/users.digest文件。

htdigest命令的使用格式:

  htdigest [ -c ] passwdfile realm username

如何修改管理用户的密码呢? [root@localhost ~]# htdigest /etc/cobbler/users.digest "Cobbler" admin 方式二: (a)修改认证方式

(b)创建管理用户

[root@localhost ~]# useradd cobbler [root@localhost ~]# passwd cobbler

(c)修改文件/etc/cobbler/user.conf

(3)在浏览器地址输入地址https://192.168.4.128/cobbler_web并管理用户和密码即可