Cobbler自動化工具同時批量部署CentOS7及CentOS6.5


Cobbler介紹:

Cobbler是一款自動化操作系統安裝的實現,與PXE安裝系統的區別就是可以同時部署多個版本的系統,而PXE只能選擇一種系統。而如今的架構動輒就是上千臺的服務器。而存在一些操作系統不統一的現象,例如最初的架構採用的是CentOS5系列的系統,而新出現了一些技術後,需要新的操作系統的支持,一方面是需要批量部署裝機,而另一方面還需要考慮到如果老版本的服務器出現故障後還需要重新去部署。並且提供Web配置頁面,可以只需要一些點擊就可以完成一些操作。


Cobbler的實現和PXE的方法大同小異,例如都需要安裝tftp,dhcp,http等,但是使用yum安裝Cobbler的時候,會自動把需要的全部安裝上,而不需要去手動一個個的安裝。


本次將實現CentOS 6.5和CentOS7的安裝。


而此次安裝CentOS7的操作系統,新的系統將不再使用默認的EXT文件系統,對新引入的XFS做下簡介:

XFS文件系統是SGI開發的高級日誌文件系統,XFS極具伸縮性。並且在CentOS7上已經是默認的文件系統。主要特性包含一下幾點:

數據完整性:

採用XFS文件系統時,如果發生宕機現象,由於文件系統開啓日誌功能,磁盤上的文件會記錄到日誌,並且可以短時間內恢復磁盤數據。

傳輸性:

XFS文件系統採用優化算法,日誌記錄對於IO影響小,而並不映像查詢與分配的性能。XFS文件系統能夠連續提供快速的反映時間。

可擴展性:

XFS是一個64bit的文件系統,可以支持上百萬T字節的存儲空間。對特大文件及小尺寸文件的支持非常好,支持大數量目錄。XFS文件系統使用表結構(B+樹)保證文件系統可以快速搜索及快速分配空間。XFS文件系統能夠持續提供高速操作,文件系統性能不受目錄及文件數量限制。

傳輸帶寬:

XFS文件系統能以接近裸設備的IO的性能存儲數據,在單個文件系統測試中,吞吐量可以達到7GB美妙,對單個文件的讀寫操作達到4GB每秒。


安裝Cobbler。

使用yum安裝cobbler。

# yum install cobbler
Install      21 Package(s)
Total download size: 6.0 M
Installed size: 23 M
Is this ok [y/N]: Y
Downloading Packages:
(1/21): PyYAML-3.10-3.el6.x86_64.rpm                                                                           | 157 kB     00:00     
(2/21): apr-util-ldap-1.3.9-3.el6_0.1.x86_64.rpm                                                               |  15 kB     00:00     
(3/21): cobbler-2.4.0-1.el6.noarch.rpm                                                                         | 664 kB     00:00     
(4/21): createrepo-0.9.9-18.el6.noarch.rpm                                                                     |  94 kB     00:00     
(5/21): deltarpm-3.5-0.5.20090913git.el6.x86_64.rpm                                                            |  71 kB     00:00     
(6/21): genisoimage-1.1.9-12.el6.x86_64.rpm                                                                    | 348 kB     00:00     
(7/21): httpd-2.2.15-29.el6.centos.x86_64.rpm                                                                  | 821 kB     00:00     
(8/21): httpd-tools-2.2.15-29.el6.centos.x86_64.rpm                                                            |  73 kB     00:00     
(9/21): libyaml-0.1.5-1.el6.x86_64.rpm                                                                         |  52 kB     00:00     
(10/21): mod_wsgi-3.2-3.el6.x86_64.rpm                                                                         |  66 kB     00:00     
(11/21): mtools-4.0.12-1.el6.x86_64.rpm                                                                        | 194 kB     00:00     
(12/21): python-cheetah-2.4.1-1.el6.x86_64.rpm                                                                 | 365 kB     00:00     
(13/21): python-deltarpm-3.5-0.5.20090913git.el6.x86_64.rpm                                                    |  27 kB     00:00     
(14/21): python-markdown-2.0.1-3.1.el6.noarch.rpm                                                              | 118 kB     00:00     
(15/21): python-netaddr-0.7.5-4.el6.noarch.rpm                                                                 | 1.0 MB     00:00     
(16/21): python-pygments-1.1.1-1.el6.noarch.rpm                                                                | 562 kB     00:00     
(17/21): python-setuptools-0.6.10-3.el6.noarch.rpm                                                             | 336 kB     00:00     
(18/21): python-simplejson-2.0.9-3.1.el6.x86_64.rpm                                                            | 126 kB     00:00     
(19/21): syslinux-4.02-8.el6.x86_64.rpm                                                                        | 859 kB     00:00     
(20/21): tftp-server-0.49-7.el6.x86_64.rpm                                                                     |  39 kB     00:00     
(21/21): xinetd-2.3.14-39.el6_4.x86_64.rpm                                                                     | 121 kB     00:00     
--------------------------------------------------------------------------------------------------------------------------------------
Total   
                                                                                              5.6 MB/s | 6.0 MB     00:01

 

可以看到這裏是安裝了http,lftp,因爲dhcp服務還是需要手動去安裝的。


使用yum安裝dhcp。

# yum install dhcp


啓動httpd,lftp,cobbler, xinetd,rsync查看端口。

# ss -tual
Netid  State      Recv-Q Send-Q                              Local Address:Port                                  Peer Address:Port   
udp    UNCONN     0      0                                               *:bootps                                           *:*       #dhcp相關
udp    UNCONN     0      0                                               *:bootpc                                           *:*       
udp    UNCONN     0      0                                               *:tftp                                             *:*       #
tcp    LISTEN     0      128                                            :::http                                            :::*       #
tcp    LISTEN     0      128                                            :::ssh                                             :::*       
tcp    LISTEN     0      128                                             *:ssh                                              *:*       
tcp    LISTEN     0      100                                           ::1:smtp                                            :::*       
tcp    LISTEN     0      100                                     127.0.0.1:smtp                                             *:*       
tcp    LISTEN     0      5                                       127.0.0.1:25151                                            *:*       #cobbler默認端口
tcp    LISTEN     0      64                                             :::rsync                                           :::*   #


啓動cobbler時,使用cobbler –help可以看到cbbler的命令選項,而使用cobbler check檢測環境時,會有如下的報錯。

# cobbler check
The following are potential configuration items that you may want to fix:
#錯誤指出我們的cobbler不應該是本地的IP地址,而是一個可以被解析的hostname或者IP
1 : The 'server' field in /etc/cobbler/settings must be set to something other than localhost, or kickstarting features will not work.  This should be a resolvable hostname or IP for the boot server as reachable by all machines that will use it.

#錯誤指出next_server的IP地址不應該是127.0.0.1的主機地址,而應該是一個真正的tftp服務器地址
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.

#錯誤是不一定要聯網下載某些程序,而安裝syslinux就可以
3 : some network boot-loaders are missing from /var/lib/cobbler/loaders, you may run 'cobbler get-loaders' to download them, or, if you only want to handle x86/x86_64 netbooting, you may ensure that you have installed a *recent* version of the syslinux package installed and can ignore this message entirely.  Files in this directory, should you want to support all architectures, should include pxelinux.0, menu.c32, elilo.efi, and yaboot. The 'cobbler get-loaders' command is the easiest way to resolve these requirements.

#debmrror沒有定義好
4 : debmirror package is not installed, it will be required to manage debian deployments and repositories

#需要額外安裝pykickstart
5 : ksvalidator was not found, install pykickstart

#cobbler安裝完成後的管理員密碼需要替換,因爲所有安裝後的密碼都是一致的
6 : The default password used by the sample 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

#沒有fencing設備,爲可選的
7 : fencing tools were not found, and are required to use the (optional) power management features. install cman or fence-agents to use them
Restart cobblerd and then run 'cobbler sync' to apply changes.


編輯settings配置文件,修改上面報錯的位置信息。

# vim /etc/cobbler/settings
server: 192.168.151.128#修改cobbler的主機地址
next_server: 172.16.32.10#修改tftpIP地址
default_password_crypted: "$1$f75165f2$vmkPJLhF1yCiLhosykXOC/"#修改cobbler默認加密密碼,使用如下命令生成


# openssl passwd -1 -salt `openssl rand -hex 4`
Password: 
$1$f75165f2$vmkPJLhF1yCiLhosykXOC/


複製pxelinux.0, menu.c32到/var/lib/cobbler/loaders/。

# cd /usr/share/syslinux/
# cp -r * /var/lib/cobbler/loaders/


修改完成後執行cobbler sync。

# cobbler sync
task started: 2014-10-07_231726_sync
task started (id=Sync, time=Tue Oct  7 23:17:26 2014)
running pre-sync triggers
cleaning trees
mkdir: /var/lib/tftpboot/pxelinux.cfg
mkdir: /var/lib/tftpboot/grub
mkdir: /var/lib/tftpboot/s390x
mkdir: /var/lib/tftpboot/ppc
mkdir: /var/lib/tftpboot/etc
removing: /var/lib/tftpboot/grub/images
copying bootloaders
copying: /usr/share/syslinux/pxelinux.0 -> /var/lib/tftpboot/pxelinux.0
copying: /usr/share/syslinux/menu.c32 -> /var/lib/tftpboot/menu.c32
copying: /usr/share/syslinux/memdisk -> /var/lib/tftpboot/memdisk
copying distros to tftpboot
copying images
generating PXE configuration files
generating PXE menu structure
rendering TFTPD files
generating /etc/xinetd.d/tftp
cleaning link caches
running post-sync triggers
running python triggers from /var/lib/cobbler/triggers/sync/post/*
running python trigger cobbler.modules.sync_post_restart_services
running shell triggers from /var/lib/cobbler/triggers/sync/post/*
running python triggers from /var/lib/cobbler/triggers/change/*
running python trigger cobbler.modules.scm_track
running shell triggers from /var/lib/cobbler/triggers/change/*
*** TASK COMPLETE ***


Cobbler 子命令介紹。

cobbler check         #檢查cobbler配置
cobbler sync          #步配置到dhcp pxe和數據目錄
cobbler list          #列出所有的cobbler元素
cobbler import        #導入安裝的系統光盤鏡像
cobbler report        #列出各元素的詳細信息
cobbler distro        #查看導入的發行版系統信息
cobbler profile       #查看配置信息
cobbler system        #查看添加的系統信息
cobbler reposync      #同步yum倉庫到本地


因爲dhcp需要還是需要手動安裝配置,而不是需要cobbler來管理的,還需要配置dhcp。

# cp /usr/share/doc/dhcp-4.1.1/dhcpd.conf.sample /etc/dhcp/dhcpd.conf 
cp: overwrite `/etc/dhcp/dhcpd.conf'? y
# vim /etc/dhcp/dhcpd.conf 
subnet 172.16.32.0 netmask 255.255.255.0 {
  range 172.16.32.15 172.16.32.50;        #dhcp分配網絡
  option routers 172.16.32.10;            #dhcp主機地址
  next-server 172.16.32.10;               #lftp地址
  filename="pxelinux.0";
}
# service dhcpd start


接下來開始導入光盤映像文件。

# mount /dev/cdrom /mnt/
mount: block device /dev/sr0 is write-protected, mounting read-only


導入CentOS6.5的映像文件

# cobbler import --name=CentOS_6.5_x86_64 --path=/mnt/


期間因爲導入CentOS7的鏡像文件時我的電腦磁盤滿了而虛擬機停止,觸發了一個Cobbler的BUG,再次啓動虛擬機後重新導入CentOS7的映像文件時顯示如下。

# cobbler import --name=CentOS_7_x86_64 --path=/mnt/
Traceback (most recent call last):
  File "/usr/bin/cobbler", line 35, in <module>
    sys.exit(app.main())
  File "/usr/lib/python2.6/site-packages/cobbler/cli.py", line 644, in main
    rc = cli.run(sys.argv)
  File "/usr/lib/python2.6/site-packages/cobbler/cli.py", line 270, in run
    self.token         = self.remote.login("", self.shared_secret)
  File "/usr/lib64/python2.6/xmlrpclib.py", line 1199, in __call__
    return self.__send(self.__name, args)
  File "/usr/lib64/python2.6/xmlrpclib.py", line 1489, in __request
    verbose=self.__verbose
  File "/usr/lib64/python2.6/xmlrpclib.py", line 1253, in request
    return self._parse_response(h.getfile(), sock)
  File "/usr/lib64/python2.6/xmlrpclib.py", line 1392, in _parse_response
    return u.close()
  File "/usr/lib64/python2.6/xmlrpclib.py", line 838, in close
    raise Fault(**self._stack[0])
xmlrpclib.Fault: <Fault 1: "<class 'cobbler.cexceptions.CX'>:'login failed'">


解決方法。

# service cobblerd restart
Stopping cobbler daemon:                                   [  OK  ]
Starting cobbler daemon:                                   [  OK  ]
# cobbler get-loaders


重新導入。

# cobbler import --name=CentOS_7_x86_64 --path=/mnt/
task started: 2014-10-08_173739_import
task started (id=Media import, time=Wed Oct  8 17:37:39 2014)
Found a candidate signature: breed=redhat, version=rhel6
Found a candidate signature: breed=redhat, version=fedora16
Found a candidate signature: breed=redhat, version=fedora17
Found a candidate signature: breed=redhat, version=fedora18
No signature matched in /var/www/cobbler/ks_mirror/CentOS_7_x86_64
!!! TASK FAILED !!!


這個時候又一次的出錯了:!!! TASK FAILED !!!,使用如下命令解決。

# cobbler signature update
再次導入。
# cobbler import --name=CentOS_7_x86_64 --path=/mnt/


查看/var/www/cobbler/ks_mirror路徑下的目錄。

# ls
CentOS_6.5_x86_64  CentOS_7_x86_64  config


查看dirstro。

# cobbler distro list
   CentOS_6.5-x86_64
   CentOS_7-x86_64


接下來準備ks.cfg文件。CentOS6.5的cfg文件是參考我上次PXE時使用的,而CentOS7的在軟件包安裝以及磁盤分區上有些出入,CentOS7使用的是xfs系統。

#version=RHEL7
# System authorization information
auth --enableshadow --passalgo=sha512
url --url=http://172.16.32.10/cobbler/ks_mirror/CentOS_7_x86_64

# Run the Setup Agent on first boot
reboot
firewall --disabled
ignoredisk --only-use=sda

# Keyboard layouts
keyboard --vckeymap=us --xlayouts='cn'
# System language
lang en_US.UTF-8

# Network information
network  --bootproto=dhcp --device=ens32 --onboot=off --ipv6=auto
network  --hostname=localhost.localdomain

# Root password
rootpw --iscrypted $6$rHQRho3gkPJXIgy7$LTVHkf8PwxnOUc8QPvotK3myXGDsp2FKfdHWjWftjwcSAAB.V/j7Ki3lTDbu6e2Kc55imnNLc/Hno./VQh2cz.

# System timezone
timezone Asia/Shanghai --isUtc

# System bootloader configuration
bootloader --location=mbr --boot-drive=sda
# Partition clearing information
zerombr
clearpart --all
clearpart --none --initlabel

# Disk partitioning information
part /boot --fstype="xfs" --ondisk=sda --size=500
part pv.10 --fstype="lvmpv" --ondisk=sda --size=82087
volgroup centos --pesize=4096 pv.10
logvol /var  --fstype="xfs" --size=40000 --name=var --vgname=centos    #此處便是XFS的LVM邏輯卷劃分
logvol /  --fstype="xfs" --size=20000 --name=root --vgname=centos
logvol swap  --fstype="swap" --size=2080 --name=swap --vgname=centos
logvol /usr  --fstype="xfs" --size=20000 --name=usr --vgname=centos

%packages
@core
@development
%end


添加Cobbler Profile。

# cobbler profile add --name=CentOS7_X86_64-basic --distro=CentOS_7-x86_64 --kickstart=/tmp/CentOS7_x86_64.ks.cfg 
# cobbler profile add --name=CentOS_6.5_X86_64-basic --distro=CentOS_6.5-x86_64 --kickstart=/tmp/CentOS6.5_x86_64.ks.cfg 
# cobbler profile list
   CentOS7_X86_64-basic
   CentOS_6.5-x86_64
   CentOS_6.5_X86_64-basic
   CentOS_7-x86_64


這時候就可以開始裝機了。先安裝CentOS7。

wKioL1Q1PHeT-m69AAEuY6AL4lA738.jpg

wKioL1Q1PHqgvPcOAAISs2hkEkw392.jpg

wKiom1Q1PEWwJ5ggAAMhkz8W234297.jpg

wKioL1Q1PH2SXBbSAACAjMdupV8756.jpg


在安裝CentOS6.5。

wKiom1Q1PJLD85luAAEd3vEMQqQ223.jpg

wKioL1Q1PMnD-xLOAAE4MLgw4Us617.jpg


CobblerWeb界面。

# yum install cobbler-web


Web頁面默認不允許任何人登錄,需要手動修改認證相關配置。

# vim /etc/cobbler/modules.conf
[authentication]
#module = authn_denyall
module = authn_pam


創建賬戶,使其能夠登錄CobblerWeb頁面。

# useradd Cadmin
[root@web tmp]# passwd Cadmin
Changing password for user Cadmin.
New password: 
BAD PASSWORD: it is too simplistic/systematic
BAD PASSWORD: is too simple


修改Cobbler的用戶配置文件,添加進Cobbler管理組。

# vim /etc/cobbler/users.conf
[admins]
admin = "Cadmin"
cobbler = ""


重啓http,Cobbler。

# service cobblerd restart
Stopping cobbler daemon:                                   [  OK  ]
Starting cobbler daemon:                                   [  OK  ]
# service httpd restart
Stopping httpd:                                            [  OK  ]
Starting httpd:                                            [  OK  ]


地址欄輸入172.16.32.10/cobbler_web,就可以訪問了。

wKioL1Q1PU2iwqb8AAGv6z5uk7A024.jpg

登錄進去後就可以通過Web頁面來配置了。

wKiom1Q1PTKSCN5aAAPYoVmA-gs882.jpg

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