CentOS7 安裝 cobbler

一、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
shutdown -r now

2.cobbler 安裝

1.安裝第三方源:

yum install -y net-tools
rpm -Uvh https:/dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm

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
systemctl start xinetd
systemctl start cobblerd.service

4.檢查 cobbler 配置

cobbler 的幫助命令爲 cobbler --help

cobbler check

在這裏插入圖片描述
解決方法:

  1. /etc/cobbler/settings 中’server’配置成具體的服務器 ip 地址
  2. /etc/cobbler/settings 中’next_server’也修改爲具體的 ip 地址
  3. /etc/xinetd.d/tftp 中’disable’從 yes 改爲 no
  4. 運行’cobbler get-loaders’網絡引導加載程序
  5. 開啓rsync 服務並設置爲開機啓動,systemctl start rsyncd、systemctl enable rsyncd
  6. debian 系統需要安裝 debmirror 包,這裏是 centos 所以不用安裝
  7. "openssl passwd -1 -salt ‘random-phrase-here’ ‘your-password-here’"生成新密碼並修改配置/etc/cobbler/settings 中’default_password_crypted’字段
  8. 應用修改 systemctl restart cobblerd、cobbler sync

3.讓 cobbler 管理 DHCP

1.編輯 cobbler 中 dhcp 模板

cd /etc/cobbler
cp dhcp.template dhcp.template.org
sed -i '/^subnet/s/192.168.1.0/10.211.55.0/' dhcp.template
sed -i '/routers/s/192.168.1.5/10.211.55.1/' dhcp.temlpate
sed -i '/domain-name-servers/s/192.168.1.1/114.114.114.114/' dhcp.template
sed -i '/dynamic-bootps/s/192.168.1.100 192.168.1.254/10.211.55.100 10.211.55.254/' 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

在這裏插入圖片描述

4.掛載 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 文件,可以看一下里面有哪些東西

less /var/lib/cobbler/kickstarts/sample_end.ks

生成的 Kickstart 文件可以根據自己的需要進行修改,前提是要熟悉原生的 Kickstart 語法, 可以參看“kickstart 配置文件詳解和 system-config-kickstart”文章,鏈接地址如下: http://blog.csdn.net/taiyang1987912/article/details/42176709

下圖爲 sample_end.ks 的內容:
在這裏插入圖片描述
在這裏插入圖片描述

5.修改 cobbler 生成的 Kickstart 文件 sample_end.ks

一般安裝系統的時候,最好按自己的需求進行修改一下:

  1. 禁止防火牆,設置時區爲上海、關閉色Linux
  2. 按自己需求分區:在‘zerombr’字段添加
    默認是自動分區的,要先把 autopart 註解掉,如 scsi 硬盤500G 當系統盤使用,數據盤在系統安裝上之後,手工添加上去的,如果不指定硬盤則全部分配
part /boot --fstype="xfs" --size=500 --ondisk sda
part swap --fstype="swap" --size=1024 --ondisk sda
part / --fstype="xfs" --size=20000 --ondisk sda
part /disk1 --fstype="xfs" --grow --size=1 --ondisk sda

也可以使用邏輯卷方式:

part /boot --fstype="xfs" --size=500 --ondisk=sda
part pv.01 --grow --size=1 --ondisk=sda
volgroup centos --presize=4096 pv.01
logvol / --fstype="xfs" --size=50000 --name=root --vgname=centos
logvol swap --fstype="swap" --size=1024 --name=swap --vgname=centos
logvol /disk1 --fstype="xfs" --grow --size=1 --name=disk1 --vgname=centos
  1. 在‘%package’字段添加需要安裝的軟件包
    %package 部分,安裝包的選擇,可以是 @core 這樣的 group 的形式,也可以是這樣 vim-* 包的形式。–ignoremissing:忽略缺少的軟件包或組,而不是暫停安裝來向用戶詢問中止還是繼續安裝
    中文語言包:@chinese-support(centos7 中爲 kde-l10n-Chinese 和 glibc-common)還有其它包 sysstat,iptraf,ntp,lrzsz,ncurses-devel,openssl-devel,zlib-develOp ,OpenIPMI-tools,mysql,nmap,screen,gcc,gcc-c++,automake,wget,curl, man,tree, automake,autoconf,dos2unix, rsync, vsftpd,net-tools 等
cd /var/lib/cobbler/kickstarts
mv sample_end.ks CentOS-7.6-x86_64.ks
cp CentOS-7.6-x86_64.ks CentOS-7.6-x86_64.ks.orig 
sed -i 's/autopart/#autopart/' CentOS-7.6-x86_64.ks
sed -i '/firewall/s/enabled/disable/' CentOS-7.6-x86_64.ks
sed -i '/selinux/s/enabled/disabled/' CentOS-7.6-x86_64.ks
egrep "firewall|^timezone|selinux" CentOS-7.6-x86_64.ks
sed -i '/autopart/a\part /disk1 --fstype="xfs" --grow --size=1 --ondisk sda' CentOS-7.6-x86_64.ks 
sed -i '/autopart/a\part swap --fstype="swap" --size=1024 --ondisk sda' CentOS-7.6-x86_64.ks sed -i '/autopart/a\part / --fstype="xfs" --size=20000 --ondisk sda' CentOS-7.6-x86_64.ks
sed -i '/autopart/a\part /boot --fstype="xfs" --size=500 --ondisk sda' CentOS-7.6-x86_64.ks grep 'zerombr' -A 7 CentOS-7.6-x86_64.ks
sed -i "/packages/a\ncurses-devel\nopenssl-devel\nOpenIPMI-tools\nscreen\nnet-tools" CentOS-7.6-x86_64.ks 
sed -i "/packages/a\gcc\ngcc-c++\nvim\nlrzsz\nwget\ncurl\nman\ntree\nautomake" CentOS-7.6-x86_64.ks 
sed -i "/packages/a\kde-l10n-Chinese\nglibc-common\nsysstat\niptraf\nntp\nlrzsz " CentOS-7.6-x86_64.ks

修改 CentOS-7.6-x86_64 的配置文件中 kickstart 的值

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

最終確保下面這些服務在運行,其中 25151 是 xmlrpc_port 端口

netstat -anutlp | egrep "httpd|rsync|xinetd|dhcpd|25151"
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章