Cobbler介绍


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


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


Cobbler提供以下服务集成:

PXE服务支持

DHCP服务管理

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

电源管理

Kickstart服务支持

yum仓库管理

TFTP (PXE启动时需要)

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


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


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


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


常用架构如下图:

wKioL1WjCdyC3XuOAAFlVNx3AHo685.jpg


Cobbler的工作流程

Cobbler工作流程:

wKiom1WjCRKwcQp-AAHpTNpvyFo053.jpg


基本原理

PXE到底是什么东东?

PXE(Pre-boot Execution Environment)是由Intel设计的协议,它可以使计算机通过网络启动。协议分为client和server两端,PXE client在网卡的ROM中,当计算机引导时,BIOS把PXE client调入内存执行,并显示出命令菜单,经用户选择后,PXE client将放置在远端的操作系统通过网络下载到本地运行。

既然是通过网络传输,就需要IP地址;也就是说在其启动过程中,客户端请求服务器分配IP地址,之后PXE Client使用TFTP Client 通过TFTP(Trivial File Transfer Protocol)协议下载启动安装程序所需的文件。

简单地说PXE网络安装,客户机通过支持PXE的网卡向网络中发送请求DHCP信息的广播请求IP地址等信息,DHCP服务器给客户端提供IP地址和其它信息(TFTP服务器、启动文件等),之后请求并下载安装需要的文件。在这个过程中需要一台服务器来提供启动文件、安装文件、以及安装过程中的自动应答文件等。下图中介绍了Linux中自动安装系统的详细工作过程:

wKioL1WjC3KjXsgiAAE-DdQdqjs154.jpg

第一步:PXE Client向DHCP发送请求

首先,将支持PXE的网络接口卡(NIC)的客户端的BIOS设置成为网络启动,通过PXE BootROM(自启动芯片)会以UDP(简单用户数据报协议)发送一个广播请求,向网络中的DHCP服务器索取IP地址等信息。

第二步:DHCP服务器提供信息

DHCP服务器收到客户端的请求,验证是否来至合法的PXE Client的请求,验证通过它将给客户端一个“提供”响应,这个“提供”响应中包含了为客户端分配的IP地址、pxelinux启动程序(TFTP)位置,以及配置文件所在位置。

第三步:PXE客户端请求下载启动文件

客户端收到服务器的“回应”后,会回应一个帧,以请求传送启动所需文件。这些启动文件包括:pxelinux.0、pxelinux.cfg/default、vmlinuz、initrd.img等文件。

第四步:Boot Server响应客户端请求并传送文件

当服务器收到客户端的请求后,他们之间之后将有更多的信息在客户端与服务器之间作应答, 用以决定启动参数。BootROM 由 TFTP 通讯协议从Boot Server下载启动安装程序所必须的文件(pxelinux.0、pxelinux.cfg/default)。default文件下载完成后,会根据该文件中定义的引导顺序,启动Linux安装程序的引导内核。

第五步:请求下载自动应答文件

客户端通过pxelinux.cfg/default文件成功的引导Linux安装内核后,安装程序首先必须确定你通过什么安装介质来安装linux,如果是通过网络安装(NFS, FTP, HTTP),则会在这个时候初始化网络,并定位安装源位置。或许你会说,刚才PXE不是已经获取过IP地址了吗?为什么现在还需要一次?这是由于PXE获取的是安装用的内核以及安装程序等,而安装程序要获取的是安装系统所需的二进制包以及配置文件。由于它们需要的内容不同造成PXE模块和安装程序是相对独立的,PXE的网络配置并不能传递给安装程序。从而进行两次获取IP地址过程。

接着会读取该文件中指定的自动应答文件ks.cfg所在位置,根据该位置请求下载该文件。

第六步:客户端安装操作系统

将ks.cfg文件下载回来后,通过该文件找到OS Server,并按照该文件的配置请求下载安装过程需要的软件包。

OS Server和客户端建立连接后,将开始传输软件包,客户端将开始安装操作系统。安装完成后,将提示重新引导计算机。这个时候注意,在重新引导的过程中一定要将BIOS修改回从硬盘启动,不然的话又会重复的自动安装操作系统。

在上面介绍中PXE client是需要安装Linux的计算机,TFTP Server、DHCP Server和NFS Server运行在另外一台Linux Server上。Bootstrap文件、配置文件、Linux内核都放置在Linux Server上TFTP服务器的根目录下。而Linux根文件系统存放于NFS Server的共享目录中。

PXE client在工作过程中,需要三个二进制文件:bootstrap、Linux 内核和Linux根文件系统。Bootstrap文件是可执行程序,它向用户提供简单的控制界面,并根据用户的选择,下载合适的Linux内核以及Linux根文件系统。


Cobbler实验环境及目的


Cobbler服务器系统:CentOS 6.6 64位

IP地址:192.168.1.180

需要安装部署的Linux系统:

eth0:IP地址段:192.168.1.230-192.168.1.240


子网掩码:255.255.255.0

网关:192.168.1.1

DNS:172.19.0.5

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

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


服务器基本配置:

操作系统CentOS-6.6-x86_64以Basic Server方式安装

ip及子网掩码:

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

# tail -2 /etc/sysconfig/network-scripts/ifcfg-eth0  

IPADDR=192.168.1.180

NETMASK=255.255.255.0


主机名及网关:

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

# tail -2 /etc/sysconfig/network

HOSTNAME=cobbler_server

GATEWAY=192.168.1.1


dns:

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

# tail -1 /etc/resolv.conf  

nameserver 172.19.0.5


hosts文件

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

# tail -1 /etc/hosts 

192.168.1.180 cobbler_server cobbler


防火墙:

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

# chkconfig iptables off

# chkconfig --list iptables 

iptables       0:off1:off2:off3:off4:off5:off6:off


selinux:

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

# sed -i '/^SELINUX=.*/c SELINUX=disabled' /etc/selinux/config

# sed -i '/^SELINUX=/ s/^SELINUX=.*/SELINUX=disabled/g' /etc/selinux/config

# grep --color=auto '^SELINUX' /etc/selinux/config

SELINUX=disabled

SELINUXTYPE=targeted 

setenforce 0 # 使配置立即生效

这个需要重启机器才能生效,所以建议修改完重启

[root@cobbler ~]# sestatus

SELinux status:                 disabled


Cobbler的安装部署配置

Cobbler安装环境准备

使用前提

1、你有一个DVD或ISO文件,您的操作系统的分布。

2、服务器有足够的本地磁盘的可用空间在/var/www/cobbler 解压缩DVD/ISO。

3、服务器和客户端都有一个共同的IP网络。

4、这个网络上的DHCP服务器是唯一的实例。

5、在此网络上的客户端是支持PXE网络启动。


yum源配置:

对于centos本身源 ,可根据自己所在地选择离自己近的镜像源,比如mirrors.aliyun.com或mirrors.sohu.com

相关配置文件: /etc/yum.repos.d/epel.repo


yum源配置:

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

# cd  /etc/yum.repos.d/

# mkdir backup && mv  CentOS-*  backup

# cat << EOF > epel.repo 

[epel]

name=epel

baseurl=http://mirrors.aliyun.com/epel/6Server/x86_64/

enabled=1

gpgcheck=1

gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-6



[aliyun]

name=aliyun

baseurl=http://mirrors.aliyun.com/centos/6.6/os/x86_64/

enabled=1

gpgcheck=1

gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-6

EOF

# yum clean all ; yum makecache all 



Cobbler下载安装及配置

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

https://cobbler.github.io/ cobbler项目主页,目前最新版为v2.6.9

https://github.com/cobbler/cobbler/releases/tag/v2.6.9 下载地址

# mkdir /root/soft 

# wget -P /root/soft https://codeload.github.com/cobbler/cobbler/tar.gz/v2.6.9

# cd /root/soft

# tar  -xvf v2.6.9 && cd cobbler-2.6.9/

# yum install rpm-build git python-devel redhat-rpm-config  安装生成cobber的rpm包所需的相关的包

# cd cobbler-2.6.9/

# make rpms

# cd rpm-build/

# ls -l

total 2148

drwxr-xr-x  2 root root   4096 Jul 13 12:37 BUILDROOT

drwxr-xr-x 14 root root   4096 Jul 13 12:37 cobbler-2.6.9

-rw-r--r--  1 root root 539816 Jul 13 12:37 cobbler-2.6.9-1.el6.noarch.rpm

-rw-r--r--  1 root root 662548 Jul 13 12:37 cobbler-2.6.9-1.el6.src.rpm

-rw-r--r--  1 root root 654287 Jul 13 12:37 cobbler-2.6.9.tar.gz

-rw-r--r--  1 root root 205864 Jul 13 12:37 cobbler-web-2.6.9-1.el6.noarch.rpm

-rw-r--r--  1 root root 122568 Jul 13 12:37 koan-2.6.9-1.el6.noarch.rpm


相看cobbler-2.6.9-1.el6.noarch.rpm依赖的包

yum deplist  cobbler-2.6.9-1.el6.noarch.rpm

只要配置了以上两个yum源除PyYAML包之外的所有安装cobbler-2.6.9-1.el6.noarch.rpm所需要的包都会自动安装

如果没有安装PyYAML会得到以下错误:

Error: Package: cobbler-2.6.9-1.el6.noarch (/cobbler-2.6.9-1.el6.noarch)

           Requires: PyYAML


wget ftp://ftp.is.co.za/mirror/fedora.redhat.com/epel/6/x86_64/PyYAML-3.10-3.el6.x86_64.rpm

yum localinstall PyYAML-3.10-3.el6.x86_64.rpm

yum localinstall cobbler-2.6.9-1.el6.noarch.rpm

yum localinstall cobbler-web-2.6.9-1.el6.noarch.rpm


在使用repository作为yum仓库的时候需要用到一个文件服务器(http,ftp,nfs),cobbler默认使用的是http,注意在安装cobbler的时候会默认安装httpd服务并在/var/www目录下生成一个cobbler目录

cobbler的目录结构:

wKioL1Wpna2jX77KAADPm6F3YBY093.jpg


安装cobbler相关的包

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

额外需要的服务还有httpd rsync tftp-server xinetd,dhcp,如果系统没有装上的话,可以执行以下命令安装

yum  install tftp-server xinetd  dhcp  httpd  rsync


安装运行cobbler需要的软件包(这些包都在epel有)

yum  install  pykickstart  debmirror  python-ctypes   cman


根据需要来,如果要部署 debian/ubuntu 系统需要 debmirror 软件包;

想使用电源管理功能的话需要安装 cman 或fence-agents;我的测试环境不需要bind,就没有安装


配置Cobbler

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

1. 设置http服务

配置httpd配置文件

# vim /etc/httpd/conf/httpd.conf 

ServerName 192.168.1.104:80


2. 启用wsgi模块

需要确认mod_wsgi已经正确安装,否则需要手动安装

启用wsgi模块只需要取消 /etc/httpd/conf.d/wsgi.conf 文件中

LoadModule wsgi_module modules/mod_wsgi.so 行的注释

sed -i 's*#LoadModule*LoadModule*g' /etc/httpd/conf.d/wsgi.conf


3. 配置tftp与rsync

修改 rsync 和 tftp 这两个服务的 xinetd 配置,只需修改 rsync 和tftp的配置文件,

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

# sed -i   '/disable/c \\tdisable \t\t= no' /etc/xinetd.d/tftp 或chkconfig tftp on

# grep --color=auto '^[[:blank:]]*disable' /etc/xinetd.d/tftp 

# sed -i -e 's/= yes/= no/g' /etc/xinetd.d/rsync   或# chkconfig rsync on

# grep --color=auto '.*disable' /etc/xinetd.d/rsync 

# service xinetd restart


4. 配置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.1.180/g' /etc/cobbler/settings

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


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

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

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


防止误重装系统

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

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

# grep '^pxe_just_once' /etc/cobbler/setting



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


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

替换 default_password_crypted 字段


# openssl passwd -1 -salt 'random-phrase-here' 'oracle'

$1$random-p$WbZ3JxhRzCS/1Ne4S9g4Z.

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

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


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

# vi /etc/cobbler/settings

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

default_password_crypted: "$1$random-p$WbZ3JxhRzCS/1Ne4S9g4Z."




5. Cobbler管理rsync

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

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

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



6. 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


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

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

# 需要修改192.168.1.0为自己网段

subnet 192.168.1.0 netmask 255.255.255.0 {

     option routers             192.168.1.1;   # 修改自己的路由

     option domain-name-servers 172.19.0.5;    # 域名服务器地址

     option subnet-mask         255.255.255.0; # 子网掩码

     range dynamic-bootp        192.168.1.230 192.168.1.240;  # 设置dhcp服务器IP地址租用的范围

     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";

          }

     }


}

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


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

#vi /etc/sysconfig/dhcpd

修改内容如下:

#Command line options here DHCPDARGS=eth0

DHCPDARGS=eth0

 

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

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



设置debmirror

注释掉@dists和@arches的行

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

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



Cobbler 子命令介绍

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

cobbler check          #检查cobbler配置

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

cobbler list              #列出所有的cobbler元素

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

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

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

cobbler profile         #查看配置信息

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

cobbler reposync       #同步yum仓库到本地

cobbler signature update

cobbler --help           #获得cobbler的帮助 

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



下载引导操作系统文件

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

加载部分缺失的网络boot-loaders

# cobbler get-loaders


如果没有启动httpd服务在执行cobbler get-loaders命令时会得到以下错误:

# cobbler get-loaders

httpd does not appear to be running and proxying cobbler, or SELinux is in the way. Original traceback:

Traceback (most recent call last)


检查Cobbler配置

下载引导操作系统文件

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

# cobbler check


重启cobbler和更新相关配置

重启服务

# service cobblerd restart


查看cobbler监听的端口:

# ss -tnulp | grep cobbler

tcp   LISTEN   0  5  127.0.0.1:25151   *:*     users:(("cobblerd",4336,8))





同步最新cobbler配置,它会根据配置自动修改dhcp,bind 等服务,因此我称之为容器的原因。

cobbler sync # 同步配置文件到dhcp服务器

# cobbler sync


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

下载引导操作系统文件

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

chkconfig httpd on 

chkconfig xinetd on 

chkconfig cobblerd on

chkconfig dhcpd on

/etc/init.d/httpd restart

/etc/init.d/xinetd restart

/etc/init.d/cobblerd restart

/etc/init.d/dhcpd restart


设置Cobbler相关服务启动脚本(以上功能也可以使用以下脚本一次完成)

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

cat << EOF > /etc/rc.d/init.d/cobbler

#!/bin/sh

# chkconfig: - 80 90

# description:cobbler

 

case  $1  in

 

start)

/etc/init.d/httpd start

/etc/init.d/xinetd start

/etc/init.d/dhcpd start

/etc/init.d/cobblerd start

;;

 

stop)

/etc/init.d/httpd stop

/etc/init.d/xinetd stop

/etc/init.d/dhcpd stop

/etc/init.d/cobblerd stop

;;

 

restart)

/etc/init.d/httpd restart

/etc/init.d/xinetd restart

/etc/init.d/dhcpd restart

/etc/init.d/cobblerd restart

;;

 

status)

/etc/init.d/httpd status

/etc/init.d/xinetd status

/etc/init.d/dhcpd status

/etc/init.d/cobblerd status

;;

 

sync)

cobbler sync

;;

*)

 

echo "Input error,please in put 'start|stop|restart|status|sync'!";

exit 2>&1 >/dev/null &

;;

esac

EOF

 

chmod +x /etc/rc.d/init.d/cobbler  #添加脚本执行权限

chkconfig cobbler on  #添加开机启动

service cobbler  restart  #重启cobbler


Cobbler的Web管理界面的安装与配置

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

1.用web 界面进行管理Cobbler是一个非常简便的方法, 只需要安装cobbler_web 软件包即可


2.设置cobbler web登陆,用户登陆密码

为cobbler添加cobbler用户,并设置密码

htdigest /etc/cobbler/users.digest "Cobbler" cobbler # 添加cobbler用户,提示输入2遍密码确认


3. 配置cobbler web 登录认证

vim /etc/cobbler/modules.conf

修改authentication 部分中的module,修改后如下:

module = authn_configfile # 修改认证方式为密码文件类型

命令自动修改

sed -i 's/authn_denyall/authn_configfile/g' /etc/cobbler/modules.conf


4. 同步cobbler

# cobbler sync    /输出*** TASK COMPLETE *** 表示配置无错误


5. 重启cobbler 与http 

# /etc/init.d/httpd restart

# /etc/init.d/cobblerd restart

service  cobbler restart 


也可以使用pam认证:

  1. 在/etc/cobbler/modules.conf文件中修改认证方式为authn_pam 

    module = authn_pam


2. 新加用户 

useradd cobbleradmin 

passwd cobbleradmin


3. 在/etc/cobbler/users.conf文件中把新加的用户加入cobbler管理员组

[admins]

admin = "cobbleradmin"

 


6. 访问web页面: https://192.168.21.128/cobbler_web 使用刚才创建的用户登录,密码就是上面设置的。

wKiom1WjWRmiWEULAADRXy2KspI660.jpg


Cobbler的使用

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

1.导入系统镜像到Cobbler

从DVD中导入客户端的OS。这将自动设置为“x86_64”,并将其命名为CentOS-6.6

{注:这需要一点时间,不要急。可查看/var/www/cobbler/ks_mirror/CentOS-6.6-x86_64/目录文件生成情况。}

# mount -t iso9660 -o loop /dev/cdrom /mnt

cobbler import --path=/mnt --name=CentOS-6.6 --arch=x86_64  #导入系统镜像文件,需要一段时间

 

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

参数说明: 

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

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


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

本例导入成功后,安装源的唯一标示就是:centos6.6 ,如果重复,系统会提示导入失败,其它命令可通过cobbler –help来进行查看。如果需要更多的参数定制,

也可以查看官方文档: man cobbler ,然后查找 import 的配置,可以使用另外一个命令: cobbler distro。


从上面显示信息所知,cobbler会将镜像中的所有安装文件拷贝到本地一份,放在/var/www/cobbler/ks_mirrors下的centos6.6目录下。

同时会创建一个名字为centos6.6的一个发布版本,以及一个名字为centos6.6的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.6-x86_64/

# du -sh /mnt


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

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

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

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



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

注意:这是关键步骤之一

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

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


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


官网的文档在此:

CentOS5 的 (网上大多是这个系列的) : http://www.centos.org/docs/5/html/Installation_Guide-en-US/s1-kickstart2-options.html


CentOS6 的 (能看到的配置案例很少) : https://access.redhat.com/knowledge/docs/en-US/Red_Hat_Enterprise_Linux/6/html/Installation_Guide/s1-kickstart2-options.html


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

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

cd /var/lib/cobbler/kickstarts  #进入默认Kickstart模板目录

vi /var/lib/cobbler/kickstarts/CentOS-6.6-x86_64.ks  #创建CentOS-6.5-x86_64安装脚本

cat /var/lib/cobbler/kickstarts/CentOS-6.6-x86_64.ks

#platform=x86, AMD64, or Intel EM64T

# System authorization information

auth  --useshadow  --enablemd5

# System bootloader configuration

bootloader --location=mbr

# Partition clearing information

clearpart --all --initlabel

#Partition information

part /boot --fstype="ext4" --size=200

part / --fstype="ext4" --size=10000

part /data --fstype="ext4" --size=6000

part swap --fstype="swap" --size=409


  

# Use text mode install

text

  

# key

key --skip

# Firewall configuration

firewall --disable

# 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')

#network --bootproto=dhcp   --device=em1

# 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   Asia/Shanghai

# Install OS instead of upgrade

install

# Clear the Master Boot Record

zerombr

  

%packages

@ base

@ core

e2fsprogs

-ckermit

grub

-bluez-pin

-firstboot

-rhgb

-zsh

kernel-devel

-OpenIPMI-tools

-xdelta

net-snmp

sysstat

lslk

-nmap

kernel

-synaptics

control-center

libaio

compat-libstdc++-33

subversion

  

%pre

$SNIPPET('log_ks_pre')

$SNIPPET('kickstart_start')

$SNIPPET('pre_install_network_config')

# Enable installation monitoring

$SNIPPET('pre_anamon')


示例二:

#cat ks.cfg  

#platform=x86, AMD64,  or Intel EM64T

#version=DEVEL

# Firewall configuration

firewall --disabled

# SELinux configuration

selinux --disabled

# Install OS instead of upgrade

install

# Use network installation

url --url="http://192.168.1.230/cobbler/ks_mirror/CentOS-6.6-x86_64"

# Root password

rootpw --iscrypted $1$N7fw01zf$FN08P4pNKGysYlktuGpdr.

# System authorization information

auth  --useshadow  --passalgo=sha512

# Use text mode install

text

firstboot --disable

# System keyboard

keyboard us

# System language

lang en_US

# SELinux configuration

selinux --enforcing

# Installation logging level

logging --level=info

# Reboot after installation

reboot

# System timezone

timezone  Asia/Shanghai 

# Network information

network  --bootproto=dhcp --device=eth0 --onboot=on

# System bootloader configuration

bootloader --location=mbr

# Clear the Master Boot Record

zerombr

# Partition clearing information

clearpart --all --initlabel 

# Disk partitioning information

part /boot --asprimary --fstype="ext4" --size=200

part / --asprimary --fstype="ext4" --size=20000

part /tmp --fstype="ext4" --size=10000

part swap --fstype="swap" --size=4096

%packages

@core

@development

%end



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


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

# ksvalidator  ks.cfg 



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

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

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

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


例如:CentOS-6.6-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查看

 

再次执行cobbler check 检查下配置

 

#查看Cobbler列表

cobbler list

cobbler report

cobbler profile report

cobbler distro list # 查看导入列表

 

#通过profile查找对应的kickstart自动安装文件

例如:

ksfile=$( cobbler profile report --name  CentOS-6.5-x86_64|grep -E '^Kickstart' |head -n 1|cut -d ':' -f 2 );

cat $ksfile;




重复上面的操作,把其他的系统镜像文件和kickstart自动安装文件关联起来


注意:

1、kickstart自动安装文件需要预先配置好

2、每次修改完配置文件,需要执行一次同步操作:cobbler sync 配置才能生效

3、kickstart自动安装文件可以用工具生成(需要用到图形界面操作)

yum  install system-config-kickstart #安装

yum groupinstall "X Window System" #安装X Window图形界面

system-config-kickstart #运行kickstart配置

service  cobbler  sync  #与cobbler sync作用相同

service  cobbler  restart  #重启cobbler


cobbler import --name=CentOS_7.1 --path=/mnt/ --arch=x86_64 

cobbler profile report --name CentOS_7.1-x86_64

cobbler profile edit --name=CentOS_7.1-x86_64 --distro=CentOS_7.1-x86_64 --kickstart=/var/lib/cobbler/kickstarts/CentOS-7.1-x86_64.ks 


在使用bobbler profile add添加配置文件以后使用cobbler sync同步,其实是把刚才配置的改变写入

/var/lib/tftpboot/pxelinux.cfg/default

如:

# cobbler  profile add  --name=centos-6.6-x86_64-basic --distro=CentOS-6.6-x86_64 --kickstart=/var/lib/cobbler/kickstarts/ks.cf


/var/lib/tftpboot/pxelinux.cfg/default的文件见容如下: 

# cat /var/lib/tftpboot/pxelinux.cfg/default 

DEFAULT menu

PROMPT 0

MENU TITLE Cobbler | http://cobbler.github.com

TIMEOUT 200

TOTALTIMEOUT 6000

ONTIMEOUT local


LABEL local

        MENU LABEL (local)

        MENU DEFAULT

        LOCALBOOT -1


LABEL CentOS-6.6-x86_64

        kernel /p_w_picpaths/CentOS-6.6-x86_64/vmlinuz

        MENU LABEL CentOS-6.6-x86_64

        append initrd=/p_w_picpaths/CentOS-6.6-x86_64/initrd.img ksdevice=bootif lang=  kssendmac text  ks=http://192.168.1.230/cblr/svc/op/ks/profile/CentOS-6.6-x86_64

        ipappend 2


LABEL centos-6.6-x86_64-basic

        kernel /p_w_picpaths/CentOS-6.6-x86_64/vmlinuz

        MENU LABEL centos-6.6-x86_64-basic

        append initrd=/p_w_picpaths/CentOS-6.6-x86_64/initrd.img ksdevice=bootif lang=  kssendmac text  ks=http://192.168.1.230/cblr/svc/op/ks/profile/centos-6.6-x86_64-basic

        ipappend 2




为Cobbler添加RPM仓库


命令行下操作,添加epel和epel-test的repo

把repo添加到profle

cobbler repo add --mirror=http://mirrors.ustc.edu.cn/epel/6/x86_64/ --name=epel6-x86_64 --arch=x86_64 --breed=yum

cobbler repo add --mirror=http://mirrors.ustc.edu.cn/epel/testing/6/x86_64/ --name=epel6-x86_64-testing --arch=x86_64 --breed=yum


这个只是对centos有效,如果你吧repo添加到profle,他会自动添加到节点上的repo上,指向内网,非常方便。

# cobbler profile edit --name=CentOS-6.6-x86_64 --repos="epel6-x86_64"



这个时候,就需要同步epel的源到本地,考验你的网络速度

cobbler reposync

也可以通过设置–mirror-locally=0不下载到本地,而通过kickstart server去仓库下载rpm包

我内网已经有,所以就直接同步就可以

rsync -avlH root@10.1.199.11

:/var/www/cobbler/repo_mirror/ /var/www/cobbler/repo_mirror


另外还有两个源,你可以考虑使用 centos update和centos plus


同步Cobbler配置


获取上述所有配置的cobbler(包括启动DHCP等)


cobbler sync

cobbler会自动进行初始化工作,移除已经存在的启动项,然后根据模板拷贝loader文件。之后再生成pxe的配置文件,生成dhcp的配置文件,最后再重启dhcp服务。

注:每次更改Kickstart 配置文件,都需要使用cobbler sync重新同步所有配置


到目前为止,全部的准备工作已经算全部完成,接下来要做的就是启动服务了。在之前的调试过程中,很多服务已经启动过了,这里只需要启动xinetd服务即可:


/etc/init.d/xinetd start

至此,就可以使用虚拟机来测试Cobbler安装了


添加指定客户机系统配置到Cobbler


1. 指定一个网段使用特定的装机配置


cobbler system add --name=test_000 --ip=192.168.1.0/24 --profile=CentOS-5.9-x86_64

2. 添加一个指定服务器的装机配置

指定服务器的mac地址,并设置好主机名、IP地址等信息,需要提示知道服务器MAC地址,根据MAC应用到具体机器上。


还可以指定ks参数。–kickstart=/var/lib/cobbler/kickstarts/webserver.ks


cobbler system add --name=test_001 --hostname=test_001 --mac=00:0C:29:E3:81:32 --interface=eth0 --ip-address=192.168.1.123 --subnet=255.255.255.0 --gateway=192.168.1.1 --static=1 --profile=Centos-5.9-x86_64

3. 修改system配置

机器IP地址变更为192.168.21.118


cobbler system add --name=test_001 --ip=192.168.21.118

变更system配置名称


cobbler system rename --name=test001 --newname=abc

4. 删除system配置

需要删除的profile名称为test_001


cobbler system remove --name=test_001

5. 查看定义的系统列表


cobbler system list

test_001

设置好后,需要执行排错和同步


cobbler check

cobbler sync



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 setting report

cobbler setting report [--name=option]

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

命令来动态修改cobbler配置
命令用法参考:CentOS6.5安装和配置Cobbler 2.4:http://www.chenshake.com/centos6-4-installation-and-configuration-cobbler-2-4/


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