cobbler自動化安裝centos7.6


一、cobbler介紹

1.前言

cobbler 是基於 python 語言開發的 pxe 二次封裝的網絡安裝服務;可以多系統選自自動化安裝配置。可以通過 Web 圖形化界面配置,其安裝包為 cobbler,在 epel 源上,配置過程中某些過程可能需要依賴互聯網環境。

2.Cobbler可以干什么

使用 Cobbler,無需進行人工干預即可安裝機器。Cobbler 設置一個 PXE 引導環境(它還可以使用 yaboot 支持 PowerPC),並控制原裝相關的所有方面,比如網絡引導服務(DHCP 和 TFTP)與存儲庫鏡像。當希望安裝一台新機器時,Cobbler 可以:
1)使用一個以前定義的模板來配置 DHCP 服務(如果啟用了管理 DHCP)
2)講一個存儲庫(yum 或 rsync)建立鏡像或解壓縮一個媒介,以注冊一個新操作系統
3)在 DHCP 配置文件中為需要安裝的機器創建一個條目,並使用指定的參數(IP 和 MAC)
4)在 TFTP 服務目錄下創建適當的 PXE 文件
5)重新啟動 DHCP 服務來反應新的更改
6)重新啟動機器以開始安裝(如果電源管理已啟動

3.Cobbler 支持的系統和功能

Cobbler 支持眾多的發行版:Redhat、Fedora、CentOS、Debian、Ubuntu 和 SUSE。當添加一個操作系統(通常通過使用 ISO 文件)時,Cobbler 知道如何解壓縮合適的文件並調整網絡服務,以正確引導機器。
Cobbler 可以使用 kickstart 模板。基於 Redhat 或 Fedora 的系統使用 kickstart 文件來自動化安裝流程,通過使用模板,就會擁有基本 kickstart 模板,然后定義如何針對一種配置文件或機器配置而替換其中的變量。例如,一個模板可能包含兩個變量 $domain 和 $machine_name。在 Cobbler 配置中,一個配置文件指定 domain=mydomain.com,並且每台使用該配置文件的機器在 machine_name 變量中指定其名稱。該配置文件的所有機器都是用相同的 kickstart 安裝且針對 domain=mydomain.com 進行配置,但每台機器擁有其自己的機器名稱。仍然可以使用 kickstart 模板在不同的域中安裝其他機器並使用不同的機器名稱。
為了協助管理系統,Cobbler 可通過 fence_scripts 連接到各個電源管理環境。Cobbler 支持 apc_snmp、bladecenter、bullpap、drac、ether_wake、ilo、integrity、ipmilan、ipmitool、Ipar、rsa、virsh 和 wti。要重新安裝一台機器,可運行 reboot system foo 命令,而且 Cobbler 會使用必要的和信息來為您運行恰當的 fence scripts(比如機器插槽數)。
除了這些特性,還可以使用一個配置管理系統(CMS)。有兩種選擇:該工具內的一個內部系統,或者現成的外部 CMS,比如 Chef 或 Puppet。借助內部系統,你可以指定文件模板,這些模板會依據配置參數進行處理(與 kickstart 模板的處理方式一樣),然后復制到你指定的位置。如果必須自動將配置文件部署到特定機器,那么此功能很有用。
使用 koan 客戶端,Cobbler 可從客戶端配置虛擬機並重新安裝系統。

4.Cobbler 提供的服務集成

PXE 服務支持
DHCP 服務管理
DNS 服務管理(可選bind,dnsmasq)
電源管理
Kickstart 服務支持
yum 倉庫管理
TFTP (PXE 啟動時需要)
Apache(提供 kickstart 的安裝源,並提供定制化的 kickstart 配置)
同時,它和 apache 做了深度整合

5.PXE工作流程圖

因為 cobbler 基於 pxe 二次封裝的,所以了解 PXE 工作流程也重要,圖如下:

6.PXE + Kickstart 無人值守安裝操作系統完整過程

從上圖可以看出:

  • 配置服務,比如 DHCP、TFTP、(HTTP、FTP和NFS)
  • 在 DHCP 和 TFTP 配置文件中填入哥哥客戶端機器的信息
  • 創建自動部署文件(比如 kickstart)
  • 將安裝媒介解壓縮到 HTTP/FTP/NFS 存儲庫中

7.cobbler 的組成

Cobbler 的配置結構基於一組注冊的對象。沒個對象表示一個與另一個實體相關聯的實體(該對象指向另一個對象,或者另一個對象指向該對象)。當一個對象指向另一個對象時,它就集成了被指向對象的數據,並可覆蓋或添加更多特定信息。
以下對象類型的定義為:
發行版:表示一個操作系統。它承載了內核和 initrd 的信息,以及內核參數等其他數據;
配置文件:包含一個發行版、一個 kickstart 文件以及可能的存儲庫,還包含更多特定的內核參數等其他數據;
系統:表示要配給的機器。它把汗一個配置文件或一個鏡像,還包含 IP 和 MAC;地址、電源管理(地址、憑據、類型)以及更為專業的數據等信息;
存儲庫:保存一個 yum 或 rsync 存儲庫的鏡像信息;
鏡像:可替換一個包含不屬於此類別的文件的發行版對象(例如,無法分為內核和 initrd 的對象);
基於注冊的對象以及各個對象之間的關聯,Cobbler 知道如何更改文件系統以反應具體配置。因為系統配置的內部是抽象的,所以可以僅關注想要執行的操作。

8.cobbler 的工作流程

二、cobbler 安裝

必要服務
1)cobbler (cobbler 的核心)
2)httpd (提供 cobbler 的 web 界面)
3)dhcpd (為自動安裝系統分配 IP 地址)
4)epel-release(為之提供yum源)
5)rsync (cobbler 需要同步信息)
6)cobbler-web (cobbler 的一個 web 插件)
7)xinetd (為 rsync 和 tftp 的守護進程)
8)tftp (傳送安裝的一些文件的 類似ftp)

1.關閉防火牆和 selinux

systemctl stop firewalld
systemctl disable firewalld
sed -i '/SELINUX/s/enforcing/disabled/' /etc/selinux/config

2.cobbler 安裝

1.安裝阿里雲epel基礎鏡像源

wget -O /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-7.repo

2.cobbler 安裝,fence-agents 可不安裝,tftp 通過 xinetd 管理

cobbler 和 apache 有深度配合所以安裝 apache,不要安裝 nginx 否則生成不了相關配置

yum install -y httpd dhcpd tftp python-ctypes cobbler cobbler-web pykickstart fence-agents xinetd rsync

3.啟動相關服務

systemctl start httpd xinetd cobblerd.service
systemctl enable httpd xinetd cobblerd.service

4.檢查cobbler配置

cobbler 的幫助命令為 cobbler –help

cobbler check

解決方法:

  • /etc/cobbler/settings 中server配置成具體的服務器 ip 地址
  • /etc/cobbler/settings 中next_server也修改為具體的 ip 地址
  • /etc/xinetd.d/tftp 中disable從 yes 改為 no
  • 運行cobbler get-loaders網絡引導加載程序
  • 開啟rsync 服務並設置為開機啟動,systemctl start rsyncd、systemctl enable rsyncd
  • debian 系統需要安裝 debmirror 包,這里是 centos 所以不用安裝
  • openssl passwd -1 -salt 需要安裝系統登錄名 需要安裝系統登錄密碼生成字段寫入/etc/cobbler/settings 中default_password_crypted字段
  • 應用修改 systemctl restart cobblerd cobbler sync

5.讓 cobbler 管理 DHCP

1.編輯 cobbler 中 dhcp 模板
cd /etc/cobbler
cp dhcp.template dhcp.template.org
sed -i '/^subnet/s/192.168.1.0/172.16.80.0/' dhcp.template
sed -i '/routers/s/192.168.1.5/172.16.80.254/' dhcp.temlpate
sed -i '/domain-name-servers/s/192.168.1.1/172.16.18.245/' dhcp.template
sed -i '/dynamic-bootps/s/192.168.1.100 192.168.1.254/172.16.80.100 172.16.80.200/' dhcp.template

把里面的信息修改為和自己同一個局域網的

2.修改/etc/cobbler/settings 配置文件
sed -i '/manage_dhcp:/s/0/1/' /etc/cobbler/settings
systemctl restart cobblerd
sleep 2
cobbler sync

cat /etc/dhcp/dhcpd.conf

3.掛載 iso 鏡像讓 cobbler 處理生成

上傳 iso 鏡像文件到服務器,並掛載到目錄

mkdir /mnt/iso
mount -o loop -t iso9660 CentOS-7-x86_64-Minimal-1810.iso /mnt/iso

用 cobbler 導入系統

cobbler import --path=/mnt/iso --name=CentOS-7.6-x86_64 --arch=x86_64
cobbler profile list
cobbler profile report

上面在導入系統的過程中 cobbler 幫我們自己生成了相關的配置,關聯 dhcp,pxe安裝菜單
生成 Kickstart 文件,可以看一下里面有哪些東西

cd /var/lib/cobbler/kickstarts/
less sample_end.ks
mv sample_end.ks sample_end.ks.bak

生成的 Kickstart 文件可以根據自己的需要進行修改,前提是要熟悉原生的 Kickstart 語法, 可以參考
kickstart使用詳細指南

4.修改 cobbler 生成的 Kickstart 文件 CentOS-7.6-x86_64.ks
[root@k8s-node2 ~]# cat /var/lib/cobbler/kickstarts/CentOS-7.6-x86_64.ks
# This kickstart file should only be used with EL > 5 and/or Fedora > 7.
# For older versions please use the sample.ks kickstart file.

#platform=x86, AMD64, or Intel EM64T
# System authorization information
auth  --useshadow  --enablemd5
# System bootloader configuration
bootloader --location=mbr
# Partition clearing information
clearpart --all --initlabel
# Use text mode install
text
# Firewall configuration
firewall --disabled
# Run the Setup Agent on first boot
firstboot --disable
# System keyboard
keyboard us
# System language
lang en_US
# Use network installation
url --url=$tree
# If any cobbler repo definitions were referenced in the kickstart profile, include them here.
$yum_repo_stanza
# Network information
# $SNIPPET('network_config')
network  --bootproto=dhcp --device=enp1s0 --onboot=on  #配置網卡默認自動開啟DHCP功能,配置網卡名稱為enp1s0
# Reboot after installation
reboot

#Root password
rootpw --iscrypted $1$root$AKl5mABzn4OHUp7t27Sp1/ 
# SELinux configuration
selinux --disabled
# Do not configure the X Window System
skipx
# System timezone
timezone  Asia/Shanghai                                          #設置時區為中國上海時區
# Install OS instead of upgrade
install
# Clear the Master Boot Record
zerombr
clearpart --all --initlabel
part /boot --fstype="xfs" --size=2048                            #boot分區給2G大小
part swap  --fstype="swap" --size=16384                          #swap分區給內存大小的2倍
part / --fstype="xfs" --size=122880                              #/分區給120G大小
part /var --fstype="xfs" --size=1765376                          #var分區給剩下磁盤大小
# Allow anaconda to partition the system as needed
# autopart

%pre
$SNIPPET('log_ks_pre')
$SNIPPET('kickstart_start')
$SNIPPET('pre_install_network_config')
# Enable installation monitoring
$SNIPPET('pre_anamon')
%end

%packages
$SNIPPET('func_install_if_enabled')
%end

%post --nochroot
$SNIPPET('log_ks_post_nochroot')
%end

%post
$SNIPPET('log_ks_post')
# Start yum configuration
$yum_config_stanza
# End yum configuration
$SNIPPET('post_install_kernel_options')
$SNIPPET('post_install_network_config')
$SNIPPET('func_register_if_enabled')
$SNIPPET('download_config_files')
$SNIPPET('koan_environment')
$SNIPPET('redhat_register')
$SNIPPET('cobbler_register')
# Enable post-install boot notification
$SNIPPET('post_anamon')
# Start final steps
$SNIPPET('kickstart_done')
# End final steps
%end
5.cobbler 加載 CentOS-7.6-x86_64.ks 配置文件
cobbler profile edit --name=CentOS-7.6-x86_64 --kickstart=/var/lib/cobbler/kickstarts/CentOS-7.6-x86_64.ks
systemctl restart cobblerd
sleep 2
cobbler sync

查看cobbler生成配置

cobbler profile report


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM