Cobbler是簡便的批量部署操作系統的工具,不僅操作不需要太複雜,而且使用cobbler還能在多個主機上部署多個操作系統,甚是方便。
部署cobbler需要依賴的組件有tftp服務器、dhcp服務器、rsync必要的時候還需要用到dns服務器。
本文就展示一下,多服務集於一個主機部署的cobbler。
文中所使用的工具有VMware虛擬機,兩個虛擬主機,一個CentOS-6.5-x86_64系統鏡像。部署環境:CentOS6.5-x86_64環境。
前提:由於cobbler需要依賴epel環境,在文中展示時,連接的epel的指向教室環境。
1、需要安裝cobbler cobbler-web pykickstart debmirror
[root@node1 ~]# yum install cobbler cobbler-web pykickstart debmirror
Package Arch Version Repository Size
=====================================================================================================================================================
Installing:
cobbler noarch 2.4.0-1.el6 new2 664 k
cobbler-web noarch 2.4.0-1.el6 new2 299 k
debmirror noarch 2.14-2.el6 new2 58 k
pykickstart noarch 1.74.14-1.el6 epel 309 k
Installing for dependencies:
Django14 noarch 1.4.8-1.el6 new2 4.3 M
PyYAML x86_64 3.10-3.el6 new2 157 k
createrepo noarch 0.9.9-18.el6 epel 94 k
deltarpm x86_64 3.5-0.5.20090913git.el6 epel 71 k
libyaml x86_64 0.1.5-1.el6 new2 52 k
mod_ssl x86_64 1:2.2.15-29.el6.centos epel 90 k
mod_wsgi x86_64 3.2-3.el6 epel 66 k
perl-LockFile-Simple noarch 0.207-2.el6 new2 23 k
python-cheetah x86_64 2.4.1-1.el6 epel 365 k
python-deltarpm x86_64 3.5-0.5.20090913git.el6 epel 27 k
python-markdown noarch 2.0.1-3.1.el6 epel 118 k
python-netaddr noarch 0.7.5-4.el6 epel 1.0 M
python-pygments noarch 1.1.1-1.el6 epel 562 k
python-setuptools noarch 0.6.10-3.el6 epel 336 k
python-simplejson x86_64 2.0.9-3.1.el6 epel 126 k
syslinux x86_64 4.02-8.el6 epel 859 k
tftp-server x86_64 0.49-7.el6 epel 39 k
xinetd x86_64 2:2.3.14-39.el6_4 epel 121 k
Transaction Summary
=====================================================================================================================================================
裏面需要解決不少依賴關係,其中還附帶tftp-server,Django14,還有不少關於python相關的。
2、解決cobbler啓動需要的服務
- dhcp(可以由dhcpd提供)或dnsmasq
- tftp(可以由tftp-server程序包提供,或cobbler自帶的tftp(剛纔確實安裝過tftp))。
- rsync可以由rsync程序包提供
- dns可以由bind安裝包提供或dnsmasq
3、開始着手部署,由於前期交代過多服務部署於一個主機。
step1、配置dhcp服務
[root@node1 ~]# yum install dhcp
……………(中間略)
Installed:
dhcp.x86_64 12:4.1.1-38.P1.el6.centosComplete!
step2、[root@node1 ~]# vim /etc/dhcp/dhcpd.conf
#
# DHCP Server Configuration file.
# see /usr/share/doc/dhcp*/dhcpd.conf.sample
# see 'man 5 dhcpd.conf'
#提示我們去複製dhcpd.conf.sample來取代這個配置文件。這裏可以先把dhcp的原配置文件重命名爲dhcpd.conf.bak。
接着
[root@node1 ~]# cp /usr/share/doc/dhcp-4.1.1/dhcpd.conf.sample /etc/dhcp/dhcpd.conf(注意這裏是dhcpd.conf,筆者曾經改錯名字導致服務無法啓動)
step3、修改dhcp配置文件
[root@node1 ~]# vim /etc/dhcp/dhcpd.conf
part1、
part2、
step4、配置好dhcp服務器,可以通過“service dhcpd start”啓動服務,並確保udp 67端口是由dhcp監聽。
[root@node1 ~]# ss -tunlp | grep 67
udp UNCONN 0 0 *:631 *:* users:(("cupsd",1367,9))
udp UNCONN 0 0 *:67 *:* users:(("dhcpd",25392,7))
tcp LISTEN 0 128 127.0.0.1:631 *:* users:(("cupsd",1367,7))
tcp LISTEN 0 128 ::1:631 :::* users:(("cupsd",1367,6))
4、繼dhcp以後,還需要啓動tftp服務以及rsync
[root@node1 ~]# chkconfig tftp on
[root@node1 ~]# service xinetd start
Starting xinetd: [ OK ]
[root@node1 ~]# chkconfig --list | grep tftp
tftp: on
[root@node1 ~]# chkconfig rsync on
[root@node1 ~]# service xinetd restart
Stopping xinetd: [ OK ]
Starting xinetd: [ OK ]
[root@node1 ~]# chkconfig --list | grep rsync
rsync: on
[root@node1 ~]# chkconfig --list | grep tftp
tftp: on
5、下面就是cobbler各組件的配置,如圖,本次演示要使用CentOS6.5鏡像文件作爲distribution。
將光盤掛載到隨便一個目錄,本次演示在/media/cdrom。
[root@node1 ~]# mkdir -pv /media/cdrom && mount /dev/cdrom /media/cdrom
mkdir: created directory `/media/cdrom'
mount: block device /dev/sr0 is write-protected, mounting read-only
[root@node1 cdrom]# cobbler import --name=CentOS65 --path=/media/cdrom 等於將光盤中的內容導入到系統上。而如果用光盤導入的話,cobbler import 命令參數生成的光盤鏡像在系統的路徑在/var/www/cobbler/ks_mirror下。
在導入光盤之前,最後配置cobbler以及開啓cobbler服務。
編輯/etc/cobbler/settings這個文件,文件中有需要加密的,使用openssl passwd -1 -salt `openssl rand -hex 4`這個命令提示輸入密碼,生成密碼串,複製並粘貼到文件中
part1、
part2、next-server要與之前定義的一致。
part3、cobbler的server地址
接着保存配置文件,cobbler sync以及service cobblerd start啓動
[root@node1 cdrom]# service cobblerd start
Starting cobbler daemon: [ OK ]
[root@node1 cdrom]# ss -tnlp | grep 25151
LISTEN 0 5 127.0.0.1:25151 *:* users:(("cobblerd",25555,8))
6、可以啓動cobbler各組件的服務。
[root@node1 cdrom]# cobbler import --name=CentOS65 --path=/media/cdrom (這裏報了一個錯誤,需要重啓一個cobblerd服務)
httpd does not appear to be running and proxying cobbler, or SELinux is in the way. Original traceback:
Traceback (most recent call last):
File "/usr/lib/python2.6/site-packages/cobbler/cli.py", line 252, in check_setup
s.ping()
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 1235, in request
self.send_content(h, request_body)
File "/usr/lib64/python2.6/xmlrpclib.py", line 1349, in send_content
connection.endheaders()
File "/usr/lib64/python2.6/httplib.py", line 908, in endheaders
self._send_output()
File "/usr/lib64/python2.6/httplib.py", line 780, in _send_output
self.send(msg)
File "/usr/lib64/python2.6/httplib.py", line 739, in send
self.connect()
File "/usr/lib64/python2.6/httplib.py", line 720, in connect
self.timeout)
File "/usr/lib64/python2.6/socket.py", line 567, in create_connection
raise error, msg
error: [Errno 111] Connection refused
[root@node1 cdrom]# service httpd start
Starting httpd: [ OK ]
7、開始導入光盤鏡像文件到本地,這裏要花費好長時間,因爲磁盤I/O讀寫壓力太大。
[root@node1 cdrom]# cobbler import --name=CentOS65 --path=/media/cdrom
task started: 2014-09-30_174204_import
task started (id=Media import, time=Tue Sep 30 17:42:04 2014)
導入完成, 可以通過/var/www/cobbler/ks_mirror這個目錄下找到與該路徑相同的目錄
通過cobbler distro list查看已經創建的distro
8、管理profile文件,並提供kickstart文件。
kickstart文件,本文中用修改過的/root/目錄下的anaconda.cfg配置文件
僅需要修改這裏,把url改到自己本機對應的提供的cobbler服務。
然後就是創建profile文件
[root@node1 ks_mirror]# cobbler distro list
CentOS65-x86_64
[root@node1 ks_mirror]# cobbler profile add --name=CenTos6.5-DIY --distro=CentOS65-x86_64 --kickstart=/root/anaconda-ks.cfg
可以通過cobbler profile list來查看
至此就可以通過cobbler工作來給其他新主機配置系統,演示如下:
表面成功安裝配置!
(ps:通過調整/var/lib/tftpboot/pxelinux.cfg/default裏面可以調整pxe菜單界面)
下面介紹一下cobbler_web的應用,就是讓cobbler通過web接口提供對新主機的操作系統安裝。這裏cobbler_web是需要認證的。本次演示使用的是authn_pam的方式、
1、先創建用戶
[root@node1 ~]# useradd cbadmin || echo 'cbadmin123' | passwd --stdin cbadmin
useradd: user 'cbadmin' already exists
Changing password for user cbadmin.
passwd: all authentication tokens updated successfully.
2、編輯/etc/cobbler/users.conf文件,裏面編輯
這裏添加你曾經添加的用戶名。
3、修改/etc/cobbler/module.conf文件,裏面編輯
3、重新啓動cobbler服務和重啓http服務
[root@node1 ~]# service cobblerd restart && service httpd restart
Stopping cobbler daemon: [ OK ]
Starting cobbler daemon: [ OK ]
Stopping httpd: [FAILED]
Starting httpd: [ OK ]
[root@node1 ~]#
4.效果:
需要pam認證
漂亮的網頁界面。