【51CTO独家特稿】SA们现在都知道运维自动化的重要性,尤其是对于在服务器数量按几百台、几千台增加的公司而言,单单是装系统,如果不通过自动化来完成,根本是不可想象的。

运维自动化安装方面,早期一般使用人工配置pxe+dhcp+tftp配合kickstart,现在开源工具就多了,如cobbler,OpenQRM和Spacewalk。本文重点介绍Cobbler。

Cobbler介绍

Cobbler是一个快速网络安装linux的服务,而且在经过调整也可以支持网络安装windows。该工具使用python开发,小巧轻便(才15k行代码),使用简单的命令即可完成PXE网络安装环境的配置,同时还可以管理DHCP,DNS,以及yum包镜像。

Cobbler支持命令行管理,web界面管理,还提供了API接口,可以方便二次开发使用。

wKioL1WKRkWyU-IQAAB4uW0sLH0486.jpg


和Kickstart不同的是,使用cobbler不会因为在局域网中启动了dhcp而导致有些机器因为默认从pxe启动在重启服务器后加载tftp内容导致启动终止。

常用架构如下图:

wKiom1WKRKOgHuEIAAEMsUoB8Ww214.jpg

cobbler的安装部署配置

cobbler安装环境准备

对于centos本身源 ,可根据自己所在地选择离自己近的镜像源,比如mirrors.163.com或mirrors.sohu.com

1, 安装epel

rpm -Uvh 'http://download.fedoraproject.org/pub/epel/6/i386/epel-release-6-5.noarch.rpm'

2, 安装dhcp服务

yum -y install dhcp

3, 其他服务的安装

额外需要的服务还有tftp,rsync,xinetd,httpd。所以如果安装系统的时候如果这几个包没装上,请手动安装。

4,关闭selinux

关闭后最好重启一下,让selinux的设置生效

cobbler安装配置

1, cobbler安装

yum -y install cobbler

2, cobbler的配置

启动cobbler

# /etc/init.d/cobblerd start

启动httpd服务

# /etc/init.d/httpd start

检查配置,执行

cobbler check

执行完后出现下面的信息

The following are potential configuration items that you may want to fix:
 
 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.
 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 : you need to set some SELinux content rules to ensure cobbler works correctly in your SELinux environment, run the following:
      /usr/sbin/semanage fcontext -a -t public_content_t "/tftpboot/.*" && \
      /usr/sbin/semanage fcontext -a -t public_content_t "/var/www/cobbler/p_w_picpaths/.*"
 4 : 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.
 5 : change 'disable' to 'no' in /etc/xinetd.d/tftp
 6 : change 'disable' to 'no' in /etc/xinetd.d/rsync
 7 : since iptables may be running, ensure 69, 80, and 25151 are unblocked
 8 : debmirror package is not installed, it will be required to manage debian deployments and repositories
 9 : 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
 
 Restart cobblerd and then run 'cobbler sync' to apply changes.

上面这段信息大意就是:

1,编辑/etc/cobbler/settings文件,找到 server选项,修改为适当的ip地址,本实例配置ip为:192.168.10.1

2,编辑/etc/cobbler/settings文件,找到 next_server选项,修改为适当的ip地址,本实例配置ip为:192.168.10.1

3,SELinux的设置。如果上面已经关闭了SELinux就不用管了

4,执行 cobbler get-loaders,系统将自动下载loader程序,完成提示4的修复工作。

5,编辑/etc/xinetd.d/tftp文件,将文件中的disable字段的配置由yes改为no

6,编辑/etc/xinetd.d/rsync文件,将文件中的disable字段的配置由yes改为no

7,在iptables中将69,80,25151端口打开。如果仅仅只是在内部环境中使用,建议直接将防火墙关掉

8,提示说debmirror没安装。如果不是安装 debian之类的系统,此提示可以忽略,如果需要安装,下载地址为:

http://rpmfind.net/linux/rpm2html/search.php?query=debmirror

CentOS 6使用RHEL 5的包就可以。

9,修改cobbler用户的默认密码,可以使用如下命令生成密码,并使用生成后的密码替换/etc/cobbler/settings中的密码。生成密码命令:

openssl passwd -1 -salt 'random-phrase-here' 'your-password-here'

其中“random-phrase-here”为干扰码

所有提示全部fix之后,执行

/etc/init.d/cobblerd restart

cobbler的使用

导入安装文件

执行如下命令

cobbler import --path=rsync://mirrors.163.com/centos/6.0/os/i386/ --name=centos-6.0-i386
task started: 2011-08-12_143009_import
task started (id=Media import, time=Fri Aug 12 14:30:09 2011)
running: rsync -a  'rsync://10.4.8.1/centos/6.0/os/i386/' /var/www/cobbler/ks_mirror/centos-6.0-i386 --exclude-from=/etc/cobbler/rsync.exclude --progress
received on stdout: receiving file list ... 
4555 files to consider
中间部分省略……………………
sent 100341 bytes  received 4633547466 bytes  8784166.46 bytes/sec
total size is 4632564894  speedup is 1.00

received on stderr: 
adding distros
scanning /var/www/cobbler/ks_mirror/centos-6.0-i386/p_w_picpaths/pxeboot for distro signature
scanning /var/www/cobbler/ks_mirror/centos-6.0-i386/p_w_picpaths for distro signature
scanning /var/www/cobbler/ks_mirror/centos-6.0-i386 for distro signature
found content (breed=redhat) at /v
creating new distro: centos-6.0-i386
creating new profile: centos-6.0-i386
associating repos
traversing distro centos-6.0-i386
scanning /var/www/cobbler/ks_mirror/centos-6.0-i386/p_w_picpaths/pxeboot for distro signature
scanning /var/www/cobbler/ks_mirror/centos-6.0-i386/p_w_picpaths for distro signature
scanning /var/www/cobbler/ks_mirror/centos-6.0-i386 for distro signature
found content (breed=redhat) at /v
descent into /var/www/cobbler/ks_mirror/centos-6.0-i386
processing repo at : /var/www/cobbler/ks_mirror/centos-6.0-i386
need to process repo/comps: /var/www/cobbler/ks_mirror/centos-6.0-i386
looking for /var/www/cobbler/ks_mirror/centos-6.0-i386/repodata/*comps*.xml
running: createrepo -c cache -s sha --groupfile /var/www/cobbler/ks_mirror/centos-6.0-i386/repodata/73a3b7e0741eba6cafa8d5404b02565060e7f2293caab10657074186c48e713b-c6-i386-comps.xml /var/www/cobbler/ks_mirror/centos-6.0-i386
1278/4519 - Packages/clutter-1.0.6-3.el6.i686.rpm                               
iso-8859-1 encoding on Ville Skytt <ville.skytta@iki.fi> - 2.8.2-2

4519/4519 - Packages/xorg-x11-twm-1.0.3-5.1.el6.i686.rpm                        
Saving Primary metadata
Saving file lists metadata
Saving other metadata

received on stderr: 
associating kickstarts
scanning /var/www/cobbler/ks_mirror/centos-6.0-i386/p_w_picpaths/pxeboot for distro signature
scanning /var/www/cobbler/ks_mirror/centos-6.0-i386/p_w_picpaths for distro signature
scanning /var/www/cobbler/ks_mirror/centos-6.0-i386 for distro signature
found content (breed=redhat) at /v
*** TASK COMPLETE ***