[TOC]
本章章节
(1) Cobble介绍
(2) Cobbler安装配置
(3) Cobbler安装系统
(4) 定制化安装
(5) Cobbler的Web管理界面的安装与配置
(6) 入坑记
0x01 Cobbler 介绍
Cobbler是一个Linux服务器安装的服务,可以通过网络启动(PXE)的方式来快速安装、重装物理服务器和虚拟机,同时还可以管理DHCP,DNS等;可以使用命令行方式管理,也提供了基于Web的界面管理工具(cobbler-web),还提供了API接口,可以方便二次开发使用。
Cobbler是较早前的kickstart的升级版,优点是比较容易配置,还自带web界面比较易于管理,Cobbler内置了一个轻量级配置管理系统,但它也支持和其它配置管理系统集成,该工具使用python开发,小巧轻便(才15k行代码)
官网:http:#cobbler.github.io/
1.1 Cobbler集成的服务
- PXE服务支持
- DHCP服务管理
- DNS服务管理(可选bind,dnsmasq)
- 电源管理
- Kickstart服务支持
- YUM仓库管理
- TFTP(PXE启动时需要)
- Apache(提供kickstart的安装源,并提供定制化的kickstart配置)
Cobbler组件:
- 发行版(distro) :表示一个操作系统,它承载了内核和initrd的信息,以及内核等其他数据。
- 仓库 (repository):保存了一个yum或者rsync仓库的镜像信息。
- 配置文件(profile):包含了一个发行版(distro),一个kickstart文件以及可能的仓库(repository),还包含了更多的内核参数等其他数据。
- 系统(system):表示要定制的具体客户机器,它包含了一个配置文件或一个镜像,还包含了ip和mac地址,电源管理(地址,凭据,类型)以及更为专业的数据信息。
- 镜像(image):可替换一个包含不属于此类别的文件的发行版对象(eg: 无法作为内核和initrd的对象)。
WeiyiGeek.COBBLER原理
注意:发行版和配置文件为必须配置项
- 发行版 distro 表示具体要导入安装的系统
- 配置文件 profile 表示对应系统的配置
- 系统 system 则可以定制某一台具体的机器安装,相当于一条数据库记录,可以省略
1.2 cobbler工作流程
Server端 :
- 第一步,启动Cobbler服务
- 第二步,进行Cobbler错误检查,执行cobbler check命令
- 第三步,进行配置同步,执行cobbler sync命令
- 第四步,复制相关启动文件文件到TFTP目录中
- 第五步,启动DHCP服务,提供地址分配
- 第六步,DHCP服务分配IP地址
- 第七步,TFTP传输启动文件
- 第八步,Server端接收安装信息
- 第九步,Server端发送ISO镜像与Kickstart文件
Client端 :
- 第一步,客户端以PXE模式启动
- 第二步,客户端获取IP地址
- 第三步,通过TFTP服务器获取启动文件
- 第四步,进入Cobbler安装选择界面
- 第五步,客户端确定加载信息
- 第六步,根据配置信息准备安装系统
- 第七步,加载Kickstart文件
- 第八步,传输系统安装的其它文件
- 第九步,进行安装系统
1.3 系统环境准备
使用的是CentOS7.x 和 VirtualBox(配置上网和NAT关闭DHCP服务);1
2
3
4
5
6CentOS Linux release 7.6.1810 (Core) 3.10.0-957.1.3.el7.x86_64
[[email protected] ~]# vi /etc/sysconfig/selinux #强制访问关闭
SELINUX=disabled
[[email protected] ~]# reboot #修改后需要重启
[[email protected] ~]# getenforce
Disabled
0x02 Cobbler安装配置
2.1 安装Cobbler
1 | author:WeiyiGeek |
2.2 命令详解 cobbler
1 | cobbler <distro|profile|system|repo|image|mgmtclass|package|file> ... |
2.3 配置Cobbler环境(重要)
1 | [[email protected] yum.repos.d]# getenforce |

WeiyiGeek.检查Cobbler的配置
WeiyiGeek.loaders
看着上面的结果,一个一个解决;第1、2、6个问题,顺便修改其他功能1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53author;WeiyiGeek
cp /etc/cobbler/settings{,.bak} # 备份
server,Cobbler服务器的IP 【提示1】
sed -i 's/^server: 127.0.0.1/server: 192.168.1.99/' /etc/cobbler/settings
next_server,如果用Cobbler管理DHCP,修改本项,作用不解释,看kickstart【提示2】
sed -i 's/^next_server: 127.0.0.1/next_server: 192.168.1.99/' /etc/cobbler/settings
用Cobbler管理DHCP
sed -i 's/^manage_dhcp: 0/manage_dhcp: 1/' /etc/cobbler/settings
防止循环装系统,适用于服务器第一启动项是PXE启动。
sed -i 's/^pxe_just_once: 0/pxe_just_once: 1/' /etc/cobbler/settings
设置新装系统的默认root密码123456,下面的命令来源于【提示7】。
random-phrase-here为干扰码,可以自行设定。
openssl passwd -1 -salt 'weiyigeek' '123456'
1$weiyigee$Kl6liFVRLuWROHNbd37Zm1
vim /etc/cobbler/settings
default_password_crypted: "$1$weiyigee$Kl6liFVRLuWROHNbd37Zm1"
[第3个问题]
[root ~]# vim /etc/xinetd.d/tftp
disable = no
[root ~]# /etc/init.d/xinetd restart
停止 xinetd: [确定]
正在启动 xinetd: [确定]
[第5个问题]
systemctl enable rsyncd.service
systemctl start rsyncd
systemctl restart cobblerd [重启即可]
[第4个问题]
cobbler get-loaders # 会自动从官网下载bootloaders
task started: 2019-05-29_105819_get_loaders
task started (id=Download Bootloader Content, time=Wed May 29 10:58:19 2019)
downloading https://cobbler.github.io/loaders/README to /var/lib/cobbler/loaders/README
downloading https://cobbler.github.io/loaders/COPYING.elilo to /var/lib/cobbler/loaders/COPYING.elilo
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/elilo-3.8-ia64.efi to /var/lib/cobbler/loaders/elilo-ia64.efi
downloading https://cobbler.github.io/loaders/yaboot-1.3.17 to /var/lib/cobbler/loaders/yaboot
downloading https://cobbler.github.io/loaders/pxelinux.0-3.86 to /var/lib/cobbler/loaders/pxelinux.0
downloading https://cobbler.github.io/loaders/menu.c32-3.86 to /var/lib/cobbler/loaders/menu.c32
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
cd /var/lib/cobbler/loaders/ && ls # 下载的内容
2.4 配置DHCP
修改cobbler的dhcp模版,不要直接修改dhcp本身的配置文件,因为cobbler会覆盖。
/etc/cobbler/dhcp.template # DHCP服务的配置模板 (注意这里可能需要新建网卡)1
2
3
4
5
63: ens34: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
link/ether 00:50:56:b3:69:06 brd ff:ff:ff:ff:ff:ff
inet 192.168.1.99/24 brd 192.168.1.255 scope global noprefixroute ens34
valid_lft forever preferred_lft forever
inet6 fe80::dfc:592e:b4a4:9877/64 scope link noprefixroute
valid_lft forever preferred_lft forever
2.5 同步COBBLER配置(重要)
1 | 同步最新cobbler配置,它会根据配置自动修改dhcp等服务。 |
2.6 服务自启动
1 | 方法1 |
3 Cobbler安装系统
3.1 导入镜像
1 | mkdir /mnt/cdrom |
3.2 指定ks.cfg文件及调整内核参数
1 | Cobbler的ks.cfg文件存放位置 |
3.3 安装系统
到此就可以进行安装系统了,安装系统前可以修改文字 WeiyiGeek.虚拟机网络启动1
2
3
4
5
6
7修改Cobbler提示
vim /etc/cobbler/pxe/pxedefault.template
menu vesamenu.c32
MENU TITLE Cobbler | ccccccc
cobbler sync # 修改配置都要同步
新建立一台虚拟机网络启动即可,效果如下:
进入PXE选择界面进行安装系统; WeiyiGeek.虚拟机网络启动
然后就进行系统的安装 WeiyiGeek.系统的安装
3.4 完善ks.cfg文件
文件大部分参数含义见kickstart文章,此处只讲一些不同的地方,同时可以参考模板文件。1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56 cat CentOS-7.1-x86_64.cfg
Cobbler for Kickstart Configurator for CentOS 7.1 by yao zhang
install
url --url=$tree # 这些$开头的变量都是调用配置文件里的值。
text
lang en_US.UTF-8
keyboard us
zerombr
bootloader --location=mbr --driveorder=sda --append="crashkernel=auto rhgb quiet"
Network information
SNIPPET('network_config')
timezone --utc Asia/Shanghai
authconfig --enableshadow --passalgo=sha512
rootpw --iscrypted $default_password_crypted
clearpart --all --initlabel
part /boot --fstype xfs --size 1024 #CentOS7系统磁盘默认格式xfs
part swap --size 1024
part / --fstype xfs --size 1 --grow
firstboot --disable
selinux --disabled
firewall --disabled
logging --level=info
reboot
pre
SNIPPET('log_ks_pre')
SNIPPET('kickstart_start')
SNIPPET('pre_install_network_config')
Enable installation monitoring
SNIPPET('pre_anamon')
end
packages
@base
@compat-libraries
@debugging
@development
tree
nmap
sysstat
lrzsz
dos2unix
telnet
iptraf
ncurses-devel
openssl-devel
zlib-devel
OpenIPMI-tools
screen
end
post
systemctl disable postfix.service
end
0x04 定制化安装
指定某台服务器使用指定ks文件,kickstart实现这功能可能比较复杂,但是Cobbler就很简单了。
区分一台服务器的最简单的方法就是物理MAC地址,物理服务器的MAC地址在服务器上的标签上写了或者虚拟机的MAC查看。1
2
3
4
5
6
7cobbler system add --name=oldboy --mac=00:0C:29:7F:2F:A1 --profile=CentOS-7.1-x86_64 --ip-address=10.0.0.111 --subnet=255.255.255.0 --gateway=10.0.0.2 --interface=eth0 --static=1 --hostname=oldboy.example.com --name-servers="114.114.114.114 8.8.8.8"
# --name 自定义,但不能重复
# 查看定义的列表
$ cobbler system list
oldboy
$ cobbler sync
0x05 Cobbler的Web管理界面的安装与配置
我们上面已经安装cobbler-web软件,我们访问网站https://10.22.53.12/cobbler_web即可; WeiyiGeek.cobbler-web
WeiyiGeek.profiles
可以直接利用网页上进行import 设置 profiles 内核参数 biosdevname=0 net.ifnames=0
5.1 配置Cobbler Web 文件
网站路径:/usr/share/cobbler/web/
网站配置文件路径:/etc/httpd/conf.d/cobbler_web.conf
Web服务授权配置文件: /etc/cobbler/users.conf
用于web访问的用户名密码配置文件: /etc/cobbler/users.digest1
2
3
4
5
6
7
8
9
10
11
12
13
14[[email protected] ~]# cat /etc/cobbler/users.digest
cobbler:Cobbler:a2d6bae81669d707b72c0bd9806e01f3
设置Cobbler web用户登陆密码
在Cobbler组添加cobbler用户,提示输入2遍密码确认
[[email protected] ~]# htdigest /etc/cobbler/users.digest "Cobbler" cobbler
Changing password for user cobbler in realm Cobbler
New password: 123456
Re-type new password:123456
同步重启服务即可
cobbler sync
/etc/init.d/httpd restart
/etc/init.d/cobblerd restart
0x06 入坑记
问题1:安装源中无Cobbler的包?
原因:#可以看到cobbler、cobbler_web没有安装成功,那是因为常规yum源中没有关于cobbler的包,不过不用着急,我们需要在配置一个epel源,就可以了。
解决方法:1
2
3配置epel源
[[email protected] yum.repos.d]# yum -y install epel*
[[email protected] yum.repos.d]# yum makecache
问题2:安装cobbler-web未能成功提示Django依赖问题
解决方法:1
2
3
4
5
6
7Error: Package: cobbler-web-2.6.11-7.git95749a6.el6.noarch (epel)
Requires: Django >= 1.4
$ wget https:#raw.githubusercontent.com/pypa/get-pip/master/2.6/get-pip.py
$ python2.6 get-pip.py
$ pip install --upgrade pip
[[email protected] yum.repos.d]# pip install Django==1.5.8
问题3:提示没有找到内核镜像,其实就是 没有加载一个菜单问题
在cobbler sync后修改了tftp数据目录中pxeliunx.cfg/default 的memu 却没有把我们ISO项目中的vesamenu.c32赋值到该目录中。
1 | cp /mnt/cdrom/isolinux/vesamenu.c32 /var/lib/tftpboot/ #运行此句就OK |
问题4:我们在访问CobblerWeb的时候,发现服务器报500错误,经过检查httpd的日志发现报错如下
错误原因:(没有采用https),这个报错是由于centos 7默认安装的python-django版本过高,cobbler还存在一些bug未修复,因此,我们需要将djaogo框架降到低版本。
解决办法:1
2
3
4
5
6
7
8
9
10
11首先,查询当前系统安装的django版本,然后卸载
rpm -qa |grep django
rpm -e python2-django-*.el7.noarch --nodeps
安装较低版本的django
yum -y install python2-django16
重启httpd服务
systemctl restart httpd
需要访问 https 的网站
问题5:debmirror package is not installed, it will be required to manage debian deployments and repositories
解决办法 : debian 安装用,暂时可以不管;如果需要安装,下载地址为:http://rpmfind.net/linux/rpm2html/search.php?query=debmirror
问题6:fencing tools were not found, and are required to use the (optional) power management features. install cman or fence-agents to use them
解决办法 : 关于电源管理(跟DELl 远程控制协议类似东西?),也暂时不管。
问题7:补充脚本1
2
3
4
5
6
7echo -e "\n############################\n#安装COBBLER及其依赖\n####################################\n"
# yum -y install xinetd syslinux dhcp tftp-server httpd rsync
# install -y python-pip && pip install -U pip
# yum -y install cobbler cobbler-web pykickstart
# wget https://weiyigeek-1251733653.cos.ap-chengdu.myqcloud.com/file/2019/Cobbler_init.sh -O /tmp/
# chmod +x /tmp/Cobbler_init.sh && /tmp/Cobbler_init.sh
echo "--[安装完毕]--"