自動化運維之Cobbler自動化部署安裝操作系統


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組件架構如下:

091321HX-0.png

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

檢查服務監聽端口:

wKioL1gG2DuTBauXAAAn4cNi2xc245.png

 

(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

wKiom1gHGy2hu-OvAAA0hIgIbkg227.png

 

(5)檢查配置Cobbler

wKiom1gHHXeDZUncAADxqht1km4350.png

動態更新配置:

下面根據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

wKiom1gIB5ehMnJkAAD_IuK7dzA801.png

 

配置cobbler依賴服務由cobbler進行管理:

--雖然cobbler可用於管理依賴的服務;

--默認情況下,若開機未將相關的服務設置成開啟啟動,即使cobblerd服務啟動時,相關服務也是未啟動狀態。

--因此,需要確認dhcp、tftp、rsync等服務是否設置為開啟自啟動。

--tftp、rsync服務由xinetd管理

wKiom1gICx7TIThrAABFZ5ITn6I621.png

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.

wKioL1gIFf6ROFD0AACzO2_KW8Y659.png

這里我們采用默認方式配置使用DHCP服務

wKiom1gIP3KCuef4AAA-qS9C4To111.png

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

wKioL1gIR6Wza40FAADc06N8_gA606.png

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/

 

導入發行版鏡像源

wKioL1gIV-zBPTbMAABkseAzwyw163.png

1
# cobbler import --name=CentOS-6.5-x86_64 --path=/mnt/CentOS/6.5

wKioL1gIWP_CfcvWAADJmQrHyRM546.png

 

Cobbler Web導入后的鏡像地址為:http://172.16.100.7/cobbler/ks_mirror/CentOS-6.5-x86_64/

wKiom1gIWePSyM8zAADJTyndDdU385.png

 

准備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

 

客戶端安裝測試如下:

wKiom1gIgDWD6v11AAAMmvzD5Sc397.png

wKioL1gIgDXjcOaqAAAXlYgI1d4680.png

 

客戶端驗證,可以看到生成了一個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管理訪問:

wKioL1gIgcGTKvAGAAEzC8qQwHM811.png

wKioL1gIggbz6skTAAG2Y7rklN0630.png

wKioL1gIggbTW9XPAAH3hDOln78500.png

0

 

本文出自 “Opensamlee” 博客,請務必保留此出處http://gzsamlee.blog.51cto.com/9976612/1865020


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM