Cobbler自动化运维工具

Cobbler其实就是一个相对来说复杂一点PXE。而且Cobbler就是基于PXE,上面再包装了一层管理工具。PXE我之前写过一篇讲过其理论和实现,如果有想对Cobbler有深入的了解却对PXE一窍不通童鞋可以点击PXE传送门

现在我说的都东西都是基于对PXE很了解的童鞋。所以对PXE不了解的话,还是点击PXE传送门去了解了解PXE的理论知识。

一、简介

1.1 Cobbler简介

对比的PXE的单个系统单个模式,Cobbler可以支持同时部署多个不同的发行版本,比如CentOS,比如RHEL,甚至于Suse,Ubuntu,Freebsd等甚至Windows都能实现。当然因为Kickstart是RedHat推出的技术,所以对非RedHat系的系统来说,使用PXE或者Cobbler安装不是一个很简单的事情,至少对比正常RedHat系系统部署要麻烦且容易出错的多。

像下面这幅图就是上面的情况的真实写照,DHCP,TFTP,HTTP只作为公共服务使用,而Cobbler会提供安装菜单,各安装菜单所对应的具体的安装文件都不同。

从上面那副图已经可以引出Cobbler的实际结构了,为了应付不同的场景,Cobbler其实有很多层,其中最主要的两层也是我们绝多大多数情况下只会配置到的两层。

Distros:定义不同的发行版的kernel和init

Profiles: 定义同一个发行版不同的配置

1.2 什么是kickstarts

其实这个东西应该放在PXE那篇里面讲的,但是当时没注意,没说。现在说说Kickstarts是什么吧。

Kickstart是一种无人值守的安装方式,说白了就是一个后缀为cfg的文件。大家在root目录下应该都看到过anaconda-ks.cfg这个文件,其实这个文件就纪录了当前系统的安装过程所选择的各个环境以及其他有关安装的内容。部署的时候安装程序可以根据这个cfg文件中的参数决定安装哪些应用程序,关闭或者启用某些服务。分区等等。

二、安装

2.1 环境

2.2 安装

Cobbler由epel源提供,我这里给出的epel源为CentOS 6 epel源,如果不能安装,请自行更换源

# rpm -Uvh http://mirrors.ustc.edu.cn/fedora/epel/6/x86_64/epel-release-6-8.noarch.rpm
# yum install cobbler cobbler-web pykickstart debmirror http dhcp tftp
//因为在核心服务的提供上,Cobbler各个版本大同小异,所以就不说版本的问题了
# ls /etc/cobbler/
/etc/cobbler/settings             //主配置
/etc/cobbler/modules.conf         //模块配置,模块启用与否在主配置设定
coobler_web.conf                  //cobbler自己的web配置
users.digest                      //coobler web 认证库 使用命令htdigest配置
....

# service httpd start
# service cobblerd start
# cobbler check   //如果SELinux没有关闭,这个检查只会报错,不会有其他的反应,当然你也可以调试SELinux
//我直接就将英文的提示换成了中文,下面的中文并不是我翻译的
1、修改/etc/cobbler/settings文件中的server参数的值为提供cobbler服务的主机相应的IP地址或主机名,如192.168.100.101;
2、修改/etc/cobbler/settings文件中的next_server参数的值为提供PXE服务的主机相应的IP地址,如192.168.100.101;
3、如果当前节点可以访问互联网,执行“cobbler get-loaders”命令即可;否则,需要安装syslinux程序包,而后复制/usr/share/syslinux/{pxelinux.0,memu.c32}等文件至/var/lib/cobbler/loaders/目录中;
4、执行“chkconfig rsync on”命令即可;
5、注释/etc/debmirror.conf文件中的“@dists="sid";”一行;
6、注释/etc/debmirror.conf文件中的“@arches="i386";”一行;
7、执行“openssl passwd -1 -salt $(openssl rand -hex 4)”生成密码,并用其替换/etc/cobbler/settings文件中default_password_crypted参数的值;
8、执行“yum install cman fence-agents”命令安装相应的程序包即可;

接着重启cobblerd,而后执行“cobbler sync”同步新的配置至cobbler。
//将上面的步骤完成,我们就需要配置其他的服务
# grep -v "^#" /etc/dhcp/dhcpd.conf  | uniq 

option domain-name "itcys.org";
option domain-name-servers 192.168.100.101;

default-lease-time 600;
max-lease-time 7200;

log-facility local7;

subnet 192.168.100.0 netmask 255.255.255.0 {   
  range 192.168.100.120 192.168.100.140;   //地址池
  option routers 192.168.100.1;            
}

next-server 192.168.100.101;               //指向Cobbler
filename="pxelinux.0";                     //必须项

//启动TFTP服务
# chkconfig xinetd on
# chkconfig tftp on
# service xinetd start

# service httpd start

2.3 部署

挂载上CentOS-6.7-x86-64.iso光盘

# mount /dev/sr0 /media
# cobbler import --name=centos-6.7-x86_64 --path=/media
//import是通过光盘或者本地文件部署distro的方式,还有其他的方式,不过没什么用
*** TASK COMPLETE ***    //出现这个为部署成功
!!! TASK FAILED !!!      //这个为部署失败
//Redhat系列系统部署没看到过失败的情况,但是其他系列。。
# cobbler sync
# cobbler distro list
   centos-6.7-x86_64
//可以查看一下菜单文件
# cat /var/lib/tftpboot/pxelinux.cfg/default 
DEFAULT menu
PROMPT 0
MENU TITLE Cobbler | http://cobbler.github.io
TIMEOUT 200
TOTALTIMEOUT 6000
ONTIMEOUT local

LABEL local
        MENU LABEL (local)
        MENU DEFAULT
        LOCALBOOT -1

LABEL centos-6.7-x86_64
        kernel /images/centos-6.7-x86_64/vmlinuz
        MENU LABEL centos-6.7-x86_64
        append initrd=/images/centos-6.7-x86_64/initrd.img ksdevice=bootif lang=  kssendmac text  ks=http://192.168.100.101/cblr/svc/op/ks/profile/centos-6.7-x86_64
        ipappend 2



MENU end

可以打开上面给出的ks的路径

就是一个标准的cfg文件

部署的文件在这个位置:http://192.168.100.101/cobbler。这个地址可以在主配置文件中设置

2.4 检测

使用虚拟机的话,可以在设置里面将 Network Boot 排在最前面,也可以在 BIOS 里面设置PXE or Network Boot启动。

效果:

2.5 添加分支

PXE那一篇有一个cfg文件,可以下载过去修改修改。我就直接用的那个。

如果不会修改又确实是生产环境的话,可以装一台虚拟机,使用X Windows启动,然后安装system-config-kickstart,并运行system-config-kickstart,可以使用图形化工具设置。

# cobbler profile add --distro="centos-6.7-x86_64" --name="centos-6.7-x86_64-test"  --kickstart=/var/lib/cobbler/kickstarts/test.cfg 
# cobbler profile list
   centos-6.7-x86_64
   centos-6.7-x86_64-test
# cobbler sync

效果:

2.5 修改分支

//修改cfg文件
# cobbler profile edit --name="centos-6.7-x86_64" --distro="centos-6.7-x86_64"   --kickstart="/var/lib/cobbler/kickstarts/test.cfg"
# cobbler sync   
//这样这个profile的kickstarts就会被修改。

三、扩展

其实Cobbler到这里基本上就完全满足需求了,而且使用这种方式比使用模块方式还简单方便一点,不过对于很多人来说,GUI才是最美好的。所以我们就使用GUI试试

# htdigest -c /etc/cobbler/users.digest "Cobbler" itcys
Adding password for itcys in realm Cobbler.
New password: 
Re-type new password: 
# cat /etc/cobbler/users.digest 
itcys:Cobbler:fc303d033e01d0112fffdd3ecda8dbdd
3
# vim /etc/cobbler/modules.conf

[authentication]
module = authn_configfile    //使用users.digest文件认证的方式认证

# service cobblerd restart

进入了GUI界面。前面又讲了那么多,相信大家一看就会明白,如果看不明白的。也就是这篇博文没有说的,基本上都是很难用到的,大家基本上不用太过关注。好。基本上配置部署到这里也就差不多。之前有读者向我反映我的博文排版很烂,我在这篇就开始改。其实这个blog更多的是带给大家思路和理论知识,在部署方面反倒不是特别的关注。不过我也感觉出来排版确实有问题,所以就准备还是改改。