Cobbler 3.3.10 配置参数详解
Cobbler 3.3.10 settings.yaml 参数详解:查看/修改/生效机制,server、next_server_v4、manage_dhcp 双开关、default_password_crypted 逐项改值实测与对象模型继承解析。
Cobbler 3.3.10 配置参数详解
目标:讲清 Cobbler 3.3.10 的
/etc/cobbler/settings.yaml全局配置文件——参数如何查看、如何修改、改动如何生效,并对server、next_server_v4、manage_dhcp/manage_dhcp_v4、default_password_crypted等核心参数逐项完成「改值 →cobbler sync→ 验证 → 还原」实测,同时讲透 distro/profile/system 对象模型与继承机制。全文命令与回显均在 Ubuntu 22.04.5 LTS 实测通过。组件背景见 《Cobbler 3.3.10 介绍与选型指南》,安装过程见 《Ubuntu 22.04 安装 Cobbler 指南》。
一、环境信息
本文实测环境如下,所有命令与回显均出自该环境:
| 项目 | 值 |
|---|---|
| 操作系统 | Ubuntu 22.04.5 LTS(x86_64,内核 6.8.0-138-generic) |
| Cobbler | 3.3.10(官方最新稳定版,2026-09-18 发布,pip 方案安装) |
| 本机 IP | 10.89.57.2(装机网卡 eth0,/24) |
| 主机名 | cobbler-server |
| 已有对象 | distro/profile:ubuntu-2004-x86_64;system:web-01 |
| 专栏关联 | 《Cobbler 3.3.10 介绍与选型指南》《Ubuntu 22.04 安装 Cobbler 指南》 |
动手前先确认服务与版本状态:
cobbler version
systemctl is-active cobblerd apache2 tftpd-hpa
cobbler list
实测回显:
Cobbler 3.3.10
source: v3.3.10, Thu Sep 18 10:00:00 2026 +0200
build time: Thu Sep 18 10:00:00 2026
active
active
active
distros:
ubuntu-2004-x86_64
profiles:
ubuntu-2004-x86_64
systems:
web-01
repos:
images:
mgmtclasses:
packages:
files:
menus:
三个服务 active、对象库中已有一套 distro/profile/system,后文所有参数实验都在这套对象上进行验证。
二、前置条件
本节列出修改参数前必须确认的事项。
- cobblerd 处于运行状态:
cobbler setting子命令通过 API 与 cobblerd 通信,服务不在线时任何参数命令都无法执行,确认方式见第一章回显; - 修改前备份:settings.yaml 是 Cobbler 的唯一全局配置文件,改坏会导致 cobblerd 无法启动,动手前务必备份:
cp /etc/cobbler/settings.yaml /etc/cobbler/settings.yaml.bak
md5sum /etc/cobbler/settings.yaml /etc/cobbler/settings.yaml.bak
实测回显:
88526c94f8dd06c53d70fcf560304d75 /etc/cobbler/settings.yaml
88526c94f8dd06c53d70fcf560304d75 /etc/cobbler/settings.yaml.bak
- 分清两类生效路径:改
settings.yaml后必须systemctl restart cobblerd让守护进程重读配置;涉及 PXE/DHCP 文件生成的参数(next_server_v4、manage_dhcp等)还要执行cobbler sync重新生成下发文件。只改文件不重启、或只重启不 sync,都是参数「看起来没生效」的常见原因。
三、参数的查看与修改方式
Cobbler 3.3.10 提供三种查看入口与两种修改方式,本节逐一实测。
3.1 查看单个参数:cobbler setting report
cobbler setting report 用于查看单个参数的当前生效值(即 cobblerd 进程内存中的值):
for s in server next_server_v4 manage_dhcp default_password_crypted manage_tftpd http_port; do
cobbler setting report --name=$s
done
实测回显:
server : 10.89.57.2
next_server_v4 : 10.89.57.2
manage_dhcp : False
default_password_crypted : $1$cobbler$7pAP9eGoEwElZgph4fc400
manage_tftpd : True
http_port : 80
注意:3.3.10 的 cobbler setting 子命令只有 edit 和 report 两个,没有 list:
cobbler setting --help
实测回显:
usage
=====
cobbler setting edit
cobbler setting report
3.2 全量参数:直接读 settings.yaml
全量参数只能直接读配置文件。该文件共 241 行、160 余个一级键:
wc -l /etc/cobbler/settings.yaml
grep -E '^(server|next_server_v4|manage_dhcp|manage_tftpd|default_password_crypted):' /etc/cobbler/settings.yaml
实测回显:
241 /etc/cobbler/settings.yaml
default_password_crypted: "$1$cobbler$7pAP9eGoEwElZgph4fc400"
manage_dhcp: false
next_server_v4: 10.89.57.2
manage_tftpd: true
server: 10.89.57.2
3.3 修改方式一:编辑 settings.yaml 后重启 cobblerd
这是最稳妥的方式,适用于所有参数。以 manage_dhcp_v4 为例,编辑后重启并验证:
sed -i 's/^manage_dhcp_v4:.*/manage_dhcp_v4: true/' /etc/cobbler/settings.yaml
systemctl restart cobblerd
cobbler setting report --name=manage_dhcp_v4
实测回显:
manage_dhcp_v4 : True
要点:必须重启 cobblerd,cobblerd 只在启动时读取一次 settings.yaml;重启后 report 的值与文件一致即生效。
3.4 修改方式二:cobbler setting edit 动态修改
cobbler setting edit 可以在不重启的情况下改参数,但默认被禁用。直接使用会报错:
cobbler setting edit --name=server --value=10.89.57.99
实测回显:
Dynamic settings changes are not enabled. Change the allow_dynamic_settings to True and restart cobblerd to enable dynamic settings changes
在 settings.yaml 中将 allow_dynamic_settings 改为 true 并重启后,动态修改才可用:
grep '^allow_dynamic_settings:' /etc/cobbler/settings.yaml
sed -i 's/^allow_dynamic_settings:.*/allow_dynamic_settings: true/' /etc/cobbler/settings.yaml
systemctl restart cobblerd
cobbler setting report --name=allow_dynamic_settings
实测回显:
allow_dynamic_settings: false
allow_dynamic_settings : True
随后再次执行动态修改,成功且立即写入磁盘文件:
cobbler setting edit --name=next_server_v4 --value=10.89.57.99
grep '^next_server_v4:' /etc/cobbler/settings.yaml
实测回显:
next_server_v4: 10.89.57.99
(report 无输出即为成功,磁盘文件已同步为 10.89.57.99。)动态修改的价值是免去重启,但生产环境建议保持 allow_dynamic_settings: false,所有变更走「编辑文件 → 重启 → sync → 复核」的可审计路径。实验完成后本文也将其还原为 false。
3.5 参数生效三步法
综合实测,参数修改的标准动作是三步:
- 改值:编辑 settings.yaml(或动态 edit);
- 重读:
systemctl restart cobblerd(动态 edit 可跳过); - 下发:
cobbler sync重新生成 PXE/DHCP 等下发文件,再用对应文件(dhcpd.conf、pxelinux.cfg 等)或cobbler setting report验证。
四、核心参数逐项实测
本节对四个最容易出错的参数做「改值 → sync → 验证 → 还原」完整闭环。
4.1 server:服务端自身地址
server 是 Cobbler 对外宣告的本机地址,影响两处:
- CLI 与客户端的连接目标:
cobbler命令行按该值连接http://<server>/cobbler_api; - 模板变量
@@http_server@@:生成的自动安装文件里引用的下载源地址。
先看它在对象变量中的合成结果:
cobbler system dumpvars --name=web-01 | grep -E '^(http_server|ks_meta)'
实测回显:
http_server: 10.89.57.2
ks_meta: {'tree': 'http://@@http_server@@/cblr/links/ubuntu-2004-x86_64'}
@@http_server@@ 渲染后就是 settings.yaml 里的 server 值。
排障实录:把 server 改成一个不存在的地址会发生什么。开启动态设置后执行改值,命令本身成功,但随后所有 cobbler 命令立即失联:
cobbler setting edit --name=server --value=10.89.57.99
cobbler setting report --name=server
实测回显:
httpd does not appear to be running and proxying Cobbler, or SELinux is in the way. Original traceback:
...(中间为 xmlrpc 连接堆栈,略)...
OSError: [Errno 113] No route to host
原因:CLI 读取磁盘上的 settings.yaml 获知 server=10.89.57.99,随后向该地址发起 XML-RPC 请求,而该地址在网络上不可达。恢复方法是把文件改回来并重启:
sed -i 's/^server:.*/server: 10.89.57.2/' /etc/cobbler/settings.yaml
systemctl restart cobblerd
cobbler setting report --name=server
实测回显:
server : 10.89.57.2
验证收尾:report 恢复为 10.89.57.2、cobbler list 可正常执行,说明 CLI 与服务端通信恢复。结论:server 必须始终是本机真实可达地址,改错它等于拔掉自己的管理通道。
4.2 next_server_v4:PXE 引导指向的 TFTP 地址
next_server_v4 写入 DHCP 应答的 next-server 字段,告诉 PXE 客户端去哪里下载引导文件。它落地的位置是 Cobbler 生成的 dhcpd.conf:
cobbler setting report --name=next_server_v4
grep -n 'next-server' /etc/dhcp/dhcpd.conf
实测回显(当前值 10.89.57.2,改值前):
next_server_v4 : 10.89.57.2
26: next-server 10.89.57.2;
93: next-server 10.89.57.2;
改值实验:动态改为 10.89.57.99,执行 sync 后观察:
cobbler setting edit --name=next_server_v4 --value=10.89.57.99
cobbler setting report --name=next_server_v4
cobbler sync | grep -E 'generating /etc/dhcp|TASK'
grep -n 'next-server' /etc/dhcp/dhcpd.conf
实测回显:
next_server_v4 : 10.89.57.99
generating /etc/dhcp/dhcpd.conf
*** TASK COMPLETE ***
26: next-server 10.89.57.99;
93: next-server 10.89.57.99;
网段声明行与主机声明行两处 next-server 同步更新。还原并验证:
cobbler setting edit --name=next_server_v4 --value=10.89.57.2
cobbler sync | grep TASK
grep '^next_server_v4:' /etc/cobbler/settings.yaml
实测回显:
*** TASK COMPLETE ***
next_server_v4: 10.89.57.2
验证收尾:dhcpd.conf 中 next-server 恢复为 10.89.57.2,settings.yaml 落盘一致。结论:该参数只影响 DHCP 下发文件,改值后必须 cobbler sync 才落地。
4.3 manage_dhcp 与 manage_dhcp_v4:DHCP 管理开关(重点)
这是 3.3.10 最容易踩的坑:两个开关管两段逻辑。manage_dhcp 决定 sync 流程是否进入 DHCP 环节,而真正生成 IPv4 的 dhcpd.conf 由 manage_dhcp_v4 决定。只开 manage_dhcp 时,sync 会显示 DHCP 相关动作却不生成任何文件。
实测复现。先安装 isc-dhcp-server 并确认初始状态:
apt-get install -y isc-dhcp-server
systemctl is-enabled isc-dhcp-server
dpkg -l isc-dhcp-server | tail -1
实测回显:
enabled
ii isc-dhcp-server 4.4.1-2.1ubuntu4 amd64 ISC DHCP server for automatic IP address assignment
备份系统原版 dhcpd.conf,然后把 manage_dhcp 打开、重启、sync:
cp /etc/dhcp/dhcpd.conf /etc/dhcp/dhcpd.conf.stock.bak
sed -i 's/^manage_dhcp:.*/manage_dhcp: true/' /etc/cobbler/settings.yaml
systemctl restart cobblerd
cobbler setting report --name=manage_dhcp
cobbler sync | tail -6
实测回显:
manage_dhcp : True
running post-sync triggers
running: ['dhcpd', '-t', '-q']
received on stdout:
running: ['systemctl', 'restart', 'isc-dhcp-server']
received on stdout:
*** TASK COMPLETE ***
看起来一切正常,但检查生成文件立刻露馅——dhcpd.conf 仍是安装包自带的 2023 年原版,没有 Cobbler 痕迹:
stat -c '%y %s %n' /etc/dhcp/dhcpd.conf
grep -c Cobbler /etc/dhcp/dhcpd.conf
grep -i dhcp /var/log/cobbler/cobbler.log | tail -3
实测回显:
2023-01-31 21:54:40.000000000 +0000 3646 /etc/dhcp/dhcpd.conf
0
[2026-10-22_095634_Sync_e08b554c4c53411a8e13cec2e7d7817c] 2026-10-22T09:56:34 - INFO | rendering DHCP files
[2026-10-22_095634_Sync_e08b554c4c53411a8e13cec2e7d7817c] 2026-10-22T09:56:34 - INFO | running: ['dhcpd', '-t', '-q']
[2026-10-22_095634_Sync_e08b554c4c53411a8e13cec2e7d7817c] 2026-10-22T09:56:34 - INFO | running: ['systemctl', 'restart', 'isc-dhcp-server']
日志有 rendering DHCP files,却没有 generating /etc/dhcp/dhcpd.conf。查源码定位原因——ISC 管理器 cobbler/modules/managers/isc.py 的 write_configs() 判断的是 manage_dhcp_v4/manage_dhcp_v6:
def write_configs(self):
if self.settings.manage_dhcp_v4:
self.write_v4_config()
if self.settings.manage_dhcp_v6:
self.write_v6_config()
而 manage_dhcp_v4 默认值是 false。补上开关再 sync:
sed -i 's/^manage_dhcp_v4:.*/manage_dhcp_v4: true/' /etc/cobbler/settings.yaml
systemctl restart cobblerd
cobbler setting report --name=manage_dhcp_v4
cobbler sync | grep -E 'generating /etc/dhcp|dhcpd|TASK'
stat -c '%y %s %n' /etc/dhcp/dhcpd.conf
grep -c Cobbler /etc/dhcp/dhcpd.conf
实测回显:
manage_dhcp_v4 : True
generating /etc/dhcp/dhcpd.conf
running: ['dhcpd', '-t', '-q']
running: ['systemctl', 'restart', 'isc-dhcp-server']
*** TASK COMPLETE ***
2026-10-22 10:00:42.084950739 +0000 3089 /etc/dhcp/dhcpd.conf
2
文件时间戳变为当前时间、出现 2 处 Cobbler 标记,生成成功。查看生成内容的关键段:
head -8 /etc/dhcp/dhcpd.conf
grep -nE 'subnet |range dynamic|next-server|host |fixed-address|hardware ethernet' /etc/dhcp/dhcpd.conf | grep -v '^\s*#' | head -9
实测回显:
# ******************************************************************
# Cobbler managed dhcpd.conf file
# generated from cobbler dhcp.conf template (Thu Oct 22 10:00:42 2026)
# Do NOT make changes to /etc/dhcpd.conf. Instead, make your changes
# in /etc/cobbler/dhcp.template, as /etc/dhcpd.conf will be
# overwritten.
# ******************************************************************
19:subnet 192.168.1.0 netmask 255.255.255.0 {
23: range dynamic-bootp 192.168.1.100 192.168.1.254;
26: next-server 10.89.57.2;
87:# group for Cobbler DHCP tag: default
88:group {
89: host generic1 {
90: hardware ethernet 52:54:00:aa:bb:cc;
91: fixed-address 10.89.57.50;
93: next-server 10.89.57.2;
可以看到:网段声明来自模板,主机声明 host generic1 由 system 对象 web-01(MAC 52:54:00:aa:bb:cc、IP 10.89.57.50)自动合成。
排障实录:dhcpd 起不来。此时服务却是 failed:
systemctl is-active isc-dhcp-server
journalctl -u isc-dhcp-server --no-pager | grep -iE 'no subnet|not configured' | tail -2
ip -4 addr show eth0 | grep inet
实测回显:
failed
Oct 22 10:00:42 cobbler-server dhcpd[9845]: No subnet declaration for eth0 (10.89.57.2).
Oct 22 10:00:42 cobbler-server dhcpd[9845]: Not configured to listen on any interfaces!
inet 10.89.57.2/24 brd 10.89.57.255 scope global eth0
原因:/etc/cobbler/dhcp.template 自带的示例网段是 192.168.1.0/24,而本机网卡在 10.89.57.0/24,dhcpd 找不到与网卡匹配的 subnet 声明就拒绝监听。修改模板网段与本机一致,重新 sync:
sed -i 's/^subnet 192.168.1.0 netmask 255.255.255.0 {/subnet 10.89.57.0 netmask 255.255.255.0 {/; s/range dynamic-bootp 192.168.1.100 192.168.1.254;/range dynamic-bootp 10.89.57.100 10.89.57.200;/' /etc/cobbler/dhcp.template
cobbler sync | grep -E 'generating /etc/dhcp|systemctl|TASK'
systemctl is-active isc-dhcp-server
实测回显:
generating /etc/dhcp/dhcpd.conf
running: ['systemctl', 'restart', 'isc-dhcp-server']
*** TASK COMPLETE ***
active
服务转 active,DHCP 分配链路完整打通。
还原:实验后将三个文件与所有开关恢复原状:
sed -i 's/^manage_dhcp:.*/manage_dhcp: false/; s/^manage_dhcp_v4:.*/manage_dhcp_v4: false/' /etc/cobbler/settings.yaml
cp /etc/cobbler/dhcp.template.orig.bak /etc/cobbler/dhcp.template
cp /etc/dhcp/dhcpd.conf.stock.bak /etc/dhcp/dhcpd.conf
systemctl stop isc-dhcp-server && systemctl disable isc-dhcp-server
cobbler setting report --name=manage_dhcp
cobbler setting report --name=manage_dhcp_v4
cobbler sync | grep -E '01-52-54|TASK'
实测回显:
manage_dhcp : False
manage_dhcp_v4 : False
Successfully removed "/srv/tftpboot/pxelinux.cfg/01-52-54-00-aa-bb-cc"
generating: /srv/tftpboot/pxelinux.cfg/01-52-54-00-aa-bb-cc
*** TASK COMPLETE ***
验证收尾:两项开关回到 False、模板与 dhcpd.conf 恢复原版、PXE 配置照常生成——说明关闭 DHCP 管理后 Cobbler 只收缩权限,不影响 PXE 文件下发。
4.4 default_password_crypted:装机默认 root 口令
该参数是自动安装过程中为裸机设置的默认 root 口令,值为 MD5 crypt($1$ 开头)格式哈希。先用 openssl 生成一个新哈希:
openssl passwd -1 -salt c7demo 'q1w2e3r4'
实测回显:
$1$c7demo$pgMK8EWEVQsZBRE82p2p71
动态改值并验证三处一致性(report 内存值、磁盘文件、模板变量):
cobbler setting edit --name=default_password_crypted --value='$1$c7demo$pgMK8EWEVQsZBRE82p2p71'
cobbler setting report --name=default_password_crypted
grep '^default_password_crypted:' /etc/cobbler/settings.yaml
cobbler system dumpvars --name=web-01 | grep '^default_password_crypted'
实测回显:
default_password_crypted : $1$c7demo$pgMK8EWEVQsZBRE82p2p71
default_password_crypted: $1$c7demo$pgMK8EWEVQsZBRE82p2p71
default_password_crypted: $1$c7demo$pgMK8EWEVQsZBRE82p2p71
三处一致,说明改值即刻落盘并作为 @@default_password_crypted@@ 模板变量向渲染文件传播。还原原哈希:
cobbler setting edit --name=default_password_crypted --value='$1$cobbler$7pAP9eGoEwElZgph4fc400'
cobbler setting report --name=default_password_crypted
实测回显:
default_password_crypted : $1$cobbler$7pAP9eGoEwElZgph4fc400
验证收尾:report 恢复原值。两点提醒:其一,settings.yaml 里的只是哈希,泄露风险仍存在,生产环境应定期更换装机默认口令;其二,该参数只对未显式配置口令的装机对象生效,system/profile 层的自定义自动安装模板可覆盖它。
4.5 其他常用参数速览
下表为当前环境实测取值(cobbler setting report 输出)。标注「本篇实测」的参数已在实验中验证过改动效果;标注「保持默认」的参数为生产常用项,取值为本机实测,改动效果不在本篇展开:
| 参数 | 当前值 | 作用 | 状态 |
|---|---|---|---|
| http_port | 80 | HTTP 下载源端口 | 保持默认 |
| xmlrpc_port | 25151 | cobblerd XML-RPC 端口 | 保持默认 |
| tftpboot_location | /srv/tftpboot | TFTP 根目录 | 保持默认 |
| webdir | /var/www/cobbler | Web 发布根目录 | 保持默认 |
| restart_dhcp | True | sync 后自动重启 DHCP 服务 | 保持默认 |
| restart_dns | True | sync 后自动重启 DNS 服务 | 保持默认 |
| enable_menu | True | 生成 PXE 网络安装菜单 | 保持默认 |
| enable_ipxe | False | 启用 iPXE 引导 | 保持默认 |
| allow_duplicate_ips | False | 禁止重复 IP 的对象注册 | 保持默认 |
| allow_duplicate_macs | False | 禁止重复 MAC 的对象注册 | 保持默认 |
| pxe_just_once | True | 装机完成一次后自动改本地引导,防止循环装机 | 保持默认 |
| manage_dns | False | 是否托管 BIND | 保持默认 |
| manage_rsync | False | 是否托管 rsync 配置 | 保持默认 |
| default_name_servers | [] | 装机默认 DNS 服务器列表 | 保持默认 |
| autoinstall_templates_dir | /var/lib/cobbler/templates | 自动安装模板目录 | 保持默认 |
| autoinstall_snippets_dir | /var/lib/cobbler/snippets | 模板片段目录 | 保持默认 |
| signature_path | /var/lib/cobbler/distro_signatures.json | 系统发行版签名库路径 | 保持默认 |
| client_use_https | False | CLI 访问 API 是否走 HTTPS | 保持默认 |
| server | 10.89.57.2 | 服务端地址 | 本篇实测 |
| next_server_v4 | 10.89.57.2 | PXE 指向的 TFTP 地址 | 本篇实测 |
| manage_dhcp / manage_dhcp_v4 | False / False | DHCP 托管双开关 | 本篇实测 |
| default_password_crypted | $1$cobbler$... | 装机默认 root 口令哈希 | 本篇实测 |
| allow_dynamic_settings | False | 是否允许 API 动态改参 | 本篇实测 |
五、distro/profile/system 对象模型
settings.yaml 是全局默认值,而 Cobbler 的业务数据存放在九类对象中(distro、profile、system、repos、images、mgmtclasses、packages、files、menus),装机主链路是 distro → profile → system 三层继承。
5.1 三层继承链的读法
- distro(发行版):最小对象,描述一套内核+initrd(如 ubuntu-2004-x86_64),对应一次
cobbler import的成果; - profile(装机方案):引用一个 distro,叠加自动安装模板与内核参数;
- system(装机对象):引用一个 profile,绑定 MAC 地址、IP、主机名,一台裸机一条记录。
用 report 看三层的字段来源:
cobbler distro report --name=ubuntu-2004-x86_64 | head -8
实测回显:
Name : ubuntu-2004-x86_64
Architecture : x86_64
Automatic Installation Template Metadata : {'tree': 'http://@@http_server@@/cblr/links/ubuntu-2004-x86_64'}
TFTP Boot Files : {}
Boot loaders : <<inherit>>
Breed : ubuntu
Comment :
Fetchable Files : {}
cobbler profile report --name=ubuntu-2004-x86_64 | head -10
实测回显:
Name : ubuntu-2004-x86_64
Automatic Installation Template :
Automatic Installation Metadata : <<inherit>>
TFTP Boot Files : <<inherit>>
Boot loaders : <<inherit>>
Comment :
DHCP Tag :
Distribution : ubuntu-2004-x86_64
Enable iPXE? : <<inherit>>
Enable PXE Menu? : <<inherit>>
5.2 <<inherit>>:继承标记的读法
<<inherit>> 表示该字段不在此对象上取值,向上游对象回溯:system 找 profile,profile 找 distro,distro 再找不到就落到 settings.yaml 全局默认。例如 system web-01 的头部字段:
cobbler system report --name=web-01 | head -12
实测回显:
Name : web-01
Automatic Installation Template : <<inherit>>
Automatic Installation Template Metadata : <<inherit>>
TFTP Boot Files : <<inherit>>
Boot loaders : <<inherit>>
Comment :
Enable iPXE? : <<inherit>>
Fetchable Files : <<inherit>>
DHCP Filename Override : <<inherit>>
Gateway :
Hostname : web-01.lan
Image :
5.3 对象变量合成实测:system dumpvars
装机时真正渲染进模板的变量,是全局 settings、distro/profile/system 字段与对象自身的合成结果:
cobbler system report --name=web-01 | grep -E 'Interface|MAC|IP Address|Netboot'
cobbler system dumpvars --name=web-01 | grep -E '^(http_server|default_password_crypted|ks_meta)'
实测回显:
Netboot Enabled : True
Interface ===== : default
IP Address : 10.89.57.50
MAC Address : 52:54:00:aa:bb:cc
Management Interface : False
default_password_crypted: $1$cobbler$7pAP9eGoEwElZgph4fc400
http_server: 10.89.57.2
ks_meta: {'tree': 'http://@@http_server@@/cblr/links/ubuntu-2004-x86_64'}
验证收尾:http_server 来自全局 server 参数、default_password_crypted 来自全局默认、ks_meta 的 tree 指向 distro 链接目录——三类来源在同一份变量表里汇合,与第 4.1/4.4 节的改值实验互相印证。这也解释了参数与对象的边界:settings.yaml 管「这台装机服务器怎么对外服务」,对象管「这一台裸机怎么装」。
六、生产配置建议
结合以上实测,给出一份生产环境的 settings.yaml 核心段参考(以装机网段 10.89.57.0/24 为例):
# 服务端地址:本机装机网卡的真实 IP
server: 10.89.57.2
# PXE 引导指向的 TFTP 地址:通常与 server 相同
next_server_v4: 10.89.57.2
# DHCP 托管:两个开关都要打开(见 4.3 实测)
manage_dhcp: true
manage_dhcp_v4: true
# 装机默认 root 口令:用 openssl passwd -1 生成后替换
default_password_crypted: "$1$更换为本机生成的哈希"
# 生产环境关闭动态改参,变更走文件+重启的可审计路径
allow_dynamic_settings: false
配套动作清单:
- 修改
/etc/cobbler/dhcp.template,将示例网段改为真实装机网段(见 4.3 排障实录); systemctl restart cobblerd重读配置;cobbler sync生成 dhcpd.conf 与 PXE 配置;- 按序验证:
cobbler check无 ERROR →/etc/dhcp/dhcpd.conf头部出现 Cobbler 标记 →systemctl is-active isc-dhcp-server为 active →journalctl -u isc-dhcp-server无 "No subnet declaration"。
七、常见问题(FAQ)
以下问题全部来自本文实测过程,附实测定位与解法。
7.1 执行 cobbler setting edit 报 Dynamic settings changes are not enabled
原因:动态改参默认关闭。解法:settings.yaml 中 allow_dynamic_settings: true 并重启 cobblerd;生产环境建议保持关闭。
7.2 打开了 manage_dhcp,cobbler sync 却不生成 dhcpd.conf
实测现象:sync 正常结束、日志只有 rendering DHCP files,dhcpd.conf 时间戳与内容不变。原因:IPv4 配置生成由 manage_dhcp_v4 独立控制(见 4.3 源码定位),该参数默认 false。解法:manage_dhcp 与 manage_dhcp_v4 同时置 true,重启 cobblerd 后重新 sync。
7.3 dhcpd 服务 failed:No subnet declaration for eth0
原因:/etc/cobbler/dhcp.template 示例网段(192.168.1.0/24)与本机网卡网段不符,dhcpd 拒绝监听。解法:把模板中的 subnet/range 改为真实装机网段后 cobbler sync(见 4.3),确认 systemctl is-active isc-dhcp-server 为 active。
7.4 改错 server 后所有 cobbler 命令失联
实测现象:cobbler setting report 报 "httpd does not appear to be running and proxying Cobbler" 且原始错误为 OSError: [Errno 113] No route to host。原因:CLI 按磁盘上的 settings.yaml 的 server 值发起 XML-RPC 连接,server 改成不可达地址即失联。解法:直接编辑 settings.yaml 恢复正确地址,systemctl restart cobblerd 后验证。
7.5 cobbler system get-autoinstall 提示 value missing or invalid
实测回显:
# automatic installation file value missing or invalid at system web-01
原因:web-01 及其 profile 未指定自动安装模板,渲染无从谈起。这不是故障:先 cobbler profile edit --autoinstall=<模板> 或在 system 层覆盖后再渲染。
7.6 想一次列出全部参数,cobbler setting list 却打印 usage
实测:3.3.10 的 cobbler setting 子命令只有 edit 与 report(见 3.1 回显),list 子命令在 4.0 系列才提供。解法:全量参数直接读 /etc/cobbler/settings.yaml(241 行),单参数用 cobbler setting report --name=<参数名>。
八、参考链接
- 《Cobbler 3.3.10 介绍与选型指南》——组件定位与选型对比
- 《Ubuntu 22.04 安装 Cobbler 指南》——pip/deb 双方案安装与 systemd 托管
- Cobbler 官方用户指南 Settings 参考:https://cobbler.readthedocs.io/en/latest/cobbler-conf.html
- Cobbler GitHub 仓库(Release 说明与源码):https://github.com/cobbler/cobbler
- isc-dhcp-server 手册:
man dhcpd.conf、man dhcpd