Cobbler介紹
Cobbler是一個Linux服務器快速網絡安裝的服務,而且在經過調整也可以支持網絡安裝windows,該工具使用python開發,小巧輕便(才15k行python代碼),可以通過網絡啓動(PXE)的方式來快速安裝、重裝物理服務器和虛擬機,同時還可以管理DHCP,DNS,TFTP、RSYNC以及yum倉庫、構造系統ISO鏡像。
Cobbler可以使用命令行方式管理,也提供了基於Web的界面管理工具,還提供了API接口,可以方便二次開發使用。
Cobbler客戶端Koan支持虛擬機安裝和操作系統重新安裝,使重裝系統更便捷。
Cobbler各主要組件關係圖
Cobbler設計模式
1.發⾏版(distro): 表示操作系統。它承載了內核和initrd引導程序
2.存儲庫(repository): 保存yum緩存⽂件的鏡像倉庫
3.配置⽂件(profile):定義操作系統的發⾏版的ks配置⽂件,也包含內核參數信息等
4.系統(system):主要配置⽹絡接⼝, 固定IP以及MAC地址 distro->profile-system(可選)
Cobbler運⾏流程
1.DHCP服務分配IP地址
2.Client(獲取IP地址、Next_server IP地址)
3.Next_server(PXE引導⽂件、啓動Cobbler選擇界⾯)
4.tftp(獲取啓動內核、initrd等⽂件)
5.kickstart (確定加載項,根據NFS,httpd,ftp等共享)
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.重新啓動機器以開始安裝(需手工選擇系統安裝菜單)。
Cobbler軟件安裝
1.基礎環境準備
#查看當前系統版本以及內核信息
[root@Cobbler ~]# cat /etc/redhat-release
CentOS Linux release 7.4.1708 (Core)
[root@Cobbler ~]# uname -r
3.10.0-693.el7.x86_64
[root@Cobbler ~]# uname -n
Cobbler
#關閉selinux防⽕牆
[root@cobbler ~]# setenforce 0
[root@cobbler ~]# getenforce Disabled
#關閉firewalld防⽕牆
[root@cobbler ~]# systemctl stop firewalld
[root@cobbler ~]# systemctl disable firewalld
2.安裝Cobbler
#安裝epel源
[root@Cobbler ~]# wget -O /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-7.repo
#安裝cobbler及各個組件
[root@Cobbler /]# yum install cobbler cobbler-web pykickstart httpd dhcp tftp xinetd -y
注意:用CentOS6部署Cobbler會出現Django一直安裝不上,需要自行下載並安裝該軟件
防止誤重裝系統,如果系統設置爲PXE啓動,可能會出現PXE引導循環
sed -i 's/pxe_just_once: 0/pxe_just_once: 1/' /etc/cobbler/settings
3.Cobbler配置文件概述
#配置文件目錄:/etc/cobbler
/etc/cobbler/settings #cobbler主配置文件
/etc/cobbler/iso/ #iso模板配置文件
/etc/cobbler/pxe #pxe模板文件
/etc/cobbler/power #電源配置文件
/etc/cobbler/users.conf #Web服務配置文件
/etc/cobbler/users.digest #用於web訪問的用戶名密碼配置文件
/etc/cobbler/dhcp.template #DHCP服務配置模板文件
/etc/cobbler/dnsmasq.template #DNS服務配置模板文件
/etc/cobbler/tftpd.template #tftp服務配置模板文件
/etc/cobbler/modules.conf #Cobbler模塊配置文件
#數據目錄:/var/lib/cobbler
/var/lib/cobbler/config #用於存放distros systems profiles等信息配置文件
/var/lib/cobbler/triggers #用於存放用戶自定義的cobbler命令
/var/lib/cobbler/kickstarts #默認存放kickstart文件
/var/lib/cobbler/loaders #存放各種引導程序
#鏡像數據目錄: /var/www/cobbler
/var/www/cobbler/ks_mirror #存放所有鏡像文件
/var/www/cobbler/images #導入發行版的kernel和initrd鏡像用於遠程網絡啓動
/var/lib/cobbler/kickstarts #默認存放kickstart文件
/var/lib/cobbler/loaders #存放各種引導程序
/var/www/cobbler/repo_mirror/ #yum倉庫存儲目錄
#日誌目錄:/var/log/cobbler
/var/log/cobbler/install.log #客戶端系統安裝日誌
/var/log/cobbler/cobbler.log #cobbler日誌
4.啓動 httpd 以及 CobblerServer
[root@cobbler ~]# systemctl start httpd
[root@cobbler ~]# systemctl start cobblerd
5.執⾏ cobbler check 檢測,將錯誤逐⼀進⾏解決
#啓⽤cobbler動態配置,如不啓動則可以通過⼿動或sed命令替換配置
[root@Cobbler ~]# sed -ri '/allow_dynamic_settings:/c \allow_dynamic_settings: 1' /etc/cobbler/settings
[root@Cobbler ~]# systemctl restart cobblerd.service
#1.配置CobblerServer地址
[root@Cobbler ~]# cobbler setting edit --name=server --value=10.0.0.202
#2.修改next_server主機IP
[root@Cobbler ~]# cobbler setting edit --name=next_server --value=10.0.0.202
#3.配置tftp
[root@Cobbler ~]# sed -ri '/disable/c\disable = no' /etc/xinetd.d/tftp
[root@Cobbler ~]# systemctl enable xinetd
[root@Cobbler ~]# systemctl start xinetd
#4.啓動rsync
[root@Cobbler ~]# systemctl start rsyncd
[root@Cobbler ~]# systemctl enable rsyncd
#5.下載⽹絡安裝需要執⾏的⽂件(讓cobbler能夠處理x86/x86_64網絡引導)
[root@Cobbler ~]# cobbler get-loaders
#6.安裝debmirror, 修改/etc/debmirror.conf
[root@Cobbler ~]# yum -y install debmirror
[root@Cobbler ~]# sed -ri '/@dists=/c#@dists="sid";' /etc/debmirror.conf
[root@Cobbler ~]# sed -ri '/@arches=/c#@arches="i386";' /etc/debmirror.conf
#7.配置系統登錄密碼(該密碼默認爲cobbler)
#使用openssl passwd -1 -salt '密碼' '隨機干擾碼' 命令生成密碼
[root@Cobbler ~]# openssl passwd -1 -salt 'cobbler' '123456'
$1$cobbler$sqDDOBeLKJVmxTCZr52/11
[root@Cobbler ~]# cobbler setting edit --name=default_password_crypted --value='$1$cobbler$sqDDOBeLKJVmxTCZr52/11'
#8.電源控制模塊安裝[可選]
[root@Cobbler ~]# yum -y install cman fence-agents
#9.開啓dhcp地址分配
#不需要單獨運行DHCP,由Cobbler管理
[root@Cobbler ~]# cobbler setting edit --name=manage_dhcp --value=1
6.執⾏ cobbler check 檢查
[root@Cobbler ~]# systemctl restart cobblerd=
[root@Cobbler ~]# cobbler check
No configuration problems found. All systems go.
7.配置cobbler的dhcp模板[不代表給主機分配⼀定是如下地址]
#配置DHCP,修改cobbler的dhcp模版,這個模板會覆蓋dhcp本身的配置文件/etc/dhcp/dhcpd.conf
[root@Cobbler ~]# vim /etc/cobbler/dhcp.template
subnet 10.0.0.0 netmask 255.255.255.0 { #子網範圍
option routers 10.0.0.2; #網關地址
option domain-name-servers 10.0.0.2; #DNS地址
option subnet-mask 255.255.255.0; #掩碼
range dynamic-bootp 10.0.0.100 10.0.0.120; #分配地址的範圍
default-lease-time 21600;
max-lease-time 43200;
next-server $next_server; #調用settings配置文件中的next_server 參數
8.同步 CobblerServer 所有配置信息
#重啓並同步cobblerServer
[root@Cobbler ~]# systemctl restart xinetd
[root@Cobbler ~]# systemctl restart cobblerd
[root@Cobbler ~]# cobbler sync
提示:每次修改完Cobbler對應的配置,都要同步下cobbler數據
[root@Cobbler ~]# cobbler sync
Cobbler基礎應用
1.cobbler 使⽤第⼀步需要定義 distro
如果已經有 OS 鏡像安裝⽂件, 使⽤ improt 導⼊⽅式。
#1.掛載CentOS7系統ISO光盤
[root@Cobbler ~]# mount /dev/cdrom /mnt/
#2.import導⼊系統鏡像,以及鏡像樹
[root@Cobbler ~]# cobbler import --path=/mnt/ --name=CentOS-7-x86_64 --arch=x86_64
#3.查看cobbler distro
[root@Cobbler cobbler]# cobbler distro list
CentOS-7-x86_64
# --path 鏡像路徑,即從哪裏導入
# --name 爲導入的鏡像定義名稱
# --arch 指定導入的鏡像是32位、64位、ia64, 目前支持的選項有: x86│x86_64│ia64
2.cobbler 默認 profile ⽆法滿⾜運維需求, 需profile基礎上指定 kickstart⾃定義配置⽂件(KS文件在該文章的結尾)。
#1.移除默認的profile配置
[root@Cobbler ~]# cobbler profile remove --name=CentOS-7-x86_64
#2.添加新的profile配置,並指定kickstart應答⽂件位置
[root@Cobbler \]# cobbler profile add \
--name=CentOS-7-x86_64-web \
--distro=CentOS-7-x86_64 \
--kickstart=/var/lib/cobbler/kickstarts/Centos7-x86_64.cfg
#3.驗證Kickstart配置文件有效性
cobbler validateks
#附: 如果想修改kickstart⽂件位置
[root@Cobbler ~]# cobbler profile edit \
--name=CentOS-7-x86_64-web \
--kickstart=/var/lib/cobbler/kickstarts/CentOS-7-x86_64_Web.cfg
注意:distro可以認爲是一個系統盤,profile則爲安裝的規則,多個profile可以指定一個distro
3.由於 CentOS7
系統⽹卡名是 eno... ,爲了統⼀標準, 修改爲常⽤ eth0 管理(這裏還是以默認的profile來演示)
注意是CentOS7
才需要下⾯的步驟CentOS6不需要。
#1.修改centos7系統profile安裝時的內核
[root@Cobbler ~]# cobbler profile edit --name=CentOS-7-x86_64-web --kopts='net.ifnames=0 biosdevname=0'
#2.也可以在kickstart配置⽂件中添加內核參數[推薦]
bootloader --location=mbr --append="net.ifnames=0 biosdevname=0"
4.啓動同⽹段服務器, 系統分配dhcp後會進⼊Cobbler安裝界⾯, 進⾏系統選擇後, 安裝即可。
注意:CentOS7安裝至少2G以上內存
ks文件:Centos7-x86_64.cfg
# Cobbler for Kickstart Configurator for CentOS 7 by jason
install
url --url=$tree
text
lang en_US.UTF-8
keyboard us
zerombr
bootloader --location=mbr --driveorder=sda --append="crashkernel=auto rhgb quiet"
#Network information
$SNIPPET('network_config')
#network --bootproto=dhcp --device=eth0 --onboot=yes --noipv6 --hostname=CentOS7
timezone --utc Asia/Shanghai
authconfig --enableshadow --passalgo=sha512
rootpw --iscrypted $default_password_crypted
clearpart --all --initlabel
part /boot --fstype xfs --size 1024
part swap --size 1024
part / --fstype xfs --size 1 --grow
firstboot --disable
selinux --disabled
firewall --disabled
logging --level=info
reboot
%pre
$SNIPPET('log_ks_pre')
$SNIPPET('kickstart_start')
$SNIPPET('pre_install_network_config')
# Enable installation monitoring
$SNIPPET('pre_anamon')
%end
%packages
@^minimal
@compat-libraries
@core
@debugging
@development
bash-completion
chrony
dos2unix
kexec-tools
lrzsz
nmap
sysstat
telnet
tree
vim
wget
%end
%post
systemctl disable postfix.service
%end