Cobbler概述:

  Cobbler可以用来快速建立 Linux 网络安装环境,它已将 Linux 网络安装的技术门槛,从大专以上文化水平,成功降低到初中以下,连补鞋匠都能学会。

  在生产环境中,经常批量部署几十甚至上百台服务器时,实现自动化安装操作系统尤为重要,按照传统的光盘引导安装工作量是不可预估的;此前我们通过pxe+kickstart简单实现了自动化安装,但只能实现单一版本安装,当需要部署不同版本或不同引导模式(BIOS、EFI)时,此种方式就不够灵活。而Cobbler正是为了解决此问题而设计的。

  经过以上概述我了解到Cobbler操作使用没有想象中那么困难,接下来我们对Cobbler应用进行剖析如下:



Cobbler简介:

  Cobbler是一个免费开源系统安装部署软件,用于自动化网络安装操作系统。Cobbler 集成了 DNS, DHCP, 软件包更新,带外管理以及配置管理,方便操作系统安装自动化。Cobbler 可以支持PXE启动, 操作系统重新安装,以及虚拟化客户机创建,包括Xen, KVM or VMware. Cobbler透过koan程序以支持虚拟化客户机安装。Cobbler可以支持管理复杂网路环境,如建立在链路聚合以太网的桥接环境。


Cobbler组件架构如下:

自动化运维之Cobbler自动化部署安装操作系统_第1张图片

Cobbler服务集成以下:

*1* PXE服务

*2* DHCP服务管理

*3* TFTP服务管理

*4* Rsync服务(系统镜像可导入发行版镜像,也可以从互联网中通过rsync工具导入)

*5* HTTP服务管理

*6* DNS服务管理

*7* Kickstart服务

*8* IPMI电源管理


Cobbler设计模式:

*1* 发行版(distro) : 表示一个操作系统。它承载了内核和initrd的信息,以及内核参数等其他数据。

*2* 存储库(repository) : 保存一个yum或rsync存储库镜像信息。

*3* 配置文件(profile) : 包含一个发行版(distro)、一个kickstart文件以及可能的存储库(repository)
还包含更多特定的内核参数及其他数据。

*4* 系统(system) : 表示要配给的机器,它包含一个配置文件或一个镜像,还包含IP和MAC地址、
电源管理(地址、凭据、类型)以及更专业的数据等信息。

*5* 镜像(p_w_picpath) : 可替换一个包含不属于此类别的文件发行版对象,(例如: 无法分为内核和initrd的对象)


Cobbler运行流程:

*1* DHCP服务分配IP地址

*2* Client(获取IP地址、Next_server IP地址)

*3* Next_server(获取启动内核、initrd等文件)

*4* tftp (PXE引导文件、启动Cobbler选择界面)

*5* kickstart (确定加载项,根据NFS,httpd,ftp等共享)


Cobbler Units 软件包:

* cobbler

* cobbler-web


Cobbler Units 配置:

*1* 安装cobbler,依据cobbler check检查结果,对settings主配置文件,进行相关修正设置;

*2* 启动依赖服务:httpd、cobbler服务,使用cobbler sync同步配置;

*3* 配置cobbler所依赖的服务:
    ** dhcp : ISC dhcpd dnsmasq(必需服务,选其中一种管理即可)
    ** dns : bind dnsmqsq(可选)
    ** rsync : rsync(必需服务)
    ** tftp : in.tftpd(tftp-server) cobbler自带的tftp(必需服务,选其中一种管理即可)
  
*4* 配置cobbler组件

针对步骤3:

(1)确定要使用的程序,选其中一种管理即可;

(2)确定要独立管理这些服务,还是由cobbler代为管理。

确定以上要求,配置安装过程如下:

(1)安装EPEL源

# wget http://dl.fedoraproject.org/pub/epel/6/x86_64/epel-release-6-8.noarch.rpm
# wget http://rpms.famillecollet.com/enterprise/remi-release-6.rpm 
# rpm -Uvh remi-release-6.rpm epel-release-6-8.noarch.rpm

(2)安装cobbler及相关依赖包

# yum -y install httpd dhcp tftp-server xinetd rsync
# yum -y groupinstall "Development Tools"
# yum -y install syslinux python-simplejson python-cheetah PyYAML Django openssl-devel genisop_w_picpath createrepo mod_wsgi mod_ssl
# yum -y install dnsmasq bind  --保证后期cobbler管理dns环境通过检测
# yum -y install cobbler cobbler-web

(3)配置启动httpd、cobbler等服务

# chkconfig --level 35 httpd on
# chkconfig --level 35 cobblerd on
# chkconfig --level 35 tftp on
# chkconfig --level 35 rsync on
# service xinetd start
# service httpd start
# service cobblerd start

检查服务监听端口:

wKioL1gG2DuTBauXAAAn4cNi2xc245.png


(4)Cobbler目录使用说明:

  配置文件目录:/etc/cobbler

    * * /etc/cobbler/settings : cobbler 主配置文件

    * * /etc/cobbler/iso/ : iso模板配置文件

    * * /etc/cobbler/pxe : pxe模板文件

    * * /etc/cobbler/power : 电源配置文件

    * * /etc/cobbler/users.conf : Web服务配置文件

    * * /etc/cobbler/users.digest : 用于web访问的用户名密码配置文件

    * * /etc/cobbler/dhcp.template : DHCP服务配置模板文件

    * * /etc/cobbler/dnsmasq.template : DNS服务配置模板文件

    * * /etc/cobbler/tftpd.template : tftp服务配置模板文件

    * * /etc/cobbler/modules.conf : Cobbler模块配置文件


  数据目录:/var/lib/cobbler

    * * /var/lib/cobbler/config : 用于存放distros systems profiles等信息配置文件

    * * /var/lib/cobbler/triggers : 用于存放用户自定义的cobbler命令

    * * /var/lib/cobbler/kickstarts : 默认存放kickstart文件

    * * /var/lib/cobbler/loaders : 存放各种引导程序


  镜像数据目录: /var/www/cobbler

    * * /var/www/cobbler/ks_mirror : 导入的发行版系统的所有数据

    * * /var/www/cobbler/p_w_picpaths : 导入发行版的kernel和initrd镜像用于远程网络启动

    * * /var/www/cobbler/repo_mirror/ :yum仓库存储目录


  日志目录:/var/log/cobbler

    * * /var/log/cobbler/install.log : 客户端系统安装日志

    * * /var/log/cobbler/cobbler.log : cobbler日志


Cobbler Commands(常用使用命令参数)

    * * Import

    * * Sync

    * * Reposync

    * * Build ISO (使用发行版、配置文件、制作出系统镜像)

    * * Command Line Search

    * * Replication

    * * Validata Kickstart

    * * ACL Setup

wKiom1gHGy2hu-OvAAA0hIgIbkg227.png


(5)检查配置Cobbler

自动化运维之Cobbler自动化部署安装操作系统_第2张图片

动态更新配置:

下面根据cobbler配置信息的检查结果,逐个修复相关问题项。从Cobbler 2.4开始,有一个重要的功能,就是让你不需要手工编辑配置setting配置文件,直接使用命令修改相关配置,默认这个功能是不启用,启用需要进行一下配置:

**建议采用修改/etc/cobbler/settings配置文件的方式修改配置选项。

**在采用命令方式动态更新配置时,Cobbler会将配置文件中带"#"注释的行全部删除

# cd /etc/cobbler/
# cp -af settings{,.default}
# sed -i '/^allow_dynamic_settings:/ s/0/1/' settings
# service cobblerd restart

解决问题项1和2,设置cobbler服务器地址

# cobbler setting edit --name=server --value=172.16.100.7
# cobbler setting edit --name=next_server --value=172.16.100.7

如果selinux未禁用,也会提示报错,解决方法如下:

# setenforce 0
# sed -i '/\(^SELINUX=\).*/ s//\1disabled/' /etc/selinux/config

解决问题项3,下载启动菜单(可以选择不修复,x86/x86_64平台上,如果本地有syslinux包的最新版本,直接拷贝引导所需文件即可)

---Cobbler引导文件目录为: /var/lib/cobbler/loaders
# cobbler get-loaders

PXE引导所需的引导文件:

--pxelinux.0、menu.c32、vesamenu.c32和memdisk四个文件有syslinux或者syslinux-nolinux RPM包提供

--其中menu.c32为文本模式背景,vesamenu.c32为图形模式背景

--memdisk文件,引导IMG映像,如果你要引导IMG/IMA的映像文件,必须加载此文件。

# rpm -qf /usr/share/syslinux/pxelinux.0 
syslinux-4.02-8.el6.x86_64
# for file in `rpm -ql syslinux-nolinux | grep -E '/(pxelinux.0|menu.c32|vesamenu.c32)'`;do cp -af $file /var/lib/cobbler/loaders;done

解决问题项4,配置rsync服务

# sed -i '/disable/ s/yes/no/' /etc/xinetd.d/rsync
# chkconfig rsync on

如果提示rsync文件不存在,可以不用理他,应该是程序bug,不影响cobbler使用

解决问题项5

# yum -y install debmirror
--安装debmirror包后,会衍生出一下错误提示,根据提示,注释选项即可
2 : comment out 'dists' on /etc/debmirror.conf for proper debian support
3 : comment out 'arches' on /etc/debmirror.conf for proper debian support

--处理如下:
# sed -i '/^@dists="sid";/ s/^/#/' /etc/debmirror.conf 
# sed -i '/^@arches="i386";/ s/^/#/' /etc/debmirror.conf

解决问题项6 安装ks文件验证支持包

# yum -y install pykickstart

解决问题项7,修改cobbler用户的默认密码

# openssl passwd -1 -salt `openssl rand -hex 4` 'redhat'
$1$fe4c277f$tbAmxXGSIA7cc/AXLsQVd.
# cobbler setting edit --name=default_password_crypted --value='$1$fe4c277f$tbAmxXGSIA7cc/AXLsQVd.'

解决问题项8,如果需要电源管理特性的话,则需要安装cman及fence-agents包

# yum -y install cman fence-agents

如果cobbler服务器启用防火墙功能,需要开启以下端口:

# iptables -A INPUT -m state --state NEW -m tcp -p tcp -m multiport --dports 80,443,25151 -j ACCEPT
# iptables -A INPUT -m state --state NEW -m udp -p udp -m multiport --dports 53,67:69,25151 -j ACCEPT


重启依赖服务,同步cobbler数据

# service httpd restart                                                
# service cobblerd restart                   
# cobbler sync

自动化运维之Cobbler自动化部署安装操作系统_第3张图片


配置cobbler依赖服务由cobbler进行管理:

--虽然cobbler可用于管理依赖的服务;

--默认情况下,若开机未将相关的服务设置成开启启动,即使cobblerd服务启动时,相关服务也是未启动状态。

--因此,需要确认dhcp、tftp、rsync等服务是否设置为开启自启动。

--tftp、rsync服务由xinetd管理

自动化运维之Cobbler自动化部署安装操作系统_第4张图片

--配置dhcp\dns由cobbler管理
# cobbler setting edit --name=manage_dhcp --value=1
# cobbler setting edit --name=manage_dns --value=1


防止误重装系统,选项:pxe_just_once

# cobbler setting edit --name=pxe_just_once --value=1

该选项作用:

--防止机器循环安装配置始终从网络引导

--激活此选项,机器回传Cobbler安装完成

--Cobbler将系统对象的netboot标志更改为false,强制要求机器从本地磁盘引导。


配置rsync、tftp服务,由cobbler管理,选项:manage_rsync、manage_tftp 、managed_tftpd

--默认情况下,Cobbler安装完成后,会自己去管理tftp服务,因manage_tftp和managed_tftpd的值默认为1

--要想让Cobbler来管理rsync、tftp服务,只要保证各自服务已安装,并设置为开机自启动即可。

--此外,需要保证xinetd服务为开机自启动状态,因rsync、tftp服务由xinetd服务统一管理。

# sed -i '/diable/ s/yes/no/' /etc/xinetd.d/rsync
# sed -i '/diable/ s/yes/no/' /etc/xinetd.d/tftp 
# chkconfig --level 35 xinetd on



配置dhcp服务,模板文件/etc/cobbler/dhcp.template 选项:manage_dhcp

--使用dnsmasq来管理dhcp、dns 会更方便。对应的,你需要安装dnsmasq RPM包;

--由dnsmasq来管理dhcp dns 服务时,需要修改modules.conf配置文件,指定module设置值为manage_dnsmasq.

--相关的模板配置文件为/etc/cobbler/dnsmasq.template.

自动化运维之Cobbler自动化部署安装操作系统_第5张图片

这里我们采用默认方式配置使用DHCP服务

自动化运维之Cobbler自动化部署安装操作系统_第6张图片

# chkconfig --level 35 dhcpd on


配置web管理认证:

添加、修改默认用户(cobbler)

# sed -i 's/^cobbler/admin/' /etc/cobbler/users.digest
# htdigest /etc/cobbler/users.digest 'Cobbler' admin
Changing password for user admin in realm Cobbler
New password: 
Re-type new password

重启Cobbler,同步cobbler数据:

# service cobblerd restart
# cobbler sync

自动化运维之Cobbler自动化部署安装操作系统_第7张图片

Web相关访问地址:

* http://172.16.100.7/cobbler_web
* http://172.16.100.7/cobbler


配置cobbler组件

* distro:可使用distro命令或者import导入发行版镜像

Cobbler上,distro可以有多个;同一个distor之上可定义同个profile,每个profile使用不同的kicstart文件。


挂载发行版镜像源

# mkdir -p /mnt/CentOS/6.5
# mount -o loop /root/CentOS-6.5-x86_64-bin-DVD1.iso /mnt/CentOS/6.5/


导入发行版镜像源

自动化运维之Cobbler自动化部署安装操作系统_第8张图片

# cobbler import --name=CentOS-6.5-x86_64 --path=/mnt/CentOS/6.5

自动化运维之Cobbler自动化部署安装操作系统_第9张图片


Cobbler Web导入后的镜像地址为:http://172.16.100.7/cobbler/ks_mirror/CentOS-6.5-x86_64/

自动化运维之Cobbler自动化部署安装操作系统_第10张图片


准备kisckstart文件

# vim /var/lib/cobbler/kickstarts/cetos6.x86_64.cfg
#platform=x86,AMD64, or Intel EM64T
#version=DEVEL
#Firewall configuration
firewall --disabled
# Install OS instead of upgrade
install
# Use network installation
url --url="http://172.16.100.7/cobbler/ks_mirror/CentOS-6.5-x86_64/"
# Root password
rootpw --iscrypted $1$redhat$9yxjZID8FYVlQzHGhasqW/
# System authrization information
auth --useshadow --passalgo=sha512
# Use text mode install
text
firstboot --disable
# System keyboard
keyboard us
# System language
lang en_US
# SELinux configuration
selinux --disabled
# Installation logging level
logging --level=info --host=172.16.0.1
# Reboot after installation
reboot
# System timezone
timezone Asia/Shanghai
# System bootloader configuration
bootloader --append="rhgb crashkernel=auto quiet" --location=mbr --driveorder="sda"
# Clear the Master Boot Record
zerombr
# Partition clearing information
clearpart --all
# Disk partitiong infomation
part /boot --fstype="ext4" --size=200
part pv.008 --size=61440

volgroup vg0 --pesize=8192 pv.008
logvol / --fstype=ext4 --name=root --vgname=vg0 --size=20480
logvol swap --name=swap --vgname=vg0 --size=2048
logvol /usr --fstype=ext4 --name=usr --vgname=vg0 --size=10240
logvol /var --fstype=ext4 --name=var --vgname=vg0 --size=20480

repo --name="local repo" --baseurl=http://172.16.100.7/cobbler/ks_mirror/CentOS-6.5-x86_64/ --cost=1000

%post
echo -e 'Samlee LTD Services\n http://gzsamlee.blog.51cto.com\n' >> /etc/issue

sed -i '1,$s@id:[0-9]:initdefault:@id3:initdefault:@g' /etc/inittab

[ ! -d /root/.ssh ] && mkdir /root/.ssh && chmod og=--- /root/.ssh

%end

%packages
@base
@basic-desktop
@client-mgmt-tools
@core
@desktop-platform
@fonts
@general-desktop
@graphical-admin-tools
@legacy-x
@network-file-system-client
@perl-runtime
@remote-desktop-clients
@x11
lftp

%end


添加profile

# cobbler profile add --name=CentOS-6.5-basic --distro=CentOS-6.5-x86_64 --kickstart=/var/lib/cobbler/kickstarts/cetos6.x86_64.cfg
# cobbler profile list


配置本地yum仓库

#配置本地yum仓库
# mkdir /tmp/rpms
# createrepo /tmp/rpms  #放入rpm包,执行此步骤
# cobbler repo add --mirror=/tmp/rpms --name=local
# cobbler reposync
#配置本地epel仓库
# cobbler repo add --mirror=http://mirrors.aliyun.com/epel/6/x86_64/ --name=epel
# cobbler reposync --tries=3 --no-fail  #同步epel仓库到本地,需要较长时间
#查看已添加的repo
# cobbler repo list
epel
local
#添加repo到profile
# cobbler profile edit --name==CentOS-6.5-basic --repos="epel local"
# cobbler sync


客户端安装测试如下:

自动化运维之Cobbler自动化部署安装操作系统_第11张图片

自动化运维之Cobbler自动化部署安装操作系统_第12张图片


客户端验证,可以看到生成了一个repo文件,指向cobbler服务器

# cat /etc/yum.repos.d/cobbler-config.repo 
[core-0]
name=core-0
baseurl=http://172.16.100.7/cobbler/ks_mirror/CentOS-6.5-x86_64/
enabled=1
gpgcheck=0
priority=1
 
[local]
name=local
baseurl=http://172.16.100.7/cobbler/repo_mirror/local
enabled=1
priority=99
gpgcheck=0


web管理访问:

自动化运维之Cobbler自动化部署安装操作系统_第13张图片

自动化运维之Cobbler自动化部署安装操作系统_第14张图片

自动化运维之Cobbler自动化部署安装操作系统_第15张图片

0