Cobbler 整合 DHCP、TFTP、PXE、Kickstart,實現 Linux 系統裸機/虛擬機快速無人值守部署。本文記錄在 CentOS 6/7 環境下,從 EPEL 安裝、服務啟動、cobbler check 逐項修復、DHCP/TFTP 配置、鏡像導入、Profile/Kickstart 定製、cobbler sync 生效、虛擬機驗證的完整步驟。
# 配置 EPEL
rpm -ivh https://mirrors.ustc.edu.cn/fedora/epel/6/i386/epel-release-6-8.noarch.rpm
# 安裝
yum -y install cobbler
# 啟動服務
service httpd start
service cobblerd start
chkconfig httpd on
chkconfig cobblerd on
cobbler check
# 典型輸出與修復:
# 1. next_server / server IP 未設定
vi /etc/cobbler/settings
next_server: 192.168.83.137
server: 192.168.83.137
# 2. manage_tftpd: 1 (讓 cobbler 管理 tftp)
manage_tftpd: 1
# 3. 缺少 syslinux (PXE 載入器)
yum -y install syslinux
cp /usr/share/syslinux/* /var/lib/cobbler/loaders/
# 4. rsync 未啟用
chkconfig rsync on
service xinetd start # rsync 由 xinetd 管理
# 5. 缺少 pykickstart (驗證 ks 語法)
yum -y install pykickstart
# 6. 預設密碼未加密
openssl passwd -1 -salt 'openssl rand -hex 4'
# 輸出雜湊值填入 default_password_crypted
vi /etc/cobbler/settings
default_password_crypted: "$1$xxxx$yyyy"
yum -y install dhcp
cp /usr/share/doc/dhcp-4.1.1/dhcpd.conf.sample /etc/dhcp/dhcpd.conf
vi /etc/dhcp/dhcpd.conf
# 關鍵段落:
subnet 192.168.83.0 netmask 255.255.255.0 {
range 192.168.83.50 192.168.83.100;
option routers 192.168.83.137;
option domain-name-servers 192.168.83.137;
next-server 192.168.83.137;
filename "pxelinux.0";
}
service dhcpd start
chkconfig dhcpd on
⚠ 生產環境通常禁用 DHCP,需依 MAC 綁定固定 IP,Cobbler 支援 dhcp-template 客製化。
chkconfig tftp on
service xinetd restart
# 驗證
netstat -an | grep :69
# 掛載 ISO
mount -o loop /dev/cdrom /media
# 匯入 (自動解析 kernel/initrd、建立 distro)
cobbler import --name=CentOS-6.5-x86_64 --path=/media
# 產生 distro: CentOS-6.5-x86_64
# 驗證 ks 檔語法
ksvalidator /path/to/centos6.ks
# 建立 profile
cobbler profile add --name=CentOS-6.5-x86_64-basic \
--distro=CentOS-6.5-x86_64 \
--kickstart=/path/to/centos6.ks
# 列出 profile
cobbler profile list
# 平台特定
install
url --url=https://192.168.83.137/cblr/links/CentOS-6.5-x86_64
lang en_US.UTF-8
keyboard us
network --bootproto=dhcp --device=link
rootpw --iscrypted $1$xxxx$yyyy
firewall --disabled
authconfig --enableshadow --passalgo=sha512
selinux --disabled
timezone Asia/Taipei
bootloader --location=mbr --driveorder=sda --append="crashkernel=auto rhgb quiet"
clearpart --all --initlabel --drives=sda
part /boot --fstype=ext4 --size=500
part pv.01 --size=1 --grow
volgroup vg_root pv.01
logvol / --fstype=ext4 --name=lv_root --vgname=vg_root --size=10240 --grow
logvol swap --fstype=swap --name=lv_swap --vgname=vg_root --size=2048
reboot
%packages
@core
@base
%end
%post
# 後安裝腳本:配置 yum 源、SSH 金鑰、監控代理等
%end
cobbler sync
service cobblerd restart
# 查看生成的 PXE 選單
cat /var/lib/tftpboot/pxelinux.cfg/default
Bridge 或 NAT (需 DHCP 可達)。CentOS-6.5-x86_64-basic。| 現象 | 原因 | 解決 |
|---|---|---|
| PXE 取得 IP 但無法下載 kernel | TFTP 防火牆阻擋 / 路徑錯誤 | 開放 UDP 69;確認 /var/lib/tftpboot 權限 |
| Kickstart 卡在磁碟分區 | ks 檔 clearpart/part 指令不符實體磁碟 | 調整 --drives、--size、LVM 邏輯 |
| cobbler sync 失敗 | DHCP 設定語法錯誤 / 模板缺失 | cobbler check、檢查 /etc/cobbler/dhcp.template |