1. 程式人生 > 實用技巧 >cobbler自動化安裝centos

cobbler自動化安裝centos

一、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 cobblerdcobbler 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

轉載於:https://www.cnblogs.com/skymydaiji/p/10877533.html