一、Cobbler简介

        Cobbler 是一个系统启动服务(boot server),可以通过网络启动(PXE)的方式用来快速安装、重装物理服务器和虚拟机,支持安装不同的 Linux 发行版和 Windows。该工具使用python开发,小巧轻便(才15k行代码),使用简单的命令即可完成PXE网络安装环境的配置,同时还可以管理DHCP,DNS,以及yum包镜像。

       Cobbler 使用命令行方式管理,也提供了基于 Web 的界面管理工具(cobbler-web),还提供了API接口,可以方便二次开发使用。

    即多安装树的pxe环境,是pxe的高级封装

二、Cobbler提供以下服务集成

1、PXE服务支持

2、DHCP服务管理

3、DNS服务管理(可选bind,dnsmasq)

4、电源管理

5、Kickstart服务支持

6、yum仓库管理

7、TFTP (PXE启动时需要)

8、Apache(提供kickstart 的安装源,并提供定制化的kickstart配置)

       同时,它和apache做了深度整合。通过 cobbler,可以实现对RedHat/Centos/Fedora系统的快速部署,同时也支持Suse 和Debian(Ubuntu)系统,通过配置也支持windows。

三、cobbler的组织结构

Cobbler详解_第1张图片

profile:是核心,由以下三个组件组成

repositories(安装树或安装源),

         mirror:镜像 指向网络中的安装源

         import:导入

distribution (vmlinuz(内核)+initrd.img(引导映像文件))

          cobbler会自动从reporitories抽取出来生成

kickstart file组成的完完整整的系统发行版

      cobbler装机系统是较早前pxe的升级版,优点比较容易配置,还自带web界面比较易于管理,不足在于中文资料较少。和pxe不同的是,使用cobbler不会因为在局域网中启动了dhcp而导致有些机器因为默认从pxe启动在重启服务器后加载tftp内容导致启动终止。

       通过配置cobbler自动部署DHCP、TFTP、HTTP,在安装过程中加载kiskstart无人值守安装应答文件实现无人值守。从客户端使用PXE引导启动安装。

常用架构如下图:

Cobbler详解_第2张图片

四、Cobbler的工作流程

Cobbler工作流程:

Cobbler详解_第3张图片

下面我们来简单的说明一下,

Server端:

  • 第一步,启动Cobbler服务

  • 第二步,进行Cobbler错误检查,执行cobbler check命令

  • 第三步,进行配置同步,执行cobbler sync命令

  • 第四步,复制相关启动文件文件到TFTP目录中

  • 第五步,启动DHCP服务,提供地址分配

  • 第六步,DHCP服务分配IP地址

  • 第七步,TFTP传输启动文件

  • 第八步,Server端接收安装信息

  • 第九步,Server端发送ISO镜像与Kickstart文件

Client端:

  • 第一步,客户端以PXE模式启动

  • 第二步,客户端获取IP地址

  • 第三步,通过TFTP服务器获取启动文件

  • 第四步,进入Cobbler安装选择界面

  • 第五步,客户端确定加载信息

  • 第六步,根据配置信息准备安装系统

  • 第七步,加载Kickstart文件

  • 第八步,传输系统安装的其它文件

  • 第九步,进行安装系统

五、Kickstart 概述

    kickstart配置文件详解

六、cobbler安装

1、环境

 1)cobbler服务器和客户机IP

Cobbler服务器系统:CentOS6.5-x86_64

IP地址:192.168.200.1

需要安装部署的Linux系统的客户机IP地址段:192.168.200.21-192.168.200.100

子网掩码:255.255.255.0

网关:192.168.200.1

DNS:114.114.114.114

所有服务器均支持PXE网络启动

实现目的:通过配置Cobbler服务器,全自动批量安装部署Linux系统

 2)关闭防火墙与SELinux

[root@localhost ~]# service iptables stop
iptables: Setting chains to policy ACCEPT: filter          [  OK  ]
iptables: Flushing firewall rules:                         [  OK  ]
iptables: Unloading modules:                               [  OK  ]
[root@localhost ~]# chkconfig iptables off
[root@localhost ~]# setenforce 0
[root@localhost ~]# sed -i '/SELINUX/s/enforcing/disabled/' /etc/selinux/config

 3)yum源配置

mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.BAK
wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-6.repo
wget -O /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-6.repo
 yum clean all ; yum makecache all

 4)同步系统时间

[root@node2 ~]# yum install -y ntp
[root@localhost yum.repos.d]# ntpdate 202.120.2.101
 7 Sep 13:59:53 ntpdate[5475]: adjust time server 202.120.2.101 offset 0.169428 sec
[root@localhost yum.repos.d]# date
Mon Sep  7 13:59:56 CST 2015
[root@node2 ~]# hwclock -w

2、安装cobbler (epel源)

yum install dhcp tftp-server httpd syslinux cobbler cobbler-web pykickstart debmirror -y

七、配置cobbler

1、设置httpd服务

[root@node2 ~]# vim /etc/httpd/conf/httpd.conf
ServerName localhost:80
[root@node2 ~]# service httpd start

2、配置tftp与rsync

        修改 rsync 和 tftp 这两个服务的 xinetd 配置,只需修改 rsync 和tftp的配置文件,在/etc/xinetd.d/目录下

将 disable = yes 修改为 disable = no来开启tftp与rsync服务的开机启动

也可以直接使用命令:

chkconfig tftp on
chkconfig rsync on

再启动xinetd服务:

service xinetd start

3、 配置Cobbler主配置文件

在启动Cobbler服务之前,你需要修改一些配置文件。在修改每一个文件之前最好先备份下当前的文件。

Cobblerd的配置文件为/etc/cobbler/settings ,这个文件是YAML信息的格式文件

根据需要修改 cobbler主配置文件: /etc/cobbler/settings

①Server 和 Next_Server

server 选项用于为cobbler 服务器指定ip地址,请不要使用0.0.0.0,设置一个你希望和cobbler服务器通过http和tftp等协议链接的IP。

# sed -i 's/server: 127.0.0.1/server: 192.168.200.1/g' /etc/cobbler/settings

next_server选项是DHCP/PXE网络引导文件被下载的TFTP服务器的IP,在本例中它将和server设置为同一个IP

# sed -i 's/next_server: 127.0.0.1/next_server: 192.168.200.1/g' /etc/cobbler/settings

②防止误重装系统

pxe安装只允许一次,防止误操作 ( 在正式环境有用。实际测试来看,这个功能可以屏蔽掉 )

# sed -i 's/pxe_just_once: 0/pxe_just_once: 1/g' /etc/cobbler/settings

③、生成Cobbler安装系统root初始密码

(1)这里生成密钥和配置默认密钥。这个设置只针对centos有效。用 openssl 生成一串密码后加入到 cobbler 的配置文件(/etc/cobbler/settings)里,替换 default_password_crypted 字段

[root@localhost cobbler]# openssl passwd -1 -salt '123abc' 'www.magedu.com' 
$1$123abc$5tYLxoUm1wOxOeGQZI7Lo.

openssl passwd -1 -salt  ‘随机字符’  ‘密码’  (是数字1 不是字母L)

这个命令的用法,随机字符可以随便写,这个密码就是安装完系统root的密码了。

(2) 将上面的加密串加入cobbler配置文件中。

# vi /etc/cobbler/settings

# 修改为如下配置(第101行)

default_password_crypted: "$1$123abc$5tYLxoUm1wOxOeGQZI7Lo."

④、Cobbler管理rsync

默认为0,不对rsync进行管理,可以修改为1 进行管理

# sed -i 's/manage_rsync: 0/manage_rsync: 1/g' /etc/cobbler/settings

⑤. Cobbler管理dhcp

为了pxe的启动,需要一个DHCP服务器地址,并直接引导系统,它可以在网络中下载引导文件到TFTP的服务器,cobbler可以通过manage_dhcp的设置来进行管理

配置dhcp服务

首先修改cobbler配置,让cobbler来管理dhcp服务,在做自定义配置时,需要修改dhcp相关配置,以配合PXE启动用,编辑文件/etc/cobbler/settings

manage_dhcp: 1 (注:默认为0 ,表示不进行管理dhcp服务,可以修改为1,对其进行管理。此为使cobbler管理dhcp也就是后面用于同步更新配置信息[cobbler sync])

也可用命令修改:

# sed -i 's/manage_dhcp: 0/manage_dhcp: 1/g' /etc/cobbler/settings

# grep '^manage_dhcp' /etc/cobbler/settings

4、修改cobbler管理DHCP的模板

/etc/cobbler/dhcp.template,此文件是cobbler管理dhcp的模板,确保DHCP分配的地址和Cobbler在同一网段

对于此文件,本例中只需要修改如下部分

# 需要修改192.168.1.0为自己网段

[root@node2 ~]# vim /etc/cobbler/dhcp.template
subnet 192.168.100.0 netmask 255.255.255.0 {
option routers 192.168.100.1;
option domain-name-servers 8.8.8.8;
option subnet-mask 255.255.255.0;
range dynamic-bootp 192.168.100.100 192.168.18.200;
default-lease-time 21600;
max-lease-time 43200;
next-server $next_server;

其余部分维持默认值即可。

如果是多网卡需要指定DHCP服务的网络接口

#vi /etc/sysconfig/dhcpd

修改内容如下:

#Command line options here DHCPDARGS=eth0

DHCPDARGS=eth0

# 测试dhcp服务器配置是否正确

# dhcpd            # 在执行cobbler sync 之后测试才有效,因为没同步之前文件/etc/dhcp/dhcpd.conf还没有被同步修改

5、设置debmirror

注释掉@dists和@arches的行

sed -i -e 's|@dists=.*|#@dists=|'  /etc/debmirror.conf

sed -i -e 's|@arches=.*|#@arches=|'  /etc/debmirror.conf

修改配置完成后一定要运行cobbler sync 命令让配置生效,使dhcp、http被cobbler接管,不然会报错。

八、Cobbler 子命令介绍并启动cobbler

1、cobbler子命令介绍

-------------------------------------------------------------------------------------------

cobbler check          #检查cobbler配置           主要用于检查cobbler配置是否有错

cobbler sync            #同步配置到dhcp pxe和数据目录        更改某些配置后记得执行一下,同步一下配置。

cobbler list              #列出所有的cobbler元素

cobbler import          #导入安装的系统光盘镜像

cobbler report          #列出各元素的详细信息

cobbler distro          #查看导入的发行版系统信息      不但可以查看导入的发行版系统信息还可以增加与修改等

cobbler profile         #查看配置信息                          不但可以查看Kickstart文件而且还可以编辑与删除此文件

cobbler system         #查看添加的系统信息

cobbler reposync       #同步yum仓库到本地               同步远程的yum源到本地

cobbler signature update

cobbler --help           #获得cobbler的帮助 

cobbler distro --help  #获得cobbler子命令的帮助

[root@localhost ~]# cobbler --help
usage
=====
cobbler  ... 
        [add|edit|copy|getks*|list|remove|rename|report] [options|--help]
cobbler  [options|--help]
[root@localhost ~]# cobbler list --help
Usage: cobbler [options]

Options:
  -h, --help  show this help message and exit
[root@localhost cobbler]# cobbler profile --help
usage
=====
cobbler profile add
cobbler profile copy
cobbler profile dumpvars
cobbler profile edit
cobbler profile find
cobbler profile getks
cobbler profile list
cobbler profile remove
cobbler profile rename
cobbler profile report
[root@localhost cobbler]# cobbler profile add --help
Usage: cobbler [options]

Options:
  -h, --help            show this help message and exit
  --name=NAME           Name (Ex: F10-i386-webserver)
  --uid=UID             
  --owners=OWNERS       Owners (Owners list for authz_ownership (space
                        delimited))
  --distro=DISTRO       Distribution (Parent distribution)
  --parent=PARENT       Parent Profile
  --enable-gpxe=ENABLE_GPXE
                        Enable gPXE? (Use gPXE instead of PXELINUX for
                        advanced booting options)
  --enable-menu=ENABLE_MENU
                        Enable PXE Menu? (Show this profile in the PXE menu?)
  --kickstart=KICKSTART
                        Kickstart (Path to kickstart template)
  --kopts=KERNEL_OPTIONS
                        Kernel Options (Ex: selinux=permissive)
  --kopts-post=KERNEL_OPTIONS_POST
                        Kernel Options (Post Install) (Ex: clocksource=pit
                        noapic)
  --ksmeta=KS_META      Kickstart Metadata (Ex: dog=fang agent=86)
  --proxy=PROXY         Internal proxy (Internal proxy URL)
  --repos=REPOS         Repos (Repos to auto-assign to this profile)
  --comment=COMMENT     Comment (Free form text description)
  --virt-auto-boot=VIRT_AUTO_BOOT
                        Virt Auto Boot (Auto boot this VM?)
  --virt-cpus=VIRT_CPUS
                        Virt CPUs (integer)
  --virt-file-size=VIRT_FILE_SIZE
                        Virt File Size(GB)
  --virt-disk-driver=VIRT_DISK_DRIVER
                        Virt Disk Driver Type (The on-disk format for the
                        virtualization disk)
  --virt-ram=VIRT_RAM   Virt RAM (MB)
  --depth=DEPTH         
  --virt-type=VIRT_TYPE
                        Virt Type (Virtualization technology to use) (valid
                        options: xenpv,xenfv,qemu,kvm,vmware,openvz,SETTINGS:d
                        efault_virt_type)
  --virt-path=VIRT_PATH
                        Virt Path (Ex: /directory OR VolGroup00)
  --virt-bridge=VIRT_BRIDGE
                        Virt Bridge
  --dhcp-tag=DHCP_TAG   DHCP Tag (See manpage or leave blank)
  --server=SERVER       Server Override (See manpage or leave blank)
  --ctime=CTIME         
  --mtime=MTIME         
  --name-servers=NAME_SERVERS
                        Name Servers (space delimited)
  --name-servers-search=NAME_SERVERS_SEARCH
                        Name Servers Search Path (space delimited)
  --mgmt-classes=MGMT_CLASSES
                        Management Classes (For external configuration
                        management)
  --mgmt-parameters=MGMT_PARAMETERS
                        Management Parameters (Parameters which will be handed
                        to your management application (Must be valid YAML
                        dictionary))
  --boot-files=BOOT_FILES
                        TFTP Boot Files (Files copied into tftpboot beyond the
                        kernel/initrd)
  --fetchable-files=FETCHABLE_FILES
                        Fetchable Files (Templates for tftp or wget/curl)
  --template-files=TEMPLATE_FILES
                        Template Files (File mappings for built-in config
                        management)
  --redhat-management-key=REDHAT_MANAGEMENT_KEY
                        Red Hat Management Key (Registration key for RHN,
                        Spacewalk, or Satellite)
  --redhat-management-server=REDHAT_MANAGEMENT_SERVER
                        Red Hat Management Server (Address of Spacewalk or
                        Satellite Server)
  --template-remote-kickstarts=TEMPLATE_REMOTE_KICKSTARTS
  --clobber             allow add to overwrite existing objects
  --in-place            edit items in kopts or ksmeta without clearing the
                        other items

2、启动相关服务并设置开机启动

cobbler sync

chkconfig cobblerd on

chkconfig dhcpd on

chkconfig httpd on 

chkconfig xinetd on 

chkconfig tftp on

chkconfig rsync on

/etc/init.d/xinetd restart

/etc/init.d/dhcpd restart

/etc/init.d/httpd restart        #这里如果提示启动失败,先cobbler sync同步一下配置就可以了

启动cobbler并运行Cobbler检查命令

[root@localhost ~]# service cobblerd start
[root@localhost ~]# cobbler get-loaders            #清除一些无关的报错
[root@localhost ~]# cobbler check
No configuration problems found.  All systems go.    #没有报错

九、Cobbler的使用

1、导入要安装的镜像文件

①、挂载镜像

[root@localhost ~]# mount /dev/cdrom /mnt
mount: block device /dev/sr0 is write-protected, mounting read-only
[root@localhost ~]# ls /mnt
CentOS_BuildTag  isolinux                  RPM-GPG-KEY-CentOS-Debug-6
EFI              Packages                  RPM-GPG-KEY-CentOS-Security-6
EULA             RELEASE-NOTES-en-US.html  RPM-GPG-KEY-CentOS-Testing-6
GPL              repodata                  TRANS.TBL
p_w_picpaths           RPM-GPG-KEY-CentOS-6
[root@localhost ~]#

②、使用cobbler import命令导入镜像

     主要有以下几个参数--path 指定导入镜像的路径,--name 指定导入镜像的名称,--arch 指定导入镜像的架构(32位还是64位)。还有需要说明的是这里导入的时间相对较长大概在5-10分钟左右,请大家耐心等待。

下面是具体的导入过程:

[root@localhost ~]# cobbler import --path=/mnt --name=centos6.7 --arch=x86_64
task started: 2015-09-07_170439_import
task started (id=Media import, time=Mon Sep  7 17:04:39 2015)
Found a candidate signature: breed=redhat, version=rhel6
Found a matching signature: breed=redhat, version=rhel6
Adding distros from path /var/www/cobbler/ks_mirror/CentOS6.7-x86_64:
creating new distro: CentOS6.7-x86_64
trying symlink: /var/www/cobbler/ks_mirror/CentOS6.7-x86_64 -> /var/www/cobbler/links/CentOS6.7-x86_64
creating new profile: CentOS6.7-x86_64
associating repos
checking for rsync repo(s)
checking for rhn repo(s)
checking for yum repo(s)
starting descent into /var/www/cobbler/ks_mirror/CentOS6.7-x86_64 for CentOS6.7-x86_64
processing repo at : /var/www/cobbler/ks_mirror/CentOS6.7-x86_64
need to process repo/comps: /var/www/cobbler/ks_mirror/CentOS6.7-x86_64
looking for /var/www/cobbler/ks_mirror/CentOS6.7-x86_64/repodata/*comps*.xml
Keeping repodata as-is :/var/www/cobbler/ks_mirror/CentOS6.7-x86_64/repodata
*** TASK COMPLETE ***

注意1: 这个安装源的唯一标示就是根据--name和--arch这两个参数来定义

本例导入成功后,安装源的唯一标示就是:CentOS6.7-x86_64,如果重复,系统会提示导入失败,其它命令可通过cobbler –help来进行查看。如果需要更多的参数定制,也可以查看官方文档: man cobbler ,然后查找 import 的配置,可以使用另外一个命令: cobbler distro。

从上面显示信息所知:

cobbler会将镜像中的所有安装文件拷贝到本地一份,放在/var/www/cobbler/ks_mirrors下的centos6.7-x86_64目录下。同时会创建一个名字为centos6.7-x86_64的一个(distro)发布版本,以及一个名字为centos6.7-x86_64的profile文件。

注意2:/var/www/cobbler 目录必须具有足够容纳 Linux安装文件的空间。如果空间不够,可以对/var/www/cobbler目录进行移动,建软链接来修改文件存储位置。

例如:

# ln -s /home/cobbler /var/www

导入时间较长, 请耐心等待!!!在正常导完之后会给出如下提示:

*** TASK COMPLETE ***

有时可能会出现卡住的现象,如果导入时间过长,可通过比对文件大小来确定是否已经正常导入

比对文件大小的方法

# du -sh /var/www/cobbler/ks_mirror/CentOS-6.7-x86_64/

# du -sh /mnt

如果上述两个命令执行过显示的结果出入较大, 则可能文件没有正常导入

在重新导入之前最好先把之前的内容删除再导入

cobbler [distro] remove –name=[CentOS-6.7] 方括号中的内容根据自己的情况来填写 , 更多命令通过cobbler –help 来查看

剩下其它系统导入方法类似,只是名字和路径更改下即可。重复上面的操作,把其他的系统镜像文件导入到Cobbler导入完成之后,可通过 cobbler list 来查看导入的结果。

[root@localhost kickstarts]# cobbler list
distros:
   CentOS6.7-x86_64

profiles:
   CentOS6.7-x86_64

systems:

repos:

p_w_picpaths:

mgmtclasses:

packages:

files:
[root@localhost kickstarts]#

③. 创建kickstarts自动安装脚本(For Centos/RHEL)

注意:这是关键步骤之一

由于需要安装的操作系统发行厂商不同,因此KS文件的写法要求,也不一而足。

本文只讨论 CentOs/RHEL 系列的 KS配置

另外:操作系统 版本不同,KS也存在一定的差异,比如CentOS5 ,和CentOS6下就有不同,切记!

默认kickstart文件是/var/lib/cobbler/kickstarts/sample_end.ks,需要手动为每个发行版单独指定,或单独修改。

自定义ks文件:

   手动的修改已有的Kickstart文件

   用system-config-kickstart工具生成Kickstart文件

下面是我自己定义的一个centos6.6模板

# kickstart template for Fedora 8 and later.
# (includes %end blocks)
# do not use with earlier distros
#platform=x86, AMD64, or Intel EM64T
# System authorization information
auth --useshadow --enablemd5
# System bootloader configuration
bootloader --location=mbr
# Partition clearing information
clearpart --all --initlabel
# Use text mode install
text
# Firewall configuration
firewall --service=ssh
# Run the Setup Agent on first boot
firstboot --disable
# System keyboard
keyboard us
# System language
lang en_US
# Use network installation
url --url=$tree
# If any cobbler repo definitions were referenced in the kickstart profile, include them here.
$yum_repo_stanza
# Network information
$SNIPPET('network_config')
# Reboot after installation
reboot
#Root password
rootpw --iscrypted $default_password_crypted
# SELinux configuration
selinux --disabled
# Do not configure the X Window System
skipx
# System timezone
timezone --utc Asia/Shanghai
# Install OS instead of upgrade
install
# Clear the Master Boot Record
zerombr
# Allow anaconda to partition the system as needed
part /boot --fstype=ext4 --size=200
part / --fstype=ext4 --size=10000
part /data --fstype=ext4 --size=5000
part swap --size=1000
%pre
$SNIPPET('log_ks_pre')
$SNIPPET('kickstart_start')
$SNIPPET('pre_install_network_config')
# Enable installation monitoring
$SNIPPET('pre_anamon')
%end
%packages
@chinese-support
@development
$SNIPPET('func_install_if_enabled')
%end
%post
$SNIPPET('log_ks_post')
# Start yum configuration
$yum_config_stanza
# End yum configuration
$SNIPPET('post_install_kernel_options')
$SNIPPET('post_install_network_config')
$SNIPPET('func_register_if_enabled')
$SNIPPET('download_config_files')
$SNIPPET('koan_environment')
$SNIPPET('redhat_register')
$SNIPPET('cobbler_register')
# Enable post-install boot notification
$SNIPPET('post_anamon')
# Start final steps
$SNIPPET('kickstart_done')
# End final steps
%end

注意:kickstarts自动安装脚本中不允许有中文(注释有中文也不行),否则会报错

可以使用ksvalidator程序验证kickstart文件中是否有语法错误

# ksvalidator  ks.cfg 

④、修改profile指定新的KS启动文件

按照操作系统版本分别关联系统镜像文件和kickstart自动安装文件

在第一次导入系统镜像时,cobbler会给安装镜像指定一个默认的kickstart自动安装文件

例如:CentOS-6.7-x86_64版本的kickstart自动安装文件为:

/var/lib/cobbler/kickstarts/sample_end.ks


cobbler profile report --name CentOS-6.6-x86_64 #查看profile设置

cobbler distro report --name CentOS-6.6-x86_64  #查看安装镜像文件信息

 cobbler profile remove --name=CentOS-6.6-x86_64  #移除profile

 

cobbler profile add --name=CentOS-6.6-x86_64 --distro=CentOS-6.6-x86_64 --kickstart=/var/lib/cobbler/kickstarts/CentOS-6.6-x86_64.ks  #添加

 

cobbler profile edit --name=CentOS-6.6-x86_64  --distro=CentOS-6.6-x86_64  --kickstart=/var/lib/cobbler/kickstarts/CentOS-6.5-x86_64.ks  #编辑

 

命令:cobbler profile add|edit|remove --name=安装引导名 --distro=系统镜像名 --kickstart=kickstart自动安装文件路径

参数说明:

--name:自定义的安装引导名,注意不能重复

--distro:系统安装镜像名,用cobbler distro list可以查看

--kickstart:与系统镜像文件相关联的kickstart自动安装文件(此文件必须预先准备好 )

更多命令参数可执行cobbler --help查看

[root@node2 ~]# cobbler profile edit --name=CentOS-6.4-x86_64 --distro=CentOS-6.4-x86_64 --kickstart=/var/lib/cobbler/kickstarts/centos6.ks
[root@node2 ~]# cobbler report
注,部分省略。
profiles:
==========
Name              : CentOS-6.4-x86_64
TFTP Boot Files        : {}
Comment            : 
DHCP Tag            : default
Distribution          : CentOS-6.4-x86_64
Enable gPXE?          : 0
Enable PXE Menu?        : 1
Fetchable Files        : {}
Kernel Options         : {}
Kernel Options (Post Install) : {}
Kickstart           : /var/lib/cobbler/kickstarts/centos6.ks

 ⑤、同步一下

[root@node2 ~]# cobbler sync
task started: 2013-11-13_163907_sync
task started (id=Sync, time=Wed Nov 13 16:39:07 2013)
running pre-sync triggers
cleaning trees
removing: /var/www/cobbler/p_w_picpaths/CentOS-6.4-x86_64
removing: /var/lib/tftpboot/pxelinux.cfg/default
removing: /var/lib/tftpboot/grub/grub-x86_64.efi
removing: /var/lib/tftpboot/grub/p_w_picpaths
removing: /var/lib/tftpboot/grub/efidefault
removing: /var/lib/tftpboot/grub/grub-x86.efi
removing: /var/lib/tftpboot/p_w_picpaths/CentOS-6.4-x86_64
removing: /var/lib/tftpboot/s390x/profile_list
copying bootloaders
trying hardlink /var/lib/cobbler/loaders/grub-x86_64.efi -> /var/lib/tftpboot/grub/grub-x86_64.efi
trying hardlink /var/lib/cobbler/loaders/grub-x86.efi -> /var/lib/tftpboot/grub/grub-x86.efi
copying distros to tftpboot
copying files for distro: CentOS-6.4-x86_64
trying hardlink /var/www/cobbler/ks_mirror/CentOS-6.4-x86_64/p_w_picpaths/pxeboot/vmlinuz -> /var/lib/tftpboot/p_w_picpaths/CentOS-6.4-x86_64/vmlinuz
trying hardlink /var/www/cobbler/ks_mirror/CentOS-6.4-x86_64/p_w_picpaths/pxeboot/initrd.img -> /var/lib/tftpboot/p_w_picpaths/CentOS-6.4-x86_64/initrd.img
copying p_w_picpaths
generating PXE configuration files
generating PXE menu structure
copying files for distro: CentOS-6.4-x86_64
trying hardlink /var/www/cobbler/ks_mirror/CentOS-6.4-x86_64/p_w_picpaths/pxeboot/vmlinuz -> /var/www/cobbler/p_w_picpaths/CentOS-6.4-x86_64/vmlinuz
trying hardlink /var/www/cobbler/ks_mirror/CentOS-6.4-x86_64/p_w_picpaths/pxeboot/initrd.img -> /var/www/cobbler/p_w_picpaths/CentOS-6.4-x86_64/initrd.img
Writing template files for CentOS-6.4-x86_64
rendering DHCP files
generating /etc/dhcp/dhcpd.conf
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: dhcpd -t -q
received on stdout: 
received on stderr: 
running: service dhcpd restart
received on stdout: 关闭 dhcpd:[确定]
正在启动 dhcpd:[确定]
received on stderr:
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的Web管理界面

可以配置cobbler的web管理界面

(1)、安装软件包

[root@localhost ~]# yum -y install cobbler-web

(2)、设置用户名密码

   为已存在的用户cobbler重置密码

[root@localhost ~]# htdigest /etc/cobbler/users.digest "Cobbler" cobbler   #认证时提示信息   用户名

   添加新用户

[root@localhost ~]# htdigest /etc/cobbler/users.digest "Cobbler" admin    

(3)、配置cobbler web可以登录

[root@localhost ~]# sed -i 's/authn_denyall/authn_configfile/g' /etc/cobbler/modules.conf

(4)、重启Cobbler与http

[root@localhost ~]# /etc/init.d/cobblerd restart

Stopping cobbler daemon: [  OK  ]

Starting cobbler daemon: [  OK  ]

[root@localhost ~]# /etc/init.d/httpd restart

Stopping httpd: [  OK  ]

Starting httpd: [  OK  ]

[root@localhost ~]#

(5)访问Cobbler Web页面

https://192.168.200.1/cobbler_web



Cobbler配置文件

cobbler有许多的配置文件,但是只有少部分基本功能需要修改。
Cobbler最主要的setting file就是/etc/cobbler/settings。Cobbler2.4.0开始引入动态修改模式(Dynamic Settings),我们只需启动这一模式,便不用再手动修改这个文件了。该文件是YAML格式的,如果直接修改setting文件,则必须重启cobbler服务才会生效,但如果是通过CLI命令或者是Web GUI进行修改的话,改动会立即生效,无需重启服务。
修改allow_dynamic_settings的值为1

cd /etc/cobbler/

cp settings settings.save

sed -i 's/^[[:space:]]\+/ /' /etc/cobbler/settings

sed -i 's/allow_dynamic_settings: 0/allow_dynamic_settings: 1/g' /etc/cobbler/settings

修改该配置后重启cobbler服务

/etc/init.d/cobblerd restart 

这个时候,你就可以通过命令行来动态修改cobbler配置

cobbler setting report

cobbler setting report [--name=option]

cobbler setting edit --name=option --value=xxx




Cobbler目录说明

1、Cobbler配置文件目录:/etc/cobbler
/etc/cobbler/settings #cobbler主配置文件
/etc/cobbler/dhcp.template #DHCP服务的配置模板
/etc/cobbler/tftpd.template #tftp服务的配置模板
/etc/cobbler/rsync.template #rsync服务的配置模板
/etc/cobbler/iso #iso模板配置文件
/etc/cobbler/pxe #pxe模板文件
/etc/cobbler/power #电源的配置文件
/etc/cobbler/users.conf #Web服务授权配置文件
/etc/cobbler/users.digest #用于web访问的用户名密码配置文件
/etc/cobbler/dnsmasq.template #DNS服务的配置模板
/etc/cobbler/modules.conf #Cobbler模块配置文件

2、Cobbler数据目录:/var/lib/cobbler
/var/lib/cobbler/config #配置文件
/var/lib/cobbler/triggers #Cobbler命令
/var/lib/cobbler/kickstarts #默认存放kickstart文件
/var/lib/cobbler/loaders #存放的各种引导程序

3、系统安装镜像目录:/var/www/cobbler
/var/www/cobbler/ks_mirror #导入的系统镜像列表
/var/www/cobbler/p_w_picpaths #导入的系统镜像启动文件
/var/www/cobbler/repo_mirror #yum源存储目录

4、日志目录:/var/log/cobbler
/var/log/cobbler/install.log #客户端系统安装日志
/var/log/cobbler/cobbler.log #cobbler日志


Cobbler 常用命令汇总

1.导入镜像文件

命令:cobbler import --path=镜像路径 -- name=安装引导名 --arch=32位或64位

参数:

  • path 是镜像所挂载的目录

  • name 是导入到cobbler里面显示的名字

  • arch 是32位系统还是64位系统

2.导入kickstart文件

命令:cobbler profile add --name=list名 --distro=镜像 --kickstart=路径

参数:

  • name是表示添加的ks 的名字,用cobbler report可以看到这个名字

  • distro 是用哪个镜像,list的distros里面选择一个,需要版本相对应

  • kickstart 是具体的 ks 文件路径

3.同步DHCP、HTTPD

命令:cobbler sync

注,每次修改完dhcp.template之类的配置文件需要执行一次使其生效。

4.查看Cobbler列表

命令:cobbler list

注,列出Cobbler所有的元素。

5.删除相关列表

命令:cobbler distro/profile remove --name=要删除的引导文件名

  • 删除指定 distro , 也就是镜像

  • 删除指定的 profile 文件,也就是 ks



Cobbler 不足

1.问题说明

根据MAC地址来配置主机ip和hostname,根据mac配置ip等相关信息是一些常见需求,有些设备标签上有mac地址,这一类可以手动抄下,然后在配置。但是,由于主机更换主板,或其他原因导致mac不对,你还用标签上的mac地址来配置,这就悲剧了。为了更好的解决这样的问题我们也可以有解决的办法。

2.解决方法

根据dhcp请求信息抓取mac地址,然后进行配置。具体方法可以通过tcpdump或者脚本来分析/var/log/message文件,抓取对目标端口为67访问的数据包,然后进行分析。

[root@node6 ~]# tcpdump -i eth0 dst port 67