Cobbler概述:
Cobbler可以用來快速建立 Linux 網絡安裝環境,它已將 Linux 網絡安裝的技術門檻,從大專以上文化水平,成功降低到初中以下,連補鞋匠都能學會。
在生產環境中,經常批量部署幾十甚至上百台服務器時,實現自動化安裝操作系統尤為重要,按照傳統的光盤引導安裝工作量是不可預估的;此前我們通過pxe+kickstart簡單實現了自動化安裝,但只能實現單一版本安裝,當需要部署不同版本或不同引導模式(BIOS、EFI)時,此種方式就不夠靈活。而Cobbler正是為了解決此問題而設計的。
經過以上概述我了解到Cobbler操作使用沒有想象中那么困難,接下來我們對Cobbler應用進行剖析如下:
Cobbler簡介:
Cobbler是一個免費開源系統安裝部署軟件,用於自動化網絡安裝操作系統。Cobbler 集成了 DNS, DHCP, 軟件包更新,帶外管理以及配置管理,方便操作系統安裝自動化。Cobbler 可以支持PXE啟動, 操作系統重新安裝,以及虛擬化客戶機創建,包括Xen, KVM or VMware. Cobbler透過koan程序以支持虛擬化客戶機安裝。Cobbler可以支持管理復雜網路環境,如建立在鏈路聚合以太網的橋接環境。
Cobbler組件架構如下:

Cobbler服務集成以下:
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
|
*1* PXE服務
*2* DHCP服務管理
*3* TFTP服務管理
*4* Rsync服務(系統鏡像可導入發行版鏡像,也可以從互聯網中通過
rsync
工具導入)
*5* HTTP服務管理
*6* DNS服務管理
*7* Kickstart服務
*8* IPMI電源管理
|
Cobbler設計模式:
|
1
2
3
4
5
6
7
8
9
10
11
|
*1* 發行版(distro) : 表示一個操作系統。它承載了內核和initrd的信息,以及內核參數等其他數據。
*2* 存儲庫(repository) : 保存一個yum或
rsync
存儲庫鏡像信息。
*3* 配置文件(profile) : 包含一個發行版(distro)、一個kickstart文件以及可能的存儲庫(repository)
還包含更多特定的內核參數及其他數據。
*4* 系統(system) : 表示要配給的機器,它包含一個配置文件或一個鏡像,還包含IP和MAC地址、
電源管理(地址、憑據、類型)以及更專業的數據等信息。
*5* 鏡像(image) : 可替換一個包含不屬於此類別的文件發行版對象,(例如: 無法分為內核和initrd的對象)
|
Cobbler運行流程:
|
1
2
3
4
5
6
7
8
9
|
*1* DHCP服務分配IP地址
*2* Client(獲取IP地址、Next_server IP地址)
*3* Next_server(獲取啟動內核、initrd等文件)
*4* tftp (PXE引導文件、啟動Cobbler選擇界面)
*5* kickstart (確定加載項,根據NFS,httpd,
ftp
等共享)
|
Cobbler Units 軟件包:
|
1
2
3
|
* cobbler
* cobbler-web
|
Cobbler Units 配置:
|
1
2
3
4
5
6
7
8
9
10
11
|
*1* 安裝cobbler,依據cobbler check檢查結果,對settings主配置文件,進行相關修正設置;
*2* 啟動依賴服務:httpd、cobbler服務,使用cobbler
sync
同步配置;
*3* 配置cobbler所依賴的服務:
** dhcp : ISC dhcpd dnsmasq(必需服務,選其中一種管理即可)
** dns : bind dnsmqsq(可選)
**
rsync
:
rsync
(必需服務)
** tftp :
in
.tftpd(tftp-server) cobbler自帶的tftp(必需服務,選其中一種管理即可)
*4* 配置cobbler組件
|
針對步驟3:
(1)確定要使用的程序,選其中一種管理即可;
(2)確定要獨立管理這些服務,還是由cobbler代為管理。
確定以上要求,配置安裝過程如下:
(1)安裝EPEL源
|
1
2
3
|
# wget http://dl.fedoraproject.org/pub/epel/6/x86_64/epel-release-6-8.noarch.rpm
# wget http://rpms.famillecollet.com/enterprise/remi-release-6.rpm
# rpm -Uvh remi-release-6.rpm epel-release-6-8.noarch.rpm
|
(2)安裝cobbler及相關依賴包
|
1
2
3
4
5
|
# yum -y install httpd dhcp tftp-server xinetd rsync
# yum -y groupinstall "Development Tools"
# yum -y install syslinux python-simplejson python-cheetah PyYAML Django openssl-devel genisoimage createrepo mod_wsgi mod_ssl
# yum -y install dnsmasq bind --保證后期cobbler管理dns環境通過檢測
# yum -y install cobbler cobbler-web
|
(3)配置啟動httpd、cobbler等服務
|
1
2
3
4
5
6
7
|
# chkconfig --level 35 httpd on
# chkconfig --level 35 cobblerd on
# chkconfig --level 35 tftp on
# chkconfig --level 35 rsync on
# service xinetd start
# service httpd start
# service cobblerd start
|
檢查服務監聽端口:
(4)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/www/cobbler/repo_mirror/ :yum倉庫存儲目錄
日志目錄:/var/log/cobbler
* * /var/log/cobbler/install.log : 客戶端系統安裝日志
* * /var/log/cobbler/cobbler.log : cobbler日志
Cobbler Commands(常用使用命令參數)
* * Import
* * Sync
* * Reposync
* * Build ISO (使用發行版、配置文件、制作出系統鏡像)
* * Command Line Search
* * Replication
* * Validata Kickstart
* * ACL Setup
(5)檢查配置Cobbler
動態更新配置:
下面根據cobbler配置信息的檢查結果,逐個修復相關問題項。從Cobbler 2.4開始,有一個重要的功能,就是讓你不需要手工編輯配置setting配置文件,直接使用命令修改相關配置,默認這個功能是不啟用,啟用需要進行一下配置:
**建議采用修改/etc/cobbler/settings配置文件的方式修改配置選項。
**在采用命令方式動態更新配置時,Cobbler會將配置文件中帶"#"注釋的行全部刪除
|
1
2
3
4
|
# cd /etc/cobbler/
# cp -af settings{,.default}
# sed -i '/^allow_dynamic_settings:/ s/0/1/' settings
# service cobblerd restart
|
解決問題項1和2,設置cobbler服務器地址
|
1
2
|
# cobbler setting edit --name=server --value=172.16.100.7
# cobbler setting edit --name=next_server --value=172.16.100.7
|
如果selinux未禁用,也會提示報錯,解決方法如下:
|
1
2
|
# setenforce 0
# sed -i '/\(^SELINUX=\).*/ s//\1disabled/' /etc/selinux/config
|
解決問題項3,下載啟動菜單(可以選擇不修復,x86/x86_64平台上,如果本地有syslinux包的最新版本,直接拷貝引導所需文件即可)
|
1
2
|
---Cobbler引導文件目錄為:
/var/lib/cobbler/loaders
# cobbler get-loaders
|
PXE引導所需的引導文件:
--pxelinux.0、menu.c32、vesamenu.c32和memdisk四個文件有syslinux或者syslinux-nolinux RPM包提供
--其中menu.c32為文本模式背景,vesamenu.c32為圖形模式背景
--memdisk文件,引導IMG映像,如果你要引導IMG/IMA的映像文件,必須加載此文件。
|
1
2
|
# rpm -qf /usr/share/syslinux/pxelinux.0
syslinux-4.02-8.el6.x86_64
|
|
1
|
# for file in `rpm -ql syslinux-nolinux | grep -E '/(pxelinux.0|menu.c32|vesamenu.c32)'`;do cp -af $file /var/lib/cobbler/loaders;done
|
解決問題項4,配置rsync服務
|
1
2
|
# sed -i '/disable/ s/yes/no/' /etc/xinetd.d/rsync
# chkconfig rsync on
|
如果提示rsync文件不存在,可以不用理他,應該是程序bug,不影響cobbler使用
解決問題項5
|
1
2
3
4
5
6
7
8
|
# yum -y install debmirror
--安裝debmirror包后,會衍生出一下錯誤提示,根據提示,注釋選項即可
2 : comment out
'dists'
on
/etc/debmirror
.conf
for
proper debian support
3 : comment out
'arches'
on
/etc/debmirror
.conf
for
proper debian support
--處理如下:
# sed -i '/^@dists="sid";/ s/^/#/' /etc/debmirror.conf
# sed -i '/^@arches="i386";/ s/^/#/' /etc/debmirror.conf
|
解決問題項6 安裝ks文件驗證支持包
|
1
|
# yum -y install pykickstart
|
解決問題項7,修改cobbler用戶的默認密碼
|
1
2
3
|
# openssl passwd -1 -salt `openssl rand -hex 4` 'redhat'
$1$fe4c277f$tbAmxXGSIA7cc
/AXLsQVd
.
# cobbler setting edit --name=default_password_crypted --value='$1$fe4c277f$tbAmxXGSIA7cc/AXLsQVd.'
|
解決問題項8,如果需要電源管理特性的話,則需要安裝cman及fence-agents包
|
1
|
# yum -y install cman fence-agents
|
如果cobbler服務器啟用防火牆功能,需要開啟以下端口:
|
1
2
|
# iptables -A INPUT -m state --state NEW -m tcp -p tcp -m multiport --dports 80,443,25151 -j ACCEPT
# iptables -A INPUT -m state --state NEW -m udp -p udp -m multiport --dports 53,67:69,25151 -j ACCEPT
|
重啟依賴服務,同步cobbler數據
|
1
2
3
|
# service httpd restart
# service cobblerd restart
# cobbler sync
|
配置cobbler依賴服務由cobbler進行管理:
--雖然cobbler可用於管理依賴的服務;
--默認情況下,若開機未將相關的服務設置成開啟啟動,即使cobblerd服務啟動時,相關服務也是未啟動狀態。
--因此,需要確認dhcp、tftp、rsync等服務是否設置為開啟自啟動。
--tftp、rsync服務由xinetd管理
|
1
2
3
|
--配置dhcp\dns由cobbler管理
# cobbler setting edit --name=manage_dhcp --value=1
# cobbler setting edit --name=manage_dns --value=1
|
防止誤重裝系統,選項:pxe_just_once
|
1
|
# cobbler setting edit --name=pxe_just_once --value=1
|
該選項作用:
--防止機器循環安裝配置始終從網絡引導
--激活此選項,機器回傳Cobbler安裝完成
--Cobbler將系統對象的netboot標志更改為false,強制要求機器從本地磁盤引導。
配置rsync、tftp服務,由cobbler管理,選項:manage_rsync、manage_tftp 、managed_tftpd
--默認情況下,Cobbler安裝完成后,會自己去管理tftp服務,因manage_tftp和managed_tftpd的值默認為1
--要想讓Cobbler來管理rsync、tftp服務,只要保證各自服務已安裝,並設置為開機自啟動即可。
--此外,需要保證xinetd服務為開機自啟動狀態,因rsync、tftp服務由xinetd服務統一管理。
|
1
2
3
|
# sed -i '/diable/ s/yes/no/' /etc/xinetd.d/rsync
# sed -i '/diable/ s/yes/no/' /etc/xinetd.d/tftp
# chkconfig --level 35 xinetd on
|
配置dhcp服務,模板文件/etc/cobbler/dhcp.template 選項:manage_dhcp
--使用dnsmasq來管理dhcp、dns 會更方便。對應的,你需要安裝dnsmasq RPM包;
--由dnsmasq來管理dhcp dns 服務時,需要修改modules.conf配置文件,指定module設置值為manage_dnsmasq.
--相關的模板配置文件為/etc/cobbler/dnsmasq.template.
這里我們采用默認方式配置使用DHCP服務
|
1
|
# chkconfig --level 35 dhcpd on
|
配置web管理認證:
添加、修改默認用戶(cobbler)
|
1
2
3
4
5
|
# sed -i 's/^cobbler/admin/' /etc/cobbler/users.digest
# htdigest /etc/cobbler/users.digest 'Cobbler' admin
Changing password
for
user admin
in
realm Cobbler
New password:
Re-
type
new password
|
重啟Cobbler,同步cobbler數據:
|
1
2
|
# service cobblerd restart
# cobbler sync
|
Web相關訪問地址:
|
1
2
|
* http:
//172
.16.100.7
/cobbler_web
* http:
//172
.16.100.7
/cobbler
|
配置cobbler組件
* distro:可使用distro命令或者import導入發行版鏡像
Cobbler上,distro可以有多個;同一個distor之上可定義同個profile,每個profile使用不同的kicstart文件。
掛載發行版鏡像源
|
1
2
|
# mkdir -p /mnt/CentOS/6.5
# mount -o loop /root/CentOS-6.5-x86_64-bin-DVD1.iso /mnt/CentOS/6.5/
|
導入發行版鏡像源
|
1
|
# cobbler import --name=CentOS-6.5-x86_64 --path=/mnt/CentOS/6.5
|
Cobbler Web導入后的鏡像地址為:http://172.16.100.7/cobbler/ks_mirror/CentOS-6.5-x86_64/
准備kisckstart文件
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
|
# vim /var/lib/cobbler/kickstarts/cetos6.x86_64.cfg
#platform=x86,AMD64, or Intel EM64T
#version=DEVEL
#Firewall configuration
firewall --disabled
# Install OS instead of upgrade
install
# Use network installation
url --url=
"http://172.16.100.7/cobbler/ks_mirror/CentOS-6.5-x86_64/"
# Root password
rootpw --iscrypted $1$redhat$9yxjZID8FYVlQzHGhasqW/
# System authrization information
auth --useshadow --passalgo=sha512
# Use text mode install
text
firstboot --disable
# System keyboard
keyboard us
# System language
lang en_US
# SELinux configuration
selinux --disabled
# Installation logging level
logging --level=info --host=172.16.0.1
# Reboot after installation
reboot
# System timezone
timezone Asia
/Shanghai
# System bootloader configuration
bootloader --append=
"rhgb crashkernel=auto quiet"
--location=mbr --driveorder=
"sda"
# Clear the Master Boot Record
zerombr
# Partition clearing information
clearpart --all
# Disk partitiong infomation
part
/boot
--fstype=
"ext4"
--size=200
part pv.008 --size=61440
volgroup vg0 --pesize=8192 pv.008
logvol / --fstype=ext4 --name=root --vgname=vg0 --size=20480
logvol swap --name=swap --vgname=vg0 --size=2048
logvol
/usr
--fstype=ext4 --name=usr --vgname=vg0 --size=10240
logvol
/var
--fstype=ext4 --name=var --vgname=vg0 --size=20480
repo --name=
"local repo"
--baseurl=http:
//172
.16.100.7
/cobbler/ks_mirror/CentOS-6
.5-x86_64/ --cost=1000
%post
echo
-e
'Samlee LTD Services\n http://gzsamlee.blog.51cto.com\n'
>>
/etc/issue
sed
-i
'1,$s@id:[0-9]:initdefault:@id3:initdefault:@g'
/etc/inittab
[ ! -d
/root/
.
ssh
] &&
mkdir
/root/
.
ssh
&&
chmod
og=---
/root/
.
ssh
%end
%packages
@base
@basic-desktop
@client-mgmt-tools
@core
@desktop-platform
@fonts
@general-desktop
@graphical-admin-tools
@legacy-x
@network-
file
-system-client
@perl-runtime
@remote-desktop-clients
@x11
lftp
%end
|
添加profile
|
1
2
|
# cobbler profile add --name=CentOS-6.5-basic --distro=CentOS-6.5-x86_64 --kickstart=/var/lib/cobbler/kickstarts/cetos6.x86_64.cfg
# cobbler profile list
|
配置本地yum倉庫
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
|
#配置本地yum倉庫
# mkdir /tmp/rpms
# createrepo /tmp/rpms #放入rpm包,執行此步驟
# cobbler repo add --mirror=/tmp/rpms --name=local
# cobbler reposync
#配置本地epel倉庫
# cobbler repo add --mirror=http://mirrors.aliyun.com/epel/6/x86_64/ --name=epel
# cobbler reposync --tries=3 --no-fail #同步epel倉庫到本地,需要較長時間
#查看已添加的repo
# cobbler repo list
epel
local
#添加repo到profile
# cobbler profile edit --name==CentOS-6.5-basic --repos="epel local"
# cobbler sync
|
客戶端安裝測試如下:
客戶端驗證,可以看到生成了一個repo文件,指向cobbler服務器
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
|
# cat /etc/yum.repos.d/cobbler-config.repo
[core-0]
name=core-0
baseurl=http:
//172
.16.100.7
/cobbler/ks_mirror/CentOS-6
.5-x86_64/
enabled=1
gpgcheck=0
priority=1
[
local
]
name=
local
baseurl=http:
//172
.16.100.7
/cobbler/repo_mirror/local
enabled=1
priority=99
gpgcheck=0
|
web管理訪問:
0
本文出自 “Opensamlee” 博客,請務必保留此出處http://gzsamlee.blog.51cto.com/9976612/1865020
















