網絡安裝服務器套件 Cobbler(補鞋匠)從前,我們一直在做裝機民工這份很有前途的職業。自打若干年前 Red Hat 推出了 Kickstart,此後我們頓覺身價倍增。不再需要刻了光盤一臺一臺地安裝 Linux,只要搞定 PXE、DHCP、TFTP,還有那滿屏眼花繚亂不知所云的 Kickstart 腳本,我們就可以像哈里波特一樣,輕點魔棒,瞬間安裝上百臺服務器。這一堆花裏胡哨的東西可不是一般人都能整明白的,沒有大專以上學歷,通不過英語四級, 根本別想玩轉。總而言之,這是一份多麼有前途,多麼有技術含量的工作啊。很不幸,Red Hat 最新(Cobbler項目最初在2008年左右發佈)發佈了網絡安裝服務器套件 Cobbler(補鞋匠),它已將 Linux 網絡安裝的技術門檻,從大專以上文化水平,成功降低到初中以下,連補鞋匠都能學會。
Cobbler 的優點:自動管理各個服務器間的配置,更強大的管理功能。而且它還有 Web 管理界面,可以通過點一點鼠標就可以安裝一臺主機,Kickstart 的模板文件可以配置多個。
參照上圖所示,Cobbler 運行流程如下:
- Server 端:
- 啓動 Cobbler 服務
- 進行 Cobbler 錯誤檢查,執行 Cobbler check 命令
- 進行配置同步,執行 Cobbler sync 命令
- 複製相關啓動文件文件到 TFTP 目錄中
- 啓動 DHCP 服務,提供地址分配
- DHCP 服務分配 IP 地址
- TFTP 傳輸啓動文件
- Server 端接收安裝信息
- Server 端發送 ISO 鏡像與 Kickstart 文件
- Client 端:
- 客戶端以 PXE 模式啓動
- 客戶端獲取 IP 地址
- 通過 TFTP 服務器獲取啓動文件
- 進入 Cobbler 安裝選擇界面
- 客戶端確定加載信息
- 根據配置信息準備安裝系統
- 加載 Kickstart 文件
- 傳輸系統安裝的其它文件
- 進行安裝系統
下面我們開始搭建 Cobbler 無人值守安裝服務器
- 關閉 selinux、iptables和 Friewall
- 需要使用 yum 的 epel 源,具體設置請參照拙作:https://blog.csdn.net/gaofei0428/article/details/102903468
- 安裝 Cobbler 有一部分軟件會被當做依賴進行安裝上去,比如 tftp 和 httpd 服務
- yum -y install cobbler cobbler-web dhcp tftp-server pykickstart httpd rsync xinetd
- cobbler #Cobbler 程序包
- cobbler-web #Cobbler 的 Web 服務包
- pykickstart #Cobbler 檢查 kickstart 語法錯誤
- httpd #Apache Web 服務
- xinetd #超級守護進程
- 注:如果安裝過程中缺少 rpm 包,可以到以下網站自行下載安裝
- https://pkgs.org/
-
/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
- 首先啓動 Cobbler 和 httpd 服務
- systemctl start cobblerd
- systemctl start httpd
- 設置爲開機自啓動
- systemctl enable cobblerd
- systemctl enable httpd
- 啓動無誤後,編輯 /etc/cobbler/settings Cobbler 主配置文件
-
vim /etc/cobbler/settings
-
搜索 server 和 next_server 修改爲對應的服務器 IP
-
修改安裝操作系統默認 root 用戶密碼,使用 openssl 加密
-
openssl passwd -1 -salt 'root' '123456'
-
$1$root$j0bp.KLPyr.u9kgQ428D10
-
修改 Cobbler 管理 dhcp 服務
-
manage_dhcp: 1
-
manage_tftpd: 1 #默認已開啓
- 防止客戶端重複安裝操作系統,增加默認從本機硬盤啓動菜單
- pxe_just_once: 1
-
修改 tftp 服務被 xinetd 服務管理
- vim /etc/xinetd.d/tftp
- 安裝完默認是 disable = yes 關閉狀態,修改爲 disable = no
-
下載操作系統引導文件
-
cobbler get-loaders
-
開啓 rsyncd 服務,設置爲開機自啓動
-
systemctl start rsyncd
-
systemctl enable rsyncd
-
配置 DHCP,Cobbler 自動管理 DHCP 服務,只需要修改 Cobbler 中的模板配置文件
- vim /etc/cobbler/dhcp.template
-
subnet 192.168.10.0 netmask 255.255.255.0 #配置默認爲 192.168.1.0 網段,具體要看你的裝機 vlan 劃分
-
option routers 192.168.10.2; #按照實際的網關爲準
-
option domain-name-servers 192.168.10.2; #修改 DNS 地址
-
range dynamic-bootp 192.168.10.100 192.168.10.254; # 可分配的起始IP-結束IP
-
$next_server 爲變量值(前面修改的主配置文件中的地址 192.168.10.2)
-
導入鏡像以及配置
- 掛載光驅
-
導入鏡像(時間較長)
-
cobbler import --path=/mnt/cdrom --name=CentOS-7.5 --arch=x86_64
-
查看鏡像,上面是鏡像名稱,下面是啓動菜單
-
cobbler list
-
確認配置無誤後,同步配置文件,需要先重啓 Cobblerd
-
systemctl restart cobblerd
-
cobbler sync
-
檢查配置
-
cobbler check
-
下面這2個錯誤可以忽略
-
定製 ks 自動應答文件
- cobbler profile list
- cobbler profile report --name=CentOS-7.5-x86_64
- 默認使用的是 /var/lib/cobbler/kickstarts/sample_end.ks
- 改變默認的 ks 文件(需要 root 用戶)
- cobbler profile edit --distro=CentOS-7.5-x86_64 --name=CentOS-7.5-x86_64 --kickstart=/var/lib/cobbler/kickstarts/CentOS7.5.ks
- cobbler profile list
- cobbler profile report --name=CentOS-7.5-x86_64
- 編輯 vim /var/lib/cobbler/kickstarts/CentOS7.5.ks 文件
-
install #全新安裝
text #安裝模式爲文字界面
url --url=$tree # 指定 ks 自動應答文件位置,引用Cobbler的內置變量 $tree
auth --enableshadow --passalgo=sha512 #設置系統的授權選項
firstboot --enable
reboot #安裝完成後自動重啓
keyboard us #默認鍵盤設置
lang en_US.UTF-8 #默認語言設置
timezone --utc Asia/Shanghai #默認時區設置
rootpw --iscrypted $default_password_crypted #默認 root 用戶密碼設置,引用 /etc/cobbler/settings 中設置的變量
firewall --disable #關閉防火牆以及selinux
selinux --disable
ignoredisk --only-use=sda #指定安裝到哪個硬盤
bootloader --append="quiet crashkernel=auto" --location=mbr --boot-drive=sda #指定在那個硬盤安裝 mbr 引導
network --bootproto=dhcp --device=eth0 --onboot=on #指定網卡名稱以及啓動方式
zerombr #清空硬盤的 mbr 信息
clearpart --all --initlabel #清空硬盤所有分區
part /boot --fstype="xfs" --ondisk=sda --size=200 #創建 boot 分區 指定大小爲 200MB
part pv.156 --fstype="lvmpv" --ondisk=sda --size=1 --grow #創建 pv 卷組,自動擴展到最大容量
volgroup centos --pesize=4096 pv.156 #創建 vg 指定 pesize 爲 4096 KB
logvol swap --fstype="swap" --size=2047 --name=swap --vgname=centos #創建swap 分區 ,指定大小爲 2047 MB
logvol / --fstype="xfs" --vgname=centos --size=1 --grow #創建 lvm 根分區 自動擴展到最大容量%packages #定製安裝爲 最小化安裝
@^minimal
@core
chrony
kexec-tools
%end - 檢測 ks 文件是否有錯
- ksvalidator /var/lib/cobbler/kickstarts/CentOS7.5.ks
- 檢測 KS 文件是否能正常訪問
- 新建一個虛擬機測試安裝,關閉 VMware Workstation 自帶的 VMnetDHCP 服務
- 注意安裝 CentOS 7.X 的內存不能小於 2G ,否則會報錯
-
添加新的安裝選項 Centos-6.9-x86_64
- 掛載 Centos-6.9 光盤
- mount /sr0 /mnt/cdrom && mount /sr1 /mnt/cdrom1
- Centos 6.9 有2張 安裝DVD,導入DVD1 鏡像後,將第2張 DVD上的 Packages/ 文件夾下,所有文件拷貝到 /var/www/cobbler/ks_mirro/Centos-6.9-x86_64/Packages 下面即可
- 首先導入第一張DVD鏡像
- cobbler import --path=/mnt/cdrom --name=Centos-6.9 --arch=x86_64
- 拷貝文件
- \cp -r -a /mnt/cdrom1/Packages/* /var/www/cobbler/ks_mirror/Centos-6.9-x86_64/Packages/
- 查看列表
- cobbler profile list
- 總大小爲 5.8 G
- 使用 cobbler profile list 命令查看列表有錯誤的話,可以刪除掉重新添加
- cobbler profile remove --name=對應錯誤的名稱
- 複製一份之前創建的 ks 自動應答文件,修改爲對應的啓動菜單名稱
- \cp -a /var/lib/cobbler/kickstarts/CentOS7.5.ks /var/lib/cobbler/kickstarts/CentOS6.9.ks
-
注意 CentOS 6 系列默認不支持 xfs 硬盤分區格式,要做適當修改
- bootloader --append="crashkernel=auto rhgb quiet" --location=mbr --driveorder="sda" #這裏要改成 --driveorder
network --bootproto=dhcp --device=eth0 --onboot=on
zerombr
clearpart --all --initlabel
part /boot --fstype=ext4 --size=200 #修改爲 ext4 ,更低版本CentOS的要修改成 ext3
part pv.008002 --grow --size=1
volgroup VolGroup --pesize=4096 pv.008002
logvol / --fstype=ext4 --name=lv_root --vgname=VolGroup --grow --size=1 #修改爲 ext4 ,更低版本CentOS的要修改成 ext3
logvol swap --name=lv_swap --vgname=VolGroup --size=2048%packages #定製安裝那些包
@base #基本包組,相當於最小化安裝
@core
%end
- 檢測 ks 文件是否有錯
- ksvalidator /var/lib/cobbler/kickstarts/CentOS6.9.ks
- 將 Centos6.9.ks 文件關聯到 Centos-6.9-x86_64
- cobbler profile list
- 注意對應的名稱
- cobbler profile edit --distro=Centos-6.9-x86_64 --name=Centos-6.9-x86_64 --kickstart=/var/lib/cobbler/kickstarts/CentOS6.9.ks
- cobbler profile report --name=Centos-6.9-x86_64
- 重啓 cobblerd 服務
- systemctl restart cobblerd
- cobblerd sync
-
打開剛纔新建的虛擬機進行測試安裝 - 設置爲從網絡啓動