一、Cobbler 介绍
1. 介绍
Cobbler 是一个 Linux 服务器安装的服务,可以通过网络启动 (PXE) 的方式来快速安装、重装物理服务器和虚拟机,同时还可以管理 DHCP,DNS 等。
Cobbler 可以使用命令行方式管理,也提供了基于 Web 的界面管理工具(cobbler-web),还提供了 API 接口,可以方便二次开发使用。
Cobbler 是较早前的 kickstart 的升级版,优点是比较容易配置,还自带 web 界面比较易于管理。
Cobbler 内置了一个轻量级配置管理系统,但它也支持和其它配置管理系统集成,如 Puppet,暂时不支持 SaltStack。
Cobbler官网
2. Cobbler 集成的服务
PXE 服务支持
DHCP 服务管理 (用来分配 ip 地址和 TFTP 的)
DNS 服务管理 (可选 bind,dnsmasq)
电源管理
Kickstart 服务支持
YUM 仓库管理
TFTP(PXE 启动时需要)
Apache(提供 kickstart 的安装源,并提供定制化的 kickstart 配置)
3. Cobbler 工作流程
客户端从网络启动后,会广播包请求 DHCP 服务器
DHCP 服务器(cobbler server)收到请求后发送 responese,包括其 ip 地址
客户端拿到 ip 后再向 cobbler server 发送请求 OS 引导文件的请求(pxelinux.0)
cobbler server 告诉客户端 OS 引导文件的名字 (一般为 pxelinux.0) 和 TFTP 的 ip 和 port
客户端通过上面告知的 TFTP server 地址通信,下载引导文件
客户端执行该引导文件,在内存中展开,确定加载信息,选择要安装的 os,期间会再向 cobbler server 请求 kickstart 文件和 os image
cobbler server 发送请求的 kickstart 和 os iamge
客户端加载 kickstart 文件
客户端接收 os image,安装该 os image
二、安装 Cobbler
使用 yum 安装
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 ~]# yum install cobbler -y ======================================================================================= Package Arch Version Repositor Size ======================================================================================= Installing: cobbler-web noarch 2.8.4-4.el7 epel7 289 k Installing for dependencies: PyYAML x86_64 3.10-11.el7 base7 153 k cobbler x86_64 2.8.4-4.el7 epel7 578 k genisoimage x86_64 1.1.11-25.el7 base7 299 k jbigkit-libs x86_64 2.0-11.el7 base7 46 k libjpeg-turbo x86_64 1.2.90-6.el7 base7 134 k libtiff x86_64 4.0.3-27.el7_3 base7 170 k libusal x86_64 1.1.11-25.el7 base7 136 k libwebp x86_64 0.3.0-7.el7 base7 170 k libyaml x86_64 0.1.4-11.el7_0 base7 55 k mod_ssl x86_64 1:2.4.6-89.el7.centos updates7 112 k mod_wsgi x86_64 3.4-18.el7 base7 77 k mtools x86_64 4.0.18-5.el7 base7 203 k python-backports x86_64 1.0-8.el7 base7 5.8 k python-backports-ssl_match_hostname noarch 3.5.0.1-1.el7 base7 13 k python-cheetah x86_64 2.4.4-5.el7.centos extras7 341 k python-django-bash-completion noarch 1.11.21-1.el7 epel7 9.9 k python-ipaddress noarch 1.0.16-2.el7 base7 34 k python-netaddr noarch 0.7.5-9.el7 base7 983 k python-pillow x86_64 2.0.0-19.gitd1c6db8.el7 base7 438 k python-pygments noarch 1.4-10.el7 base7 599 k python-setuptools noarch 0.9.8-7.el7 base7 397 k python2-django noarch 1.11.21-1.el7 epel7 4.2 M python2-markdown noarch 2.4.1-4.el7 epel7 250 k python2-pyyaml noarch 3.10-0.el7 epel7 3.0 k python2-simplejson x86_64 3.10.0-2.el7 epel7 188 k pytz noarch 2016.10-2.el7 base7 46 k rsync x86_64 3.1.2-6.el7_6.1 updates7 404 k syslinux x86_64 4.05-15.el7 base7 990 k tftp-server x86_64 5.2-22.el7 base7 47 k Transaction Summary ======================================================================================= Install 1 Package (+29 Dependent packages) Total download size: 11 M Installed size: 43 M
安装过程略。
查看安装的文件
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 ~]# rpm -ql cobbler /etc/cobbler # 配置文件目录 /etc/cobbler/settings # cobbler 主配置文件,这个文件是 YAML 格式,Cobbler 是 python 写的程序。 /etc/cobbler/dhcp.template # DHCP 服务的配置模板 /etc/cobbler/tftpd.template # tftp 服务的配置模板 /etc/cobbler/rsync.template # rsync 服务的配置模板 /etc/cobbler/iso # iso 模板配置文件目录 /etc/cobbler/pxe # pxe 模板文件目录 /etc/cobbler/power # 电源的配置文件目录 /etc/cobbler/users.conf # Web 服务授权配置文件 /etc/cobbler/users.digest # 用于 web 访问的用户名密码配置文件 /etc/cobbler/dnsmasq.template # DNS 服务的配置模板 /etc/cobbler/modules.conf # Cobbler 模块配置文件 /var/lib/cobbler # Cobbler 数据目录 /var/lib/cobbler/config # 配置文件 /var/lib/cobbler/kickstarts # 默认存放 kickstart 文件 /var/lib/cobbler/loaders # 存放的各种引导程序 /var/www/cobbler # 系统安装镜像目录 /var/www/cobbler/ks_mirror # 导入的系统镜像列表 /var/www/cobbler/images # 导入的系统镜像启动文件 /var/www/cobbler/repo_mirror # yum 源存储目录 /var/log/cobbler # 日志目录 /var/log/cobbler/install.log # 客户端系统安装日志 /var/log/cobbler/cobbler.log # cobbler 日志
配置 Cobbler
1. 禁用 SElinux
2. 编辑主配置文件
在 /etc/cobbler/settings,此文件是 YAML 格式的数据文件
通过运行以下命令获得加密密码串,用于为新系统设置 root 密码
1 default_password_crypted: "$1$bfI7WLZz$PxXetL97LkScqJFxnW7KS1"
设置监听地址,官方说不要使用 0.0.0.0,应该使用实际业务地址,我这里为 192.168.10.200
1 2 # default, localhost server: 192.168.10.200
让 Cobbler 托管 DHCP 服务器,也可以自行管理,我这里选择托管
1 2 # default, don't manage manage_dhcp: 1 # 将该设置更改为 1,cobbler 会根据 cobbler 附带的 dhcp.template 生成 dhcpd.conf 文件
修改DHCP模板,根据需求只修改以下内容,其他不要动,我这里子网为192.168.10.0
1 2 3 4 5 6 7 8 9 10 ~]# vi /etc/cobbler/dhcp.template subnet 192.168.10.200 netmask 255.255.255.0 { option routers 192.168.10.1; option domain-name-servers 192.168.10.210,192.168.10.211; option subnet-mask 255.255.255.0; filename "/pxelinux.0"; default-lease-time 2.8.0; max-lease-time 43200; next-server $next_server; }
基本配置就完成了
3. 启动 Cobbler 并设置成自动启动
1 2 ~]# systemctl start cobblerd.service ~]# systemctl enable cobblerd.service
4. 使用 cobbler check 进行自检
提示了 7 条问题,一条一条来解决
1 2 3 4 5 6 7 8 9 10 11 12 ~]# cobbler check The following are potential configuration items that you may want to fix: 1 : ISC DHCP server (dhcp/dhcpd) is not installed 2 : change 'disable' to 'no' in /etc/xinetd.d/tftp 3 : 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. 4 : enable and start rsyncd.service with systemctl 5 : debmirror package is not installed, it will be required to manage debian deployments and repositories 6 : ksvalidator was not found, install pykickstart 7 : fencing tools were not found, and are required to use the (optional) power management features. install cman or fence-agents to use them Restart cobblerd and then run 'cobbler sync' to apply changes.
解决方法:
安装 dhcp 并 systemctl start dhcpd 解决
CentOS7 不用管,CentOS6 需要启动超级守护进程启动
其实不需要太多的 BootLoader,根据自己环境吧,可以忽略,我这里进行了升级,只是试一试,执行 cobbler get-loaders
1 2 3 4 5 6 7 8 9 10 11 12 13 14 [root@centos_1 ~]# cobbler get-loaders task started: 2019-06-30_202741_get_loaders task started (id=Download Bootloader Content, time=Sun Jun 30 20:27:41 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 *** TASK COMPLETE ***
没有检测到 rsync 的服务,启动 rsyncd.service 后解决
1 systemctl start rsyncd.service
deb 系的 Linux 发行版需要,如没有可以忽略,我这里选择忽略
提示没有安装 pykickstart,执行 yum install pykickstart 安装后解决
fencing 是高可用使用的,这里不需要,忽略
重启 cobblerd 服务
自检完成后,重启服务 systemctl restart cobblerd
导入镜像
cobbler 可以根据导入的镜像自动生成对应的 initrd.img 和 vmlinuz 内核文件
1 2 3 ~]# mount /root/CentOS-7-x86_64-Minimal-1810.iso /mnt ~]# cobbler import --name=CentOS-7 --arch =x86_64 --path=/mnt # --arch 选项不是必须指定,因为它通常会被自动检测
查看 distro 列表
可以看到刚刚导入的发行版了
1 2 ~]# cobbler distro list CentOS-7-x86_64
导入后 cobbler 会提供一个默认的 ks 文件,是最小化安装的,如果需要,可以自己定制一个 ks 文件,放置到 /var/lib/cobbler/kickstarts/ 下,并修改对应的 profiles 就可以了
使用 Cobbler 安装系统
创建一个新的虚拟机,通过网络引导,就可以看到下面这张图啦,默认是 local 从本地硬盘启动,移动光标选择第二行,就会按照设置好的 ks 文件自动安装了
三、安装 Cobble_web 用户界面
Cobbler 这么多命令记不住怎么办,可以安装 web 管理界面,操作相当简单
配置 web
1. 安装软件
2. 编辑配置文件
/etc/cobbler/modules.conf 看起来应该是这样的
1 2 3 4 5 [authentication] module = authn_configfile [authorization] module = authz_allowall
3. 更改 cobbler 用户名的密码
1 htdigest /etc/cobbler/users.digest "Cobbler" cobbler
重启服务
1 2 /sbin/service cobblerd restart /sbin/service httpd restart
打开浏览器
访问https://192.168.10.200/cobbler_web/,输入用户名密码,就可以使用 web 管理
点击 impory DVD 就可以导入 distro
打开网页提示 500 解决办法
如果浏览器提示 500 错误,解决方法如下
1 2 3 4 5 6 7 8 9 10 # 下载 pip.py wget https://bootstrap.pypa.io/get-pip.py # 调用本地 python 运行 pip.py脚本 python get-pip.py # 安装 pip pip install Django==1.8.9 # 查看 pip 版本号 python -c "import django; print(django.get_version())" # 重启 httpd systemctl restart httpd
注 :此解决方法来源于:Cobbler 登录web界面提示报错“Internal Server Error”
查看刚才导入的 distro
参考:
COBBLER 无人值守安装