cobbler自動化安裝centos7.6

1、cobbler介紹

1.前言

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

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)從新啓動機器以開始安裝(若是電源管理已啓動python

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 可從客戶端配置虛擬機並從新安裝系統。linux

4.Cobbler 提供的服務集成

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

5.PXE工做流程圖

由於 cobbler 基於 pxe 二次封裝的,因此瞭解 PXE 工做流程也重要,圖以下:web

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

從上圖能夠看出:apache

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

7.cobbler 的組成

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

8.cobbler 的工做流程

2、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)bash

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

相關文章
相關標籤/搜索