Cobbler是一個快速網絡安裝linux的服務,而且在經過調整也可以支持網絡安裝windows。該工具使用python開發,小巧輕便(才15k行python代碼),使用簡單的命令即可完成PXE網絡安裝環境的配置,同時還可以管理DHCP、DNS、以及yum倉庫、構造系統ISO鏡像。
Cobbler支持命令行管理,web界面管理,還提供了API接口,可以方便二次開發使用。
Cobbler客戶端Koan支持虛擬機安裝和操作系統重新安裝,使重裝系統更便捷。
cobbler提供的功能
使用 Cobbler,您無需進行人工干預即可安裝機器。Cobbler 設置一個 PXE 引導環境(它還可使用 yaboot 支持 PowerPC),並控制與安裝相關的所有方面,比如網絡引導服務(DHCP 和 TFTP)與存儲庫鏡像。當希望安裝一台新機器時,Cobbler 可以:
使用一個以前定義的模板來配置 DHCP 服務(如果啟用了管理 DHCP)
將一個存儲庫(yum 或 rsync)建立鏡像或解壓縮一個媒介,以注冊一個新操作系統
在 DHCP 配置文件中為需要安裝的機器創建一個條目,並使用您指定的參數(IP 和 MAC 地址)
在 TFTFP 服務目錄下創建適當的 PXE 文件
重新啟動 DHCP 服務以反映更改
重新啟動機器以開始安裝(如果電源管理已啟用)
Cobbler 支持眾多的發行版:Red Hat、Fedora、CentOS、Debian、Ubuntu 和 SuSE。當添加一個操作系統(通常通過使用 ISO 文件)時,Cobbler 知道如何解壓縮合適的文件並調整網絡服務,以正確引導機器。
Cobbler 可使用 kickstart 模板。基於 Red Hat 或 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、lpar、rsa、virsh 和 wti。要重新安裝一台機器,可運行 reboot system foo命令,而且 Cobbler 會使用必要的憑據和信息來為您運行恰當的 fence scripts(比如機器插槽數)。
除了這些特性,還可使用一個配置管理系統 (CMS)。您有兩種選擇:該工具內的一個內部系統,或者集成一個現有的外部 CMS,比如 Chef 或 Puppet。借助內部系統,您可以指定文件模板,這些模板會依據配置參數進行處理(與 kickstart 模板的處理方式一樣),然後復制到您指定的位置。如果必須自動將配置文件部署到特定機器,那麼此功能很有用。
使用 koan 客戶端,Cobbler 可從客戶端配置虛擬機並重新安裝系統。我不會討論配置管理和koan 特性,因為它們不屬於本文的介紹范疇。但是,它們是值得研究的有用特性。
Cobbler 安裝和配置的方法:
一、加載epel源
代碼如下:
rpm -ivh http://mirrors.sohu.com/fedora-epel/6/x86_64/epel-release-6-8.noarch.rpm
二、安裝cobbler
1.yum安裝所需要的文件
代碼如下:
yum -y install tftp-server cobbler cobbler-web pykickstart debmirror httpd python-ctypes xinetd rsync
2.檢查cobbler配置是否正確
代碼如下:
cobbler check
3.更改settings配置文件
代碼如下:
vi /etc/cobbler/settings
next_server: dhcp服務器地址
server: cobbler服務器地址
manage_dhcp: 1
manage_rsync: 1
4.關閉iptables和selinux
代碼如下:
/etc/init.d/iptables stop
setenforce 0
5.設置tftp和rsync服務
代碼如下:
vi /etc/xinetd.d/tftp
disable yes => disable no
< p>vi /etc/xinetd.d/rsync
disable yes => disable no
6.設置centos系統密碼
代碼如下:
openssl passwd -1 -salt 'Cobbler' 'cobbler'
7.下載fedora的loader信息
代碼如下:
cobbler get-loaders
8.修改dhcp配置模版文件.需要主機的事分配的dhcp地址需要和本機地址在同一網段否則無法啟動dhcp
代碼如下:
ddns-update-style interim;
allow booting;
allow bootp;
ignore client-updates;
set vendorclass = option vendor-class-identifier;
#修改為自己的網段
subnet 192.168.0.0 netmask 255.255.255.0 {
#修改路由地址
option routers 192.168.0.1;
#域名服務器地址
option domain-name-servers 202.106.0.20;
#子網
option subnet-mask 255.255.255.0;
#分配IP地址段
range dynamic-bootp 192.168.0.100 192.168.0.254;
filename "/pxelinux.0";
default-lease-time 21600;
max-lease-time 43200;
next-server $next_server;
}
三、導入鏡像到cobbler
1.創建鏡像掛載點目錄
代碼如下:
mkdir -p /mnt/foo
2.掛載iso鏡像到創建的目錄(可以為自己定制過的iso鏡像)
代碼如下:
mount -o loop CentOS-6.4-x86_64-mini.iso /mnt/foo
3.從掛載點目錄導入os 並將其命名為Centos6.4_mini arch=x86_64
代碼如下:
cobbler import --path=/mnt/foo --name=Centos6.4_mini --arch=x86_64
4.指定kickstart文件 (可選 默認我們會指定一個自己定制的kickstart文件)
代碼如下:
cobbler profile edit --name=Centos6.4_mini-x86_64 --kickstart=文件路徑
5.查看cobbler報告
代碼如下:
cobbler report
Distribution : Centos6.4_mini-x86_64
Enable gPXE? : 0
Enable PXE Menu? : 1
Fetchable Files : {}
Kernel Options : {}
Kernel Options (Post Install) : {}
Kickstart : /var/lib/cobbler/kickstarts/sample_end.ks
Kickstart Metadata : {}
Management Classes : []
Management Parameters : <
Name Servers : []
Name Servers Search Path : []
Owners : ['admin']
Parent Profile :
Proxy :
Red Hat Management Key : <
......
6.查看導入的鏡像列表
代碼如下:
cobbler distro list
7.是cobbler生效
代碼如下:
cobbler sync
8.重啟進入網絡引導系統
9.需要注意的是每一次的配置更改都需要執行cobbller sync
四、kickstart文件(以我的配置文件為例)
代碼如下:
firewall --disabled
install
#cdrom
rootpw --iscrypted $default_password_crypted
auth --useshadow --passalgo=md5
text
firstboot --disable
keyboard us
lang en_US.UTF-8
url --url=$tree
$yum_repo_stanza
$SNIPPET('network_config')
< p>selinux --disabled
# Do not configure the X Window System
skipx
logging --level=info
#reboot --eject
timezone Asia/Shanghai
#network --device em1 --bootproto=static --ip=192.168.7.123 --netmask=255.255.248.0 --gateway=192.168.0.1 --nameserver 8.8.8.8 --hostname=test --onboot=yes
bootloader --location=mbr --driveorder=sda
< p># Clear the Master Boot Record
zerombr yes
< p># Partition clearing information
clearpart --all --initlabel
< p># Disk partitioning information
part / --fstype="ext4" --size=10240
part swap --size=4096
part /data --fstype="ext4" --grow --size=1
< p>
%packages
@base
@core
@server-policy
sgpio
device-mapper-persistent-data
ntp
< p>
%post --nochroot