運維自動化工具Cobbler之——安裝實踐

運維自動化工具——Cobbler實踐

第1章 About Cobbler

 1.1 Cobbler Introduction

  Cobbler是一個Linux服務器安裝的服務,可以通過網絡啓動(PXE)的方式來快速安裝、重裝物理服務器

 和虛擬機,同時還可以管理DHCP,DNS等。

  Cobbler可以使用命令行方式管理,也提供了基於Web的界面管理工具(cobbler-web),還提供了API

接口,可以方便二次開發使用。Cobbler是較早前的kickstart的升級版,優點是比較容易配置,還自帶web界面比較易於管理。

  Cobbler內置了一個輕量級配置管理系統,但它也支持和其它配置管理系統集成,如Puppet,暫時不支

SaltStack

 1.2 Cobbler related servies

  • PXE服務支持

  • DHCP服務管理

  • DNS服務管理(可選bind,dnsmasq)

  • 電源管理

  • Kickstart服務支持

  • YUM倉庫管理

  • TFTP(PXE啓動時需要)

  • Apache(提供kickstart的安裝源,並提供定製化的kickstart

第2章 Prerequisites

 2.1 Requries Packages

yum -y install cobbler cobbler-web dhcp tftp-server pykickstart httpd xinetd

 #注:這裏我是在Centos-7上做操作,有的安裝包可能和官網會不同。

 2.2 Installing From Packages

  2.2.1 CentOS Release and Environment

[root@linux-node1 ~]# cat/etc/redhat-release
CentOS Linux release 7.2.1511 (Core)
[root@linux-node1 ~]# uname -r
3.10.0-327.18.2.el7.x86_64
[root@linux-node1 ~]# uname -m
x86_64
[root@linux-node1 ~]# hostname
linux-node1.example.com
[root@linux-node1 ~]# ifconfig eth0|awk-F "[ :]+" 'NR==2{print $3}'
192.168.56.11
[root@linux-node1 ~]# getenforce
Disabled
[root@linux-node1 ~]# systemctl stop firewalld

  2.2.2 epel源和yum源

wget -O /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-7.repo
wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo

 2.3 Cobbler Funcation Introduction

  • 使用一個以前定義的模塊來配置DHCP服務(如果啓用了管理DHCP

  • 將一個存儲庫(yumrsync)建立鏡像或解壓縮一個媒介,已註冊一個新操作系統

  • DHCP配置文件中爲需要安裝的機器創建一個條目,並使用您指定的參數(IPMAC地址)

  • TFTP服務目錄下創建適當的PXE文件

  • 重新啓動DHCP服務以反映更改

  • 重新啓動機器以開始安裝(如果電源管理已啓用)

2.4 Configuration Cobbler

[root@linux-node1 ~]# systemctl start xinetd
[root@linux-node1 ~]# systemctl start rsyncd
[root@linux-node1 ~]# systemctl start tftp
[root@linux-node1 ~]# systemctl start dhcpd   ###由於還沒有生成,無法啓動(後續)
[root@linux-node1 ~]# systemctl start httpd
[root@linux-node1 ~]# systemctl start cobblerd

2.5 檢查Cobbler安裝配置

 執行以下命令檢查Cobbler的配置,如果看不到下面的結果,再次執行cobbler和httpd服務(cobbler check命令用於向用戶提供檢查信息,就安裝可能出現的問題進行提示)

[root@linux-node1 ~]# cobbler check 
The following are potential configuration items that you may want to fix:
1 :The 'server' field in /etc/cobbler/settingsmust be set to something other than 
 localhost, or kickstarting features willnot work.  This should be a resolvablehostname or
 IP for the boot server as reachable by all machines that will use it.
2 :For PXE to be functional, the 'next_server'field in /etc/cobbler/settings must be set 
 to something other than 127.0.0.1,and should match the IP of the boot server on the PXE 
 network.
3 :enable and start rsyncd.service with systemctl
4 :debmirror package is not installed,it will be required to manage debian deployments 
 and repositories
5 :The default password used by thesample templates for newly installed machines 
 (default_password_crypted in/etc/cobbler/settings) is still set to 'cobbler' and should 
 be changed, try:"openssl passwd -1 -salt 'random-phrase-here' 'your-password-here'"to 
 generate new one
 Restart cobblerd and then run 'cobbler sync' to apply changes.

 根據上面的提示信息完成配置:

 第1、2項:

[root@linux-node1 ~]# vim /etc/cobbler/settings
next_server:192.168.56.11
server:192.168.56.11

這裏是指提供Cobbler服務的服務主機。

 第3項:

[root@linux-node1 ~]# systemctl start rsyncd

 注:這裏可能啓動了,檢查還是會出現,但是不影響服務的正常運行。

 第4項:

[root@linux-node1 ~]# yum insall debmirror

 注:在Debian操作系統平臺,會需要安裝這個包,在CentOS或Redhat不用。

 第5項:

[root@linux-node1 ~]# openssl passwd -1 -salt 'cobbler' '123456'
$1$cobbler$sqDDOBeLKJVmxTCZr52/11 
#設置新裝系統的默認root密碼123456。下面的命令來源於提示5,random-phrase-here爲干擾碼,
可以自行在配置文件/etc/cobbler/setting中設定:   
default_password_crypted:"$1$root$/YPJHOfSs7b.KSSgk9sjT/"

 2.5 Manager DHCP

 You also need to enable such managementthis is done in your setting:

[root@linux-node1 ~]# vim /etc/cobbler/settings
manage_dhcp: 1    #將"0"改爲"1"

  下一步我們配置DHCP的模板文件:

[root@linux-node1 ~]# vim /etc/cobbler/dhcp.template
#僅列出修改的字段
…….
subnet 192.168.56.0 netmask255.255.255.0 {              #網段和子網
    option routers        192.168.56.2;               #網關
    option domain-name-servers   192.168.56.2;          #DNS服務器
    option subnet-mask       255.255.255.0;                  
    range dynamic-bootp      192.168.1.100 192.168.1.200;   #可分配地址段
………

 執行cobbler sync同步應用更改,會自動生成dhcp的配置文件

[root@linux-node1 ~]# cobbler sync

 查看生成的DHCP配置文件:

[root@linux-node1 ~]# cat /etc/dhcp/dhcpd.conf
#******************************************************************
# Cobbler managed dhcpd.conf file
# generated from cobbler dhcp.conftemplate (Fri May 27 01:11:00 2016)
# Do NOT make changes to/etc/dhcpd.conf. Instead, make your changes
# in /etc/cobbler/dhcp.template, as/etc/dhcpd.conf will be
# overwritten.
#******************************************************************
ddns-update-style interim;
allow booting;
allow bootp;
ignore client-updates;
set vendorclass = optionvendor-class-identifier;
option pxe-system-type code 93 =unsigned integer 16;
subnet 192.168.56.0 netmask255.255.255.0 {
    option routers            192.168.56.2;
    option domain-name-servers  192.168.56.2;
    option subnet-mask        255.255.255.0;
    range dynamic-bootp       192.168.56.100 192.168.56.210;
    default-lease-time          21600;
    max-lease-time             43200;
    next-server               192.168.56.11;
    class "pxeclients" {
         match if substring (option vendor-class-identifier, 0, 9) ="PXEClient";
         if option pxe-system-type = 00:02 {
                  filename"ia64/elilo.efi";
         } else if option pxe-system-type = 00:06 {
                  filename"grub/grub-x86.efi";
         } else if option pxe-system-type = 00:07 {
                  filename"grub/grub-x86_64.efi";
         } else {
                  filename"pxelinux.0";
         }
    }
}
# group for Cobbler DHCP tag: default
group {
}

第3章 Cobbler Import

 導入一個ISO文件,作爲網路安裝操作系統的時候的鏡像源,鏡像文件需要我們導入到本地的Cobbler服務器。

 3.1 實例

 我們導入一個操作系統爲CentOS-7-x86_64位鏡像文件,因爲我們用的是虛擬機,所以掛載本地鏡像;

[root@linux-node1 ~]# mount /dev/cdrom /mnt/ 
[root@linux-node1 ~]# cobbler import --name=CentOS-7-x86_64 --path=/mnt/ --arch=x86_64

 參數說明:

  # --path   鏡像路徑

  # --name 爲安裝源定義一個名字

  # --arch   指定安裝源是32位、64位、ia64, 目前支持的選項有: x86│x86_64│ia64

  # 安裝源的唯一標示就是根據name參數來定義,本例導入成功後,安裝源的唯一標示

 3.2 查看導入的鏡像文

[root@linux-node1 ~]# cobbler distro list   #查看鏡像列表
CentOS-7-x86_64

 默認Cobbler會將鏡像中的所有安裝文件拷貝到本地一份,放在/var/www/cobbler/ks_mirror下的

 CentOS-7.1-x86_64目錄下,因此/var/www/cobbler目錄必須具有足夠容納安裝文件的空間。

[root@linux-node1 ~]# cd /var/www/cobbler/ks_mirror/
[root@linux-node1 ks_mirror]# ls
CentOS-7-x86_64  config
[root@linux-node1 ks_mirror]# ls CentOS-7-x86_64/
CentOS_BuildTag  GPL     LiveOS    RPM-GPG-KEY-CentOS-7
EFI        p_w_picpaths    Packages    RPM-GPG-KEY-CentOS-Testing-7
EULA        isolinux    repodata    TRANS.TBL

 3.3 獲取更多的命令幫助

 查看導入鏡像命令的幫助信息

[root@linux-node1 ~]# cobbler import --help
Usage: cobbler [options]
Options:
 -h, --help              show this help message and exit
 --arch=ARCH               OSarchitecture being imported
 --breed=BREED              the breedbeing imported
 --os-version=OS_VERSION         the version beingimported
 --path=PATH               local path or rsync location
 --name=NAME               name, example'RHEL-5'
 --available-as=AVAILABLE_AS      tree is here, don'tmirror
 --kickstart=KICKSTART_FILassign    this kickstartfile        #分配這個啓動文件
 --rsync-flags=RSYNC_FLAGS       pass additional flagsto rsync

第4章 定製ks.cfg文件及調整內核參數

  我們在安裝操作系統的過程中,需要大量的和服務器交互操作,爲了減少這個交互過程,於是就有了

  kickstart。使用這種kickstart,只需事先定義好一個Kickstart自動應答配置文件ks.c),並讓安裝程序

  知道該配置文件的位置,在安裝過程中安裝程序就可以自 己從該文件中讀取安裝配置,這樣就避免了

 在安裝過程中多次的人機交互,從而實現無人值守的自動化安裝,可以參考

  Redhat官方的介紹:

 https://access.redhat.com/knowledge/docs/en-US/Red_Hat_Enterprise_Linux/6/html

 /Installation_Guide/s1-kickstart2-options.html

 ks.cfg文件組成大致分爲3段

  • 命令段

鍵盤類型,語言,安裝方式等系統的配置,有必選項和可選項,如果缺少某項必選項,安裝時會中斷並提示用戶選擇此項的選項
  •  軟件包段

%packages
@groupname:指定安裝的包組
package_name:指定安裝的包
-package_name:指定不安裝的包

 在安裝過程中默認安裝的軟件包,安裝軟件時會自動分析依賴關係。

  • 腳本段(可選)

%pre:安裝系統前執行的命令或腳本(由於只依賴於啓動鏡像,支持的命令很少)
%post:安裝系統後執行的命令或腳本(基本支持所有命令)

  提示:這裏的腳本段非常有意思,我們在做自動化的時候,可以將各種服務安裝腳本放到這裏,系統會

 自己執行,腳本的執行的方式有兩種,一種是客戶端安裝系統的時候下載準備好的腳本,然後執行;另

 一種則是不用下載腳本,但是腳本可以在客戶端執行操作;這裏大家可以瞭解一下"wget"命令的參數就

 可以輕鬆搞定,我下面會給一個案例。這時候,你只需要點開機,然後服務會自己給你搭建完成,完全

 不用管,相當方便。

 4.1 Cobbler kickstart文件的默認存放位置

  Cobbler默認會自帶很多ks文件,默認使用"ample_end.ks"這個,一會我們要自己指定一個寫好的ks文

 件,如下:

[root@linux-node1 ks_mirror]# cd/var/lib/cobbler/kickstarts/
[root@linux-node1 kickstarts]# ls         #自帶很多
default.ks   install_profiles  sample_autoyast.xml  sample_esxi4.ks  sample_old.seed
esxi4-ks.cfg  legacy.ks ample_end.ks(默認使用的ks文件)sample_esxi5.ks  sample.seed
esxi5-ks.cfg  pxerescue.ks    sample_esx4.ks   sample.ks

 4.2 上傳寫好的ks.cfg文件到/var/lib/cobbler/kickstart下面

 這是我提前準備的kickstart文件,名爲:CentOS-7-x86_64(經供參考):

#Kickstart Configurator by Role's_Tan.
#platform=x86, AMD64, or Intel EM64T
#System language
lang en_US
#System keyboard
keyboard us
#Sytem timezone
timezone Asia/Shanghai
#Root password
rootpw --iscrypted $default_password_crypted
#rootpw --iscrypted $1$ops-node$7hqdpgEmIE7Z0RbtQkxW20
#Use text mode install
text
#Install OS instead of upgrade
install
#Use NFS installation Media
url --url=$tree
#url --url=http://192.168.56.11/CentOS-7.1-x86_64
#System bootloader configuration
bootloader --location=mbr
#Clear the Master Boot Record
zerombr
#Partition clearing information
clearpart --all --initlabel 
#Disk partitioning information
part /boot --fstype xfs --size 1024 --ondisk sda
part swap --size 16384 --ondisk sda
part / --fstype xfs --size 1 --grow --ondisk sda
#System authorization infomation
auth  --useshadow  --enablemd5 
#Network information
$SNIPPET('network_config')
#network --bootproto=dhcp --device=eth0 --onboot=on
# Reboot after installation
reboot
#Firewall configuration
firewall --disabled 
#SELinux configuration
selinux --disabled
#Do not configure XWindows
skipx

%pre
$SNIPPET('log_ks_pre')
$SNIPPET('kickstart_start')
$SNIPPET('pre_install_network_config')
#Enable installation monitoring
$SNIPPET('pre_anamon')
%end

#Package install information          
%packages
@ base
@ core
sysstat
rsyslog
ntp
lrzsz
ncurses-devel
openssl-devel
zlib-devel
OpenIPMI-tools
nmap
screen
telnet
tree
%end

%post                 ###腳本和命令段
systemctl disable postfix.service   #關閉一個postfix服務,可以加很多,根據實際環境來操作。
%end

 上傳寫好的應答文件後,我們需要編輯系統默認的ks指向文件,操作如下:

[root@linux-node1 ~]# cobbler profile edit --name=CentOS-7-x86_64 --kickstart=/var/lib/cobbler/kickstarts/CentOS-7-x86_64.cfg

 但是我看了很多網友的資料,大家都需要改一下Centos7的網卡名,當然,我這裏爲了方便大家學習,

 也需要改一下吧!(沒辦法) 我們直接通過Cobbler提供的命令行來進行修改,大可不必要再系統安裝完

 成後在進行操作,方法如下:

[root@linux-node1 ~]# cobbler profile edit --name=CentOS-7-x86_64 --kopts='net.ifnames=0 biosdevname=0'
[root@linux-node1 ~]# cobbler sync
[root@linux-node1 ~]# cobbler profile list
    CentOS-7-x86_64

 這樣,大概工作就完成了,下一步就可以啓用客戶端,安裝操作系統了!

 4.3 以上的步驟完成之後,我們就可以新建虛擬機,安裝操作系統

 如下是客戶機啓動後的界面,我們選擇:CentOS-7-x86_64,然後就會進行安裝操作。

wKioL1daN__RigCqAAAQ-0N75GY042.png-wh_50

 4.4 Kickstart文件擴展(僅供參考,下面的操作是筆者在Centos-6.7-x86_64上的操作)

 上面我們說到ks文件的"%post"段,可以放一些腳本或命令端。這裏我就來說一些簡單的用法。

 首先,我們要實現的功能就是:

  • 自動安裝操作系統

  • 系統安裝後簡單優化系統

  • 自動部署配置服務(需要提前寫好腳本)

 其次,具體的操作,這裏給大家簡單說一下Kickstart文件的寫法就行了。

 我們在腳本及命令段寫(帶“#”的爲註釋信息):

 命令方式:

  •  前提是系統有這個命令

%post
#精簡開機自啓動服務(注:如果你安裝有別的服務,需要開機自啓動,這裏也需要加上,否則···你懂的)
chkconfig --list|grep "sshd|network|crond|rsyslog|sysstat"|awk '{print "chkconfig "$1" on"}'|bash
chkconfig --list|egrep -v "sshd|network|crond|rsyslog|sysstat"|awk '{print "chkconfig "$1" off"}'|bash

#啓動/關閉一個服務
/etc/init.d/network start|stop|reload|restart

#設置開機自啓動服務狀態
chkconfig sshd on|off

#創建一個目錄或文件
mkdir -p /server/scripts

#向文件中追加內容(向/etc/hosts文件追加主機名和IP地址)
echo "10.0.0.31 nfs01
10.0.0.41 backup" >> /etc/hosts
%end

 腳本:(兩種)

  • 客戶端的系統上有部署腳本

  • Cobbler服務端有部署腳本

  可能大多數人第一想法就是第一個,安裝系統後,就把部署腳本放到上面,然後執行,還是挺麻煩的。

 這裏我給各位說說第二種,我的部署腳本放到我的Cobbler端的HTTP服務的根目錄下(之前安裝的是

 Apache,默認根目錄是/var/www/html/),然後通過“wget”命令直接遠端執行,不用下載到客戶

 端,就能完成給客戶端部署安裝務。

 首先創建一個放部署腳本的目錄:

[root@linux-node1 ~]# mkdir -p /var/www/html/scripts

 下面就是重點:

%post
wget -O- http://192.168.56.11/scripts/nginx.sh|bash       #提示大寫的字母“O” 
%end

說明:

   優點:假如我們要部署一個Nginx的服務 ,將部署腳本放到Cobbler服務端的/var/www/html/scripts

 下,然後再kickstart文件中添加上面這行命令,就可以在客戶端上執行這個腳本,而不用下載到客戶本

 地然後再執行,怎麼樣!是不是很方便。

   缺點:每臺機器都會執行這個腳本。

   解決辦法:在實際工作場景,我們可以根據不同角色的服務器,根據主機名,或者IP地址來區分;在寫

 部署腳本的時候,在腳本中加上判斷語句,如果是這臺機器就執行,不是就“exit”,就是那麼簡單!

第5章 定製化安系統

 5.1 定製化介紹

 所謂定製化,就是根據服務器的角色、主機名、IP或功能等等,進行操作系統安裝。

  • MAC地址(核心)

  • IP地址

  • 主機名

  • 子網

  • 網關

  • DNS

 提示:在定製化之前,需要提到拿到服務器的物理地址(MAC)

 5.2 操作步驟

[root@linux-node1 ~]# cobbler system add --name=test.example.com --mac=00:50:56:21:AA:6E \
--ip-address=192.168.56.110 --subnet=255.255.255.0 --gateway=192.168.56.2 --interface=eth0
--name-servers="192.168.56.28.8.8.8" --static=1 --hostname=test.example.com 
--kickstart=/var/lib/cobbler/kickstarts/CentOS-7-x86_64.cfg --profile=CentOS-7-x86_64

 參數說明:

    # --name          自定義,但不能重複

    #--mac             客戶端的mac地址

    #--profile         指定profile文件

    #--ip-address   指定ip地址

    #--subnet         指定子網

    #--gateway      指定網關

    #--interface      制定網卡名字

    #--hostname    指定主機名

    #--name-server指定DNS

    #--kickstart       指定ks文件

 查看自定義列表:

[root@linux-node1 ~]# cobbler system list
  test.example.com

5.3 客戶端操作

 此時,客戶端直接開機之後,會自動進行安裝,而不用我們在選擇Profiel文件(保證所有服務正常)

wKioL1daXwXya3S9AACid7KAb9k484.png-wh_50

第6章 Cobbler Web管理

  Cobbler服務之所以簡單,是因爲它有一個圖形化界面的操作平臺,那就是它的Web界面,這大大簡易

 了它的入門難度;可以在web管理界面完成命令行同樣完成的任務。

 6.1 登錄方式

https://Cobbler_sever-ip/cobbler_web

  Web界面:

 用戶名:cobbler

 密   碼:cobbler

wKiom1daYEyDEaH6AABl2pLwNKA494.png-wh_50

 登錄後的界面:

wKiom1daY1GwlZGvAADgVY4HiSY505.png-wh_50

 6.2 Web授權配置文件

 如下:

[root@linux-node1 ~]# cd /etc/cobbler/
[root@linux-node1 cobbler]# vim users.conf
[admins]
admin = ""
cobbler = ""

 添加一個Web端登陸用戶:

  查看原有的:

[root@linux-node1 ~]# cd /etc/cobbler/
[root@linux-node1 cobbler]# cat users.digest 
cobbler:Cobbler:a2d6bae81669d707b72c0bd9806e01f3 
 用戶名    組      加密密碼

  添加:用戶名爲“role”,屬於“Cobbler”組

[root@linux-node1 cobbler]# htdigest /etc/cobbler/users.digest "Cobbler" "role"
[root@linux-node1 cobbler]# cat users.digest 
cobbler:Cobbler:a2d6bae81669d707b72c0bd9806e01f3
tanjianxin:Cobbler:a1ca1422226e9e45e9b7e10da626cdb3    ###多了一個用戶的信息

 到這裏Web端的一些基本介紹完成了!

第7章 客戶端重裝系統工具

 7.1 Koan介紹

  KoanCobbler的一個輔助程序,可以安裝在遠程系統上(客戶端),通過配置引導裝載程序重新安裝

 系統;這也可以用於操作系統升級而啓動,指定一個乾淨的安裝。

 更多用法請參考官網信息:http://cobbler.github.io/manuals/2.6.0/

 7.2 用法如下:

 yum安裝(需要epel源支持)

[root@test ~]# yum install koan -y

 列出Cobbler服務端可用的profile文件

[root@test ~]# koan --server=192.168.56.11 --list=profiles
- looking for Cobbler athttp://192.168.56.11:80/cobbler_api
CentOS-7-x86_64
CentOS-6-x86_64

 參數說明:

    #--server   指定Cobbler服務器IP地址

    #--list        列出一些你需要的信息,可以自己指定(--help)

 指定要重裝系統的Cobbler端機器及profile文件

[root@test ~]# koan --replace-self --server=192.168.56.11 --profile=CentOS-7-x86_64


 後記:

 學習貴在堅持,要培養出自己的學習能力;這樣學習新的技術知識,纔不會感到吃力!

 技術的提升僅是量的積累,思想的提升纔是質的飛躍!(出自:老男孩老師語錄)

 後期期望給大家帶來更多的文章!

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章