一、PXE 概述

   预启动执行环境(Preboot eXecution Environment,PXE,也被称为预执行环境)是让计算机通过网卡独立地使用数据设备(如硬盘)或者安装操作系统。PXE当初是作为Intel的有线管理体系的一部分,Intel和 Systemsoft于1999年9月20日公布其规格(版本2.1)。通过使用像网际协议(IP)、用户数据报协议(UDP)、动态主机设定协定(DHCP)、小型文件传输协议(TFTP)等几种网络协议和全局唯一标识符(GUID)、通用网络驱动接口(UNDI)、通用唯一识别码(UUID)的概念并通过对客户机(通过PXE自检的电脑)固件扩展预设的API来实现目的。PXE 客户机(client)这个术语是指机器在PXE启动过程中的角色。一个PXE 客户机(client)可以是一台服务器、桌面级电脑、笔记本电脑或者其他装有PXE启动代码的机器。

   客户机的固件为接受到可用的PXE启动服务器,要在网络中尝试找出PXE重定向服务(DHCP代理)。在分析返回的包后,固件会向合适的启动服务器询问网络自检程序(NBP)的路径,并且通过TFTP协议下载到电脑的内存中,有可能会去校验它,最后执行它。当只有全部的PXE 客户机(client)只使用一个NBP时,全部的PXE 客户机可能会被指定是用BOOTP协议,从而不需要DHCP代理,但是仍然需要TFTP启动服务。

   PXE 协议大致上结合了DHCP和TFTP,虽然都有在两者上面有改进。DHCP用于查找合适的启动服务器,TFTP用于下载初始引导程序和附加文件。为了开始一个PXE自检会话,PXE固件广播一个带有明确的PXE选项DHCPDISCOVER包(扩展DHCPDISCOVER)到67/UDP端口(DHCP服务器端口)。PXE选项是PXE固件有PXE能力的鉴定,但是会被一般的DHCP服务忽略。当固件受到从这样的服务受到DHCPOFFER包时,它会通过要求其提供配置信息来自我配置。

   当 PXE 重定向服务 (DHCP代理) 收到一个 扩展DHCPDISCOVER 包时,它会通过发送一个带有明确的PXE选项DHCPDISCOVER包到PXE客户机的68/UDP端口 (DHCP 客户机端口)来回答。 一个扩展DHCPDISCOVER包主要包含:

  • 一个PXE发现控制领域,以决定是使用多播,广播(网路)或单播来联系PXE启动服务器。 

  • 一个列出可用的PXE启动服务器类型的地址表。 

  • 一个代表每个一个PXE启动服务器类型的条目单。 

  • 一个带有带有提示用户按下哪一个键来看到启动菜单的PXE启动菜单。 

  • 一个超过多长时间就启动第一启动菜单的超时数值。 

   一个DHCP代理服务可能在相同的主机上运行一个标准的DHCP服务器。尽管两个服务不可以共享67/UDP 端口,DHCP代理服务在4011/UDP 端口上运行,要求从客户端来的DHCPDISCOVER 包变成DHCPREQUEST 包。标准DHCP服务在其发送的DHCPOFFER 包中加入特殊的PXE 选项组合,这样PXE客户端知道可以在同一个主机的 4011/UDP 端口找到一个DHCP代理服务。

   和一个正在启动系统的启动服务联系必须有一个IP地址(可能来自DHCP服务)。通过多播或单播一个带有特殊的PXE选项的 DHCPREQUEST 包(扩展DHCPREQUEST包)到 4011/UDP端口,或者广播(网路)这种包到 67/UDP端口。这种包包含有PXE启动服务类型和PXE启动层,一个守护进程允许运行多个启动服务类型。 一个扩展 DHCPREQUEST包可能是一个DHCPINFORM包。下面是PXE具体工作原理图,

wKioL1YFWPLQ9kQGAAL3E6I5aUI509.jpg

简单总结一下,

  • PXE Client发送广播包请求DHCP分配IP地址DHCP 

  • Server回复请求,给出IP地址以及Boot 

  • Server的地址PXE下载引导文件执行引导程序 


二、Kickstart 概述

Kickstart 组成

  • Kickstart 安装选项,包含语言的选择,防火墙,密码,网络,分区的设置等; 

  • %Pre 部分,安装前解析的脚本,通常用来生成特殊的ks配置,比如由一段程序决定磁盘分区等; 

  • %Package 部分,安装包的选择,可以是 @core 这样的group的形式,也可以是这样 vim-* 包的形式; 

  • %Post 部分,安装后执行的脚本,通常用来做系统的初始化设置。比如启动的服务,相关的设定等。


三、Cobbler 简介

1、Cobbler 概述

   Cobbler由python语言开发,是对PXE和Kickstart以及DHCP的封装。融合很多特性,提供了CLI和Web的管理形式。更加方便的实行网络安装。同时,Cobbler也提供了API接口,使用其它语言也很容易做扩展。它不紧可以安装物理机,同时也支持kvm、xen虚拟化、Guest OS的安装。更多的是它还能结合Puppet等集中化管理软件,实现自动化的管理。

2、新旧对比

以前自动化安装系统得先设置一个网络环境,可是设置网络环境涉及到许多步骤,才能为开始安装系统做好准备。你必须:

  • 配置服务,比如 DHCP、TFTP、DNS、HTTP、FTP 和 NFS; 

  • 在 DHCP 和 TFTP 配置文件中填入各个客户端机器的信息; 

  • 创建自动部署文件(比如 kickstart 和 autoinst); 

  • 将安装媒介解压缩到 HTTP/FTP/NFS 存储库中。 

   这个过程并不简单,而且手动注册每个必须配置的客户端机器可能很麻烦。对配置一台机器的任何参数更改(比如要使用一个不同的操作系统),都需要对配置进行手动干预,并有可能对自动部署文件进行手动干预。当机器数量增加时,如果不高度重视文件组织的条理性,TFTP 目录等元素就可能变得混乱。

   Cobbler 通过为机器配置的所有方面创建一个中央管理点,从而解决了这些不足。Cobbler 可重新配置服务,创建存储库,解压缩操作系统媒介,代理或集成一个配置管理系统,控制电源管理等。Cobbler 创建了一个抽象层,您可在其中运行 “add new repository” 或 “change client machine operating system” 等命令。Cobbler 负责处理所有事情:创建或更新配置文件,重新启动服务,或者将媒介解压到新创建的目录中。它的目的是隐藏所有与系统相关的问题,以便您可专注于任务本身。

3、Cobbler 提供的功能

   使用 Cobbler,您无需进行人工干预即可安装机器。Cobbler 设置一个 PXE 引导环境(它还可使用 yaboot 支持 PowerPC),并控制与安装相关的所有方面,比如网络引导服务(DHCP 和 TFTP)与存储库镜像。当希望安装一台新机器时,Cobbler 可以:

使用一个以前定义的模板来配置 DHCP 服务(如果启用了管理 DHCP) 将一个存储库(yum 或 rsync)建立镜像或解压缩一个媒介,以注册一个新操作系统 在 DHCP 配置文件中为需要安装的机器创建一个条目,并使用您指定的参数(IP 和 MAC 地址) 在 TFTFP 服务目录下创建适当的 PXE 文件 重新启动 DHCP 服务以反映更改 重新启动机器以开始安装(如果电源管理已启用)

   Cobbler 支持众多的发行版:Red Hat、Fedora、CentOS、Debian、Ubuntu 和 SuSE。当添加一个操作系统(通常通过使用 ISO 文件)时,Cobbler 知道如何解压缩合适的文件并调整网络服务,以正确引导机器。

   Cobbler 可使用 kickstart 模板。基于 Red Hat 或 Fedora 的系统使用 kickstart 文件来自动化安装流程。通过使用模板,您就会拥有基本的 kickstart 模板,然后定义如何针对一种配置文件或机器配置而替换其中的变量。例如,一个模板可能包含两个变量 $domain和 $machine_name。在 Cobbler 配置中,一个配置文件指定 domain=mydomain.com,并且每台使用该配置文件的机器在machine_name 变量中指定其名称。该配置文件中的所有机器都使用相同的 kickstart 安装且针对 domain=mydomain.com 进行配置,但每台机器拥有其自己的机器名称。您仍然可以使用 kickstart 模板在不同的域中安装其他机器并使用不同的机器名称。

   为了协助管理系统,Cobbler 可通过 fence scripts 连接到各种电源管理环境。Cobbler 支持 apc_snmp、bladecenter、bullpap、drac、ether_wake、ilo、integrity、ipmilan、ipmitool、lpar、rsa、virsh 和 wti。要重新安装一台机器,可运行 reboot system foo命令,而且 Cobbler 会使用必要的凭据和信息来为您运行恰当的 fence scripts(比如机器插槽数)。

   除了这些特性,还可使用一个配置管理系统 (CMS)。您有两种选择:该工具内的一个内部系统,或者集成一个现有的外部 CMS,比如 Chef 或 Puppet。借助内部系统,您可以指定文件模板,这些模板会依据配置参数进行处理(与 kickstart 模板的处理方式一样),然后复制到您指定的位置。如果必须自动将配置文件部署到特定机器,那么此功能很有用。

使用 koan 客户端,Cobbler 可从客户端配置虚拟机并重新安装系统。


四、Cobbler 组成

   Cobbler 的配置结构基于一组注册的对象。每个对象表示一个与另一个实体相关联的实体(该对象指向另一个对象,或者另一个对象指向该对象)。当一个对象指向另一个对象时,它就继承了被指向对象的数据,并可覆盖或添加更多特定信息。以下对象类型的定义为:

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

  • 配置文件:包含一个发行版、一个 kickstart 文件以及可能的存储库,还包含更多特定的内核参数等其他数据。 

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

  • 存储库:保存一个 yum 或 rsync 存储库的镜像信息。 

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

基于注册的对象以及各个对象之间的关联,Cobbler 知道如何更改文件系统以反映具体配置。因为系统配置的内部是抽象的,所以您可以仅关注想要执行的操作。下面是Cobbler各对象之间的关系图,

wKiom1YFWR6QbCnjAACtHP9L4NM314.jpg


五、Cobbler 工作原理

wKioL1YFWUmgJg5hAAIGFWIpdk8906.jpg

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

Server端:

  • 第一步,启动Cobbler服务 

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

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

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

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

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

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

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

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

Client端:

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

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

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

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

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

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

  • 第七步,加载Kickstart文件 

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

  • 第九步,进行安装系统 


六、搭建使用Cobbler

1、安装cobbler

[root@proxy ~]#  yum install dhcp tftp rsync xinetd httpd cobbler -y

启动服务:

[root@example ~]# service cobblerd start                             
[root@example ~]# service httpd start

检查配置执行:

[root@example ~]# cobbler check
Traceback (most recent call last):
  File "/usr/bin/cobbler", line 36, in <module>
    sys.exit(app.main())
  File "/usr/lib/python2.6/site-packages/cobbler/cli.py", line 657, in main
    rc = cli.run(sys.argv)
  File "/usr/lib/python2.6/site-packages/cobbler/cli.py", line 270, in run
    self.token         = self.remote.login("", self.shared_secret)
  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 1253, in request
    return self._parse_response(h.getfile(), sock)
  File "/usr/lib64/python2.6/xmlrpclib.py", line 1392, in _parse_response
    return u.close()
  File "/usr/lib64/python2.6/xmlrpclib.py", line 838, in close
    raise Fault(**self._stack[0])
xmlrpclib.Fault: <Fault 1: "<class 'cobbler.cexceptions.CX'>:'login failed'">

报错解决方法:

[root@example ~]# service cobblerd restart
Stopping cobbler daemon:                                   [确定]
Starting cobbler daemon:                                   [确定]
[root@example ~]# cobbler get-loaders
task started: 2015-08-29_220217_get_loaders
task started (id=Download Bootloader Content, time=Sat Aug 29 22:02:17 2015)
downloading http://cobbler.github.com/loaders/README to /var/lib/cobbler/loaders/README
downloading http://cobbler.github.com/loaders/COPYING.elilo to /var/lib/cobbler/loaders/COPYING.elilo
downloading http://cobbler.github.com/loaders/COPYING.yaboot to /var/lib/cobbler/loaders/COPYING.yaboot
downloading http://cobbler.github.com/loaders/COPYING.syslinux to /var/lib/cobbler/loaders/COPYING.syslinux
downloading http://cobbler.github.com/loaders/elilo-3.8-ia64.efi to /var/lib/cobbler/loaders/elilo-ia64.efi
downloading http://cobbler.github.com/loaders/yaboot-1.3.17 to /var/lib/cobbler/loaders/yaboot
downloading http://cobbler.github.com/loaders/pxelinux.0-3.86 to /var/lib/cobbler/loaders/pxelinux.0
downloading http://cobbler.github.com/loaders/menu.c32-3.86 to /var/lib/cobbler/loaders/menu.c32
downloading http://cobbler.github.com/loaders/grub-0.97-x86.efi to /var/lib/cobbler/loaders/grub-x86.efi
downloading http://cobbler.github.com/loaders/grub-0.97-x86_64.efi to /var/lib/cobbler/loaders/grub-x86_64.efi
*** TASK COMPLETE ***

在检查配置:

[root@example ~]# 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 : change 'disable' to 'no' in /etc/xinetd.d/tftp
4 : change 'disable' to 'no' in /etc/xinetd.d/rsync
5 : debmirror package is not installed, it will be required to manage debian deployments and repositories
6 : ksvalidator was not found, install pykickstart
7 : 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
8 : fencing tools were not found, and are required to use the (optional) power management features. install cman or fence-agents to use them

Restart cobblerd and then run 'cobbler sync' to apply changes.

上面这段信息大意就是:

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

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

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

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

  • 提示说debmirror没安装。如果不是安装 debian之类的系统,此提示可以忽略。

  • ksvalidator没有被发现,安装pykickstart 

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

  • fencing tools未安装。

操作如下:

[root@example ~]# vim /etc/cobbler/settings
server: 192.168.1.8
next_server: 192.168.1.8
[root@example ~]# vim /etc/xinetd.d/tftp
disable=no
[root@example ~]# vim /etc/xinetd.d/rsync
disable=no
[root@example ~]# yum install -y pykickstart
[root@proxy ~]# openssl passwd -1 -salt `openssl rand -hex 4`Password: $1$76f29b0d$R3nuR/TTUJexv9cWb.QsI1
[root@example ~]# vim /etc/cobbler/settings
default_password_crypted: "$1$76f29b0d$R3nuR/TTUJexv9cWb.QsI1"
[root@example ~]#  yum install fence-agents -y

重启服务并检测:

[root@example ~]# /etc/init.d/cobblerd restart
[root@example ~]# /etc/init.d/xinetd restart
[root@example ~]# cobbler check  
The following are potential configuration items that you may want to fix:

1 : debmirror package is not installed, it will be required to manage debian deployments and repositories

Restart cobblerd and then run 'cobbler sync' to apply changes.
2、添加distro(distribution):
[root@example ~]# mount /dev/cdrom /mnt/ -r
[root@example ~]# cobbler import --path=/mnt/ --name=CentOS-6.6 --arch=x86_64
task started: 2015-08-29_222129_import
task started (id=Media import, time=Sat Aug 29 22:21:29 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/CentOS-6.6-X86_64-x86_64:
creating new distro: CentOS-6.6-X86_64-x86_64
trying symlink: /var/www/cobbler/ks_mirror/CentOS-6.6-X86_64-x86_64 -> /var/www/cobbler/links/CentOS-6.6-X86_64-x86_64
creating new profile: CentOS-6.6-X86_64-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/CentOS-6.6-X86_64-x86_64 for CentOS-6.6-X86_64-x86_64
processing repo at : /var/www/cobbler/ks_mirror/CentOS-6.6-X86_64-x86_64
need to process repo/comps: /var/www/cobbler/ks_mirror/CentOS-6.6-X86_64-x86_64
looking for /var/www/cobbler/ks_mirror/CentOS-6.6-X86_64-x86_64/repodata/*comps*.xml
Keeping repodata as-is :/var/www/cobbler/ks_mirror/CentOS-6.6-X86_64-x86_64/repodata
*** TASK COMPLETE ***

查看是否导入成功:

[root@example ~]# cobbler distro list
   CentOS-6.6-X86_64-x86_64

参数说明:

--name  为安装源定义一个名字

--arch    指定安装源是32位还是64位、ia64, 目前支持的选项有: x86│x86_64│ia64

注意: 这个安装源的唯一标示 就是根据这两个参数来定义 本例导入成功后,安装源的唯一标示就是:centos6.3-x86_64 ,如果重复,系统会提示导入失败。

3、配置dhcp服务

[root@example ~]# vim /etc/cobbler/settings
manage_dhcp: 1
[root@example ~]# mv /etc/cobbler/dhcp.template{,.bak}
[root@example ~]# vim /etc/cobbler/dhcp.template
subnet 192.168.1.0 netmask 255.255.255.0 {
  option routers	   192.168.1.1;
  option domain-name-servers 192.168.1.1;
  option subnet-mask	    255.255.255.0;
  range dynamic-bootp	   192.168.1.30 192.168.1.100;
  default-lease-time	    21600;
  max-lease-time	   43200;
  next-server	 $next_server;
  class "pxeclients" {
    match if substring (option vendor-class-identifier, 0, 9) = "PXEClient";
    if option pxe-system-type = 00:02 {
         filename "ia64/elilo.efi";
    } else if option pxe-system-type = 00:06 {
         filename "grub/grub-x86.efi";
    } else if option pxe-system-type = 00:07 {
         filename "grub/grub-x86_64.efi";
    } else {
         filename "/pxelinux.0";
    }
  }
}
[root@example ~]# /etc/init.d/xinetd restart

同步cobbler配置

[root@example ~]# cobbler sync
task started: 2015-08-29_223050_sync
task started (id=Sync, time=Sat Aug 29 22:30:50 2015)
running pre-sync triggers
cleaning trees
removing: /var/
www/cobbler/p_w_picpaths/CentOS-6.6-X86_64-x86_64
removing: /var/lib/tftpboot/pxelinux.cfg/default
removing: /var/lib/tftpboot/grub/p_w_picpaths
removing: /var/lib/tftpboot/grub/efidefault
removing: /var/lib/tftpboot/p_w_picpaths/CentOS-6.6-X86_64-x86_64
removing: /var/lib/tftpboot/s390x/profile_list
copying bootloaders
trying hardlink /var/lib/cobbler/loaders/pxelinux.0 -> /var/lib/tftpboot/pxelinux.0
trying hardlink /var/lib/cobbler/loaders/menu.c32 -> /var/lib/tftpboot/menu.c32
trying hardlink /var/lib/cobbler/loaders/yaboot -> /var/lib/tftpboot/yaboot
trying hardlink /var/lib/cobbler/loaders/grub-x86.efi -> /var/lib/tftpboot/grub/grub-x86.efi
trying hardlink /var/lib/cobbler/loaders/grub-x86_64.efi -> /var/lib/tftpboot/grub/grub-x86_64.efi
copying distros to tftpboot
copying files for distro: CentOS-6.6-X86_64-x86_64
trying hardlink /var/
www/cobbler/ks_mirror/CentOS-6.6-X86_64-x86_64/p_w_picpaths/pxeboot/vmlinuz
 -> /var/lib/tftpboot/p_w_picpaths/CentOS-6.6-X86_64-x86_64/vmlinuz
trying hardlink /var/
www/cobbler/ks_mirror/CentOS-6.6-X86_64-x86_64/p_w_picpaths/pxeboot/initrd.img
 -> /var/lib/tftpboot/p_w_picpaths/CentOS-6.6-X86_64-x86_64/initrd.img
copying p_w_picpaths
generating PXE configuration files
generating PXE menu structure
copying files for distro: CentOS-6.6-X86_64-x86_64
trying hardlink /var/
www/cobbler/ks_mirror/CentOS-6.6-X86_64-x86_64/p_w_picpaths/pxeboot/vmlinuz
 -> /var/
www/cobbler/p_w_picpaths/CentOS-6.6-X86_64-x86_64/vmlinuz
trying hardlink /var/
www/cobbler/ks_mirror/CentOS-6.6-X86_64-x86_64/p_w_picpaths/pxeboot/initrd.img
 -> /var/
www/cobbler/p_w_picpaths/CentOS-6.6-X86_64-x86_64/initrd.img
Writing template files for CentOS-6.6-X86_64-x86_64
rendering TFTPD files
generating /etc/xinetd.d/tftp
processing boot_files for distro: CentOS-6.6-X86_64-x86_64
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 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会自动进行初始化工作,移除已经存在的启动项,然后根据模板拷贝loader文件。之后再生成pxe的配置文件,生成dhcp的配置文件,最后再重启dhcp服务。 至此,就可以使用虚拟机来测试cobbler安装了。 OK开启真机或者虚拟机来测试注意开启网络引导 网卡要开启PXE引导程序 。

配置启动dhcp服务:

[root@example ~]# vim /etc/dhcp/dhcpd.conf
subnet 192.168.1.0 netmask 255.255.255.0 {
option routers 192.168.1.1;
option domain-name-servers 192.168.1.1;
option subnet-mask 255.255.255.0;
range dynamic-bootp 192.168.1.121 192.168.1.125;
filename "/pxelinux.0";
default-lease-time 21600;
max-lease-time 43200;
next-server 192.168.1.8;
}
[root@example ~]# service dhcpd restart

4、测试使用Cobbler                    

将启动项改为网卡启动:

wKiom1YFWYGDNlV6AADjAtxlfMM233.jpg

启动服务后出现此界面:

wKioL1YFWlSj6D6eAACl8MBXBOA663.jpg

默认安装后查看系统:

wKiom1YFWnyhziUJAAHlhsff5eY551.jpg

5、添加profile

[root@example ~]# cd /var/lib/cobbler/kickstarts/
[root@example kickstarts]# cp sample_end.ks CentOS-6.6-X86_64-basic 
[root@example kickstarts]# cobbler profile add --name=CentOS-6.4-x86_64-basic --distro=CentOS-6.6-X86_64-x86_64 --kickstart=/var/lib/cobbler/kickstarts/CentOS-6.6-X86_64-basic 
[root@example kickstarts]# cobbler sync

查看是否生成:

[root@example ~]# cobbler profile list
   CentOS-6.4-x86_64-basic
   CentOS-6.6-X86_64-x86_64

wKioL1YFWpfCPeRoAAC9fdUehUw940.jpg


七、Cobbler相关选项说明

1、Cobbler 常用命令详解

  • cobbler check #检查cobbler配置 

  • cobbler sync #同步配置到dhcp/pxe和数据目录 

  • cobbler list #列出所有的cobbler元素 

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

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

  • cobbler distro #查看导入的发行版系统信息 

  • cobbler profile #查看配置信息 

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

  • cobbler reposync #同步yum仓库到本地

2、导入镜像文件

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

参数:

  • path 是镜像所挂载的目录 

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

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

3、导入kickstart文件

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

参数:

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

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

  • kickstart 是具体的 ks 文件路径

4、同步DHCP、HTTPD

命令:cobbler sync

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

5、查看Cobbler列表

命令:cobbler list

注,列出Cobbler所有的元素。

6、删除相关列表

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

删除指定 distro , 也就是镜像

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

7、Cobbler安装后目录说明

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模块配置文件

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日志