Cobbler——无人值守全自动装机

2017-03-07  本文已影响361人  037251a7c483

Cobbler可以是一个有点复杂的系统,但它确实支持大量的功能。Cobbler其实也是基于PXE+Kickstart的,因此使用Cobbler之前,必须要有部署过PXE+Kickstart的经验,否则很难理解Cobbler是如何工作的。此外,Coobler支持Web GUI,因此十分方便。

一、安装

$ yum install cobbler -y

二、配置Cobbler

Cobbler安装完成后,主配置在/etc/cobbler目录下,其配置文件为 ** /etc/cobbler/settings**。Cobbler的配置文件采用 YAML格式语法,因此,个人建议要熟悉下YAML语法,以此避免语法错误。

2.1 新系统密码设置

default_password_crypted: "$1$bfI7WLZz$PxXetL97LkScqJFxnW7KS1"       #此设置控制在kickstart期间为新系统设置的root密码。
[root@master cobbler]# openssl passwd -1
Password: 
Verifying - Password: 
$1$yXCCH7G3$ye8AcQbeUJv9Qc89pgEQS/

2.2 server 和 next_server 设置

server: 192.168.159.135
next_server: 192.168.159.135

server: ** 设置cobbler服务器地址的IP,不要使用 0.0.0.0,这个不是监听地址,这个IP是是给HTTP和TFTP连接cobbler所用的IP(后续的Web GUI 配置使用的也是这个IP)
  
next_server: ** 用于DHCP / PXE作为从其下载网络引导文件的TFTP服务器的IP。 一般与server后的IP一致

2.3 DHCP 管理与配置

DHCP 是为了PXE引导期间分配IP的。他会将系统引导到TFTP服务器。在那里可以下载网络引导文件。 Cobbler可以通过manage_dhcp设置管理。

manage_dhcp: 1

manage_dhcp设置为1 表示cobbler将基于cobbler中包含的dhcp.template生成dhcpd.conf文件(使用cobbler sync命令才会生效,后面会讲到)。需要注意的是,这个模板需要根据当前网络设置进行修改。比如我这里是 192.168.159.0网段的,其配置如下:

subnet 192.168.159.0 netmask 255.255.255.0 {
     option routers             192.168.159.2;          #网关
     option domain-name-servers 192.168.159.2;
     option subnet-mask         255.255.255.0;
     range dynamic-bootp        192.168.159.100 192.168.159.254;
     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";
          }
     }

}

2.4 Cobbler的相关文件和目录以及启动服务

Cobbler大量使用/var目录。 如/var/www/cobbler/ks_mirror目录是所有distribution和存储库文件的复制位置,因此需要为每个要导入的分发包提供5-10GB的可用空间。

$ /etc/init.d/cobblerd start
$ chkconfig cobblerd on
$ cobbler check
$ cobbler sync

重点讲下cobbler check和cobbler sync命令

[root@master cobbler]# cobbler check
The following are potential configuration items that you may want to fix:

1 : 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.
2 : change 'disable' to 'no' in /etc/xinetd.d/rsync
3 : file /etc/xinetd.d/rsync does not exist
4 : debmirror package is not installed, it will be required to manage debian deployments and repositories
5 : ksvalidator was not found, install pykickstart
6 : 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.

注意,检查结果只是建议,但是有的还是要注意下。比如我这里的第一点,提示没有boot-loaders,因此需要处理。解决方法,执行如下命令 :

$ cobbler get-loaders
[root@master cobbler]# cobbler sync 
task started: 2017-03-08_021310_sync
task started (id=Sync, time=Wed Mar  8 02:13:10 2017)
running pre-sync triggers
cleaning trees
removing: /var/lib/tftpboot/pxelinux.cfg/default
removing: /var/lib/tftpboot/grub/efidefault
removing: /var/lib/tftpboot/grub/images
removing: /var/lib/tftpboot/s390x/profile_list
copying bootloaders
copying distros to tftpboot
copying images
generating PXE configuration files
generating PXE menu structure
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 ***

2.5 导入Distribution(镜像)

Cobbler通过“cobbler import”命令自动添加镜像和配置文件。 此命令可以(通常)自动检测导入的Distribution的类型和版本,并使用正确的设置创建(一个或多个)配置文件。
  为了导入distribution,需要一个用于Distribution的DVD ISO。 注意:必须使用完整的DVD,而不是"Live CD"ISO。 下载此文件后,将其挂载到某处:

mount -o loop /dev/cdrom /mnt

我这里用的是虚拟机。如果是具体的镜像,就要挂载镜像。

cobbler import --name=centos6.5 --arch=x86_64 --path=/mnt

注意: --name 一般以系统版本命名,--arch 定义了架构(最后--name 和 --arch的值组成了distribution的目录名位于:/var/www/cobbler/ks_mirror/ 目录下)。一般不需要指定--arch选项,因为它通常会被自动检测。不过也可以使用

[root@master mnt]# cobbler import --name=centos6.5 --arch=x86_64 --path=/mnt                  
task started: 2017-03-08_022057_import
task started (id=Media import, time=Wed Mar  8 02:20:57 2017)

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.5-x86_64:
creating new distro: centos6.5-x86_64
trying symlink: /var/www/cobbler/ks_mirror/centos6.5-x86_64 -> /var/www/cobbler/links/centos6.5-x86_64
creating new profile: centos6.5-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.5-x86_64 for centos6.5-x86_64
processing repo at : /var/www/cobbler/ks_mirror/centos6.5-x86_64
need to process repo/comps: /var/www/cobbler/ks_mirror/centos6.5-x86_64
looking for /var/www/cobbler/ks_mirror/centos6.5-x86_64/repodata/*comps*.xml
Keeping repodata as-is :/var/www/cobbler/ks_mirror/centos6.5-x86_64/repodata
*** TASK COMPLETE ***

2.6 列出对象

如果在导入期间未报告错误,则可以查看有关导入期间创建的发行版和配置文件的详细信息。

$ cobbler distro list
$ cobbler profile list        #列出配置文件

import命令通常将创建至少一个distro/profile对,它们将具有与上面导入设置时设定的相同的名称。 在某些情况下(例如,当发现基于xen的内核时),将创建多个发行版/配置文件对。

2.7 对象细节

report命令显示cobbler中对象的详细信息:

$ cobbler distro report --name=centos6.5-x86_64
[root@master ks_mirror]# cobbler distro report --name=centos6.5-x86_64
Name                           : centos6.5-x86_64
Architecture                   : x86_64
TFTP Boot Files                : {}
Breed                          : redhat
Comment                        : 
Fetchable Files                : {}
Initrd                         : /var/www/cobbler/ks_mirror/centos6.5-x86_64/images/pxeboot/initrd.img
Kernel                         : /var/www/cobbler/ks_mirror/centos6.5-x86_64/images/pxeboot/vmlinuz
Kernel Options                 : {}
Kernel Options (Post Install)  : {}
Kickstart Metadata             : {'tree': 'http://@@http_server@@/cblr/links/centos6.5-x86_64'}
Management Classes             : []
OS Version                     : rhel6
Owners                         : ['admin']
Red Hat Management Key         : <<inherit>>
Red Hat Management Server      : <<inherit>>
Template Files                 : {}

如上所示,导入命令自动填充了很多字段,例如name,操作系统版本和initrd / kernel文件位置。 “Kickstart Metadata ”字段(--ksmeta internally)用于其他变量以及包含关键的“tree”变量。 这在kickstart模板中用于指定可以在其中找到安装文件的URL。
  还有一些要注意的:一些字段设置为“<<inherit>>”。 这意味着它们将使用默认设置(在设置文件中找到,或者(在配置文件,子配置文件和系统的情况下)将使用父对象中设置的任何值。

2.8 创建系统

现在有了一个distribution和profile,就可以创建一个系统了。 配置文件可用于PXE引导,但cobbler中的大多数功能都围绕系统对象。 给系统提供的信息越多,cobbler会自动做好。
  首先,我们将基于导入期间创建的配置文件创建一个系统对象。 创建系统时,名称和配置文件是仅有的两个必填字段:

$ cobbler system add --name=test --profile=centos6.5-x86_64
$ cobbler system list
$ cobbler system report --name=test
[root@master ~]# cobbler system add --name=test --profile=centos6.5-x86_64
[root@master ~]#  cobbler system list
   test

[root@master ~]# cobbler system report --name=test
Name                           : test
TFTP Boot Files                : {}
Comment                        : 
Enable gPXE?                   : <<inherit>>
Fetchable Files                : {}
Gateway                        : 
Hostname                       : 
Image                          : 
IPv6 Autoconfiguration         : False
IPv6 Default Device            : 
Kernel Options                 : {}
Kernel Options (Post Install)  : {}
Kickstart                      : <<inherit>>
Kickstart Metadata             : {}
LDAP Enabled                   : False
LDAP Management Type           : authconfig
Management Classes             : <<inherit>>
Management Parameters          : <<inherit>>
Monit Enabled                  : False
Name Servers                   : []
Name Servers Search Path       : []
Netboot Enabled                : True
Owners                         : <<inherit>>
Power Management Address       : 
Power Management ID            : 
Power Management Password      : 
Power Management Type          : ipmitool
Power Management Username      : 
Profile                        : centos6.5-x86_64
Internal proxy                 : <<inherit>>
Red Hat Management Key         : <<inherit>>
Red Hat Management Server      : <<inherit>>
Repos Enabled                  : False
Server Override                : <<inherit>>
Status                         : production
Template Files                 : {}
Virt Auto Boot                 : <<inherit>>
Virt CPUs                      : <<inherit>>
Virt Disk Driver Type          : <<inherit>>
Virt File Size(GB)             : <<inherit>>
Virt Path                      : <<inherit>>
Virt PXE Boot                  : 0
Virt RAM (MB)                  : <<inherit>>
Virt Type                      : <<inherit>>

创建系统对象的主要原因是网络配置。 使用配置文件时,只能使用DHCP接口,但是使用系统时,可以指定更多的网络配置选项。因此,现在我们将在192.168.159 / 24网络中设置一个简单的接口:

$ cobbler system edit --name=test --interface=eth0  --ip-address=192.168.159.100 --netmask=255.255.255.0 --static=1 --dns-name=test.mydomain.com  
$ cobbler system edit --name=test --gateway=192.168.159.2 --hostname=test.mydomain.com

2.9 配置ks.cfg文件

cobbler系统的默认ks文件是/var/lib/cobbler/kickstarts/sample_end.ks(cobbler profile report --name=centos6.5-x86_64 命令查看)我们需要准备自己的ks文件(我自己准备的叫做6u5_lan.cfg),如下:

$ cobbler profile report --name=centos6.5-x86_64              # 查看默认的ks文件
$ cd /var/lib/cobbler/kickstarts/
$ mv 6u5_lan.cfg centos6.5-x86_64.cfg
$ cobbler profile edit  --name=centos6.5-x86_64 --kickstart=/var/lib/cobbler/kickstarts/centos6.5-x86_64.cfg   #改变默认ks文件为自己的文件
url --url http://10.33.9.250:3195/CentOS-6.5-x86_64
url --url==$tree
$ cobbler sync
$ /etc/init.d/cobblerd restart
$ /etc/init.d/xinetd restart                      
$ /etc/init.d/httpd restart
$ /etc/init.d/dhcpd restart

备注:xinetd 、httpd 、dhcpd 服务都是必须启动的。最后可以统一重启下,避免忘记操作而导致的不必要的麻烦。

到此为止,就可以开始安装系统了!!!
Cobbler还有很多其他的功能,这里只是冰山一角,详情请参考官网!

三、Web 管理界面的安装与配置

$ yum install cobbler-web -y
authentication]
module = authn_configfile

[authorization]
module = authz_allowall
$ htdigest /etc/cobbler/users.digest "Cobbler" cobbler
$ cp /etc/httpd/conf.d/cobbler.conf.rpmnew /etc/httpd/conf.d/cobbler.conf
$ /sbin/service cobblerd restart
$ /sbin/service httpd restart
上一篇下一篇

猜你喜欢

热点阅读