Total Pageviews

Monday, 1 August 2016

Cobbler是一个自动化和简化安装Linux系统的工具


Cobbler是一个自动化和简化安装Linux系统的工具,通过使用网络引导来控制和启动安装。Cobbler的特性包括存储库镜像、Kickstart模板和连接电源管理系统。使用Cobbler之前需要先了解下PXE和Kickstart的基本原理,文章包含了Cobbler工作原理和Cobbler部署实践两部分内容,交叉关联性的内容还是蛮多的,遇到报错也不要怕,都会一步一步解决的。
使用Cobbler轻松设置和管理网络安装环境
Cobbler工作原理
Cobbler由Python语言开发,是对PXE和Kickstart以及DHCP的封装。融合很多特性,提供了CLI和Web的管理形式。更加方便的实行网络安装。同时,Cobbler也提供了API接口,使用其它语言也很容易做扩展。它不紧可以安装物理机,同时也支持kvm、xen虚拟化、Guest OS的安装。更多的是它还能结合Puppet等集中化管理软件,实现自动化的管理。
Cobbler 支持众多的发行版:Red Hat、Fedora、CentOS、Debian、Ubuntu 和 SuSE。当添加一个操作系统(通常通过使用 ISO 文件)时,Cobbler 知道如何解压缩合适的文件并调整网络服务,以正确引导机器。Cobbler 使用命令行方式管理,也提供了基于Web的图形化配置管理工具(cobbler-web)。通过配置cobbler自动部署DHCP、TFTP、HTTP,在安装过程中加载kiskstart无人值守安装应答文件实现无人值守。从客户端使用PXE引导启动安装。
Server端
第一步,启动Cobbler服务
第二步,进行Cobbler错误检查,执行cobbler check命令
第三步,进行配置同步,执行cobbler sync命令
第四步,复制相关启动文件文件到TFTP目录中
第五步,启动DHCP服务,提供地址分配
第六步,DHCP服务分配IP地址
第七步,TFTP传输启动文件
第八步,Server端接收安装信息
第九步,Server端发送ISO镜像与Kickstart文件
Client端
第一步,客户端以PXE模式启动
第二步,客户端获取IP地址
第三步,通过TFTP服务器获取启动文件
第四步,进入Cobbler安装选择界面
第五步,客户端确定加载信息
第六步,根据配置信息准备安装系统
第七步,加载Kickstart文件
第八步,传输系统安装的其它文件
第九步,进行安装系统
Cobbler部署实践
    
#设置YUM源
cd /etc/yum.repo.d/
vi epel.repo

[epel]
name=Extra Packages for Enterprise Linux 6 - $basearch
baseurl=http://download.fedoraproject.org/pub/epel/6/$basearch
#mirrorlist=https://mirrors.fedoraproject.org/metalink?repo=epel-6&arch=$basearch
failovermethod=priority
enabled=1
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-EPEL-6

[epel-debuginfo]
name=Extra Packages for Enterprise Linux 6 - $basearch - Debug
baseurl=http://download.fedoraproject.org/pub/epel/6/$basearch/debug
#mirrorlist=https://mirrors.fedoraproject.org/metalink?repo=epel-debug-6&arch=$basearch
failovermethod=priority
enabled=0
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-EPEL-6
gpgcheck=1

[epel-source]
name=Extra Packages for Enterprise Linux 6 - $basearch - Source
baseurl=http://download.fedoraproject.org/pub/epel/6/SRPMS
#mirrorlist=https://mirrors.fedoraproject.org/metalink?repo=epel-source-6&arch=$basearch
failovermethod=priority
enabled=0
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-EPEL-6
gpgcheck=1


#导入GPG key
sudo rpm --import http://mirrors.ustc.edu.cn/centos/RPM-GPG-KEY-CentOS-6

#修改repo文件添加CentOS 6.X的YUM源
cd /etc/yum.repos.d/
cp rhel-source.repo rhel-source.repo.bak
vi rhel-source.repo

[base]
name=CentOS-$releasever-Base
baseurl=http://centos.ustc.edu.cn/centos/6/os/x86_64/
gpgcheck=1
gpgkey=http://mirrors.ustc.edu.cn/centos/RPM-GPG-KEY-CentOS-6

[updates]
name=CentOS-$releasever-Updates
baseurl=http://centos.ustc.edu.cn/centos/6/os/x86_64/
gpgcheck=1
gpgkey=http://mirrors.ustc.edu.cn/centos/RPM-GPG-KEY-CentOS-6

[extras]
name=CentOS-$releasever-Extras
baseurl=http://centos.ustc.edu.cn/centos/6/os/x86_64/
gpgcheck=1
gpgkey=http://mirrors.ustc.edu.cn/centos/RPM-GPG-KEY-CentOS-6

[centosplus]
name=CentOS-$releasever-Plus
baseurl=http://centos.ustc.edu.cn/centos/6/os/x86_64/
gpgcheck=1

#清除缓存查看是否生效
yum clean all
yum makecache
yum repolist

#直接cobbler关联依赖包
yum install cobbler cobbler-web httpd rsync tftp-server xinetd dhcp python-ctypes debmirror pykickstart cman fence-agents dnsmasq

#使用yum-plugin-downloadonly插件
yum install -y yum-plugin-downloadonly
yum install --downloadonly --downloaddir=/tmp/cobbler cobbler cobbler-web httpd rsync tftp-server xinetd dhcp python-ctypes debmirror pykickstart cman fence-agents dnsmasq

#必要服务
(1)cobbler      (cobbler的核心)
(2)httpd        (提供cobbler的web界面)
(3)dhcpd        (为自动安装系统分配IP地址)
(4)epel-release (为之提供yum源)
(5)rsync        (cobbler需要同步信息)
(6)cobbler-web  (cobbler的一个web插件)
(7)xinetd       (为rsync和tftp的守护进程)
(8)tftp         (传送安装的一些文件的类似ftp)

#检查cobbler配置,常见错误如下
cobbler check

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

1.编辑/etc/cobbler/settings文件,找到 server选项,修改为本机IP即可
2.编辑/etc/cobbler/settings文件,找到 next_server选项,修改为本机IP即可
3.SELinux的设置, 如果上面已经关闭了SELinux就不用管了
4.执行 cobbler get-loaders,系统将自动下载loader程序,完成提示4的修复工作。
5.编辑/etc/xinetd.d/tftp文件,将文件中的disable字段的配置由yes改为no
6.编辑/etc/xinetd.d/rsync文件,将文件中的disable字段的配置由yes改为no
7.在iptables中将69,80,25151端口打开。如果仅仅只是在内部环境中使用,建议直接将防火墙关掉
8.提示说debmirror没安装。如果不是安装 debian之类的系统,此提示可以忽略
9.修改cobbler用户的默认密码,可以使用如下命令生成密码,并使用生成后的密码替换/etc/cobbler/settings中的密码。生成密码命令:openssl passwd -1 -salt 'random-phrase-here' 'your-password-here'其中“random-phrase-here”为任意字符
10.安装cman或者fence-agents


#关闭selinux/iptables
sed -i '/SELINUX/s/enforcing/disabled/' /etc/selinux/config
setenforce 0
chkconfig iptables off
service iptables stop

#设置tftp服务和rsync服务
sed -i '/disable/c\\tdisable\t\t\t= no' /etc/xinetd.d/tftp
sed -i -e 's/\=\ yes/\=\ no/g' /etc/xinetd.d/rsync

#设置DHCP server的IP
sed -i 's/next_server: 127.0.0.1/next_server: 172.28.70.245/g' /etc/cobbler/settings  

#设置cobbler的IP
sed -i 's/server: 127.0.0.1/server: 172.28.70.245/g' /etc/cobbler/settings  

#设置Cobbler管理rsync
sed -i 's/manage_rsync: 0/manage_rsync: 1/g' /etc/cobbler/settings  

#设置Cobbler管理DHCP
sed -i 's/manage_dhcp: 0/manage_dhcp: 1/g' /etc/cobbler/settings

#设置Cobbler一次安装开关(可选)
sed -i 's/pxe_just_once: 0/pxe_just_once: 1/g' /etc/cobbler/settings

#设置Cobbler管理DNS(可选)
sed -i 's/manage_dns: 0/manage_dns: 1/g' /etc/cobbler/settings

#开启动态更新(可选)
sed -i 's/allow_dynamic_settings: 0/allow_dynamic_settings: 1/g' /etc/cobbler/settings

#设置debmirror
sed -i -e 's/@dists=/#@dists=/g' /etc/debmirror.conf
sed -i -e 's/@arches=/#@arches=/g' /etc/debmirror.conf

#编辑dnsmasq.template中dhcp-range部分
#vi /etc/cobbler/dnsmasq.template
vi /etc/dnsmasq.conf

# Cobbler generated configuration file for dnsmasq
# $date
#

# resolve.conf .. ?
#no-poll
#enable-dbus
read-ethers
addn-hosts = /var/lib/cobbler/cobbler_hosts

dhcp-range=172.28.70.246,172.28.70.250
dhcp-option=3,$next_server
dhcp-lease-max=1000
dhcp-authoritative
dhcp-boot=pxelinux.0
dhcp-boot=net:normalarch,pxelinux.0
dhcp-boot=net:ia64,$elilo

#重启dnsmasq
/etc/init.d/dnsmasq restart

#编辑dhcp.template
cp /etc/cobbler/dhcp.template /etc/cobbler/dhcp.template.bak
vi /etc/cobbler/dhcp.template

# ******************************************************************
# Cobbler managed dhcpd.conf file
#
# generated from cobbler dhcp.conf template ($date)
# Do NOT make changes to /etc/dhcpd.conf. Instead, make your changes
# in /etc/cobbler/dhcp.template, as /etc/dhcpd.conf will be
# overwritten.
#
# ******************************************************************

ddns-update-style interim;

allow booting;
allow bootp;

ignore client-updates;
set vendorclass = option vendor-class-identifier;

option pxe-system-type code 93 = unsigned integer 16;

subnet 172.28.70.0 netmask 255.255.255.0 {
     option routers             172.28.70.254;
     option domain-name-servers 172.28.70.254;
     option subnet-mask         255.255.255.0;
     range dynamic-bootp        172.28.70.246 172.28.70.250;
     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";
          }
     }

}

#for dhcp_tag in $dhcp_tags.keys():
    ## group could be subnet if your dhcp tags line up with your subnets
    ## or really any valid dhcpd.conf construct ... if you only use the
    ## default dhcp tag in cobbler, the group block can be deleted for a
    ## flat configuration
# group for Cobbler DHCP tag: $dhcp_tag
group {
        #for mac in $dhcp_tags[$dhcp_tag].keys():
            #set iface = $dhcp_tags[$dhcp_tag][$mac]
    host $iface.name {
        hardware ethernet $mac;
        #if $iface.ip_address:
        fixed-address $iface.ip_address;
        #end if
        #if $iface.hostname:
        option host-name "$iface.hostname";
        #end if
        #if $iface.netmask:
        option subnet-mask $iface.netmask;
        #end if
        #if $iface.gateway:
        option routers $iface.gateway;
        #end if
        #if $iface.enable_gpxe:
        if exists user-class and option user-class = "gPXE" {
            filename "http://$cobbler_server/cblr/svc/op/gpxe/system/$iface.owner";
        } else if exists user-class and option user-class = "iPXE" {
            filename "http://$cobbler_server/cblr/svc/op/gpxe/system/$iface.owner";
        } else {
            filename "undionly.kpxe";
        }
        #else
        filename "$iface.filename";
        #end if
        ## Cobbler defaults to $next_server, but some users
        ## may like to use $iface.system.server for proxied setups
        next-server $next_server;
        ## next-server $iface.next_server;
    }
        #end for
}
#end for

#将dns和dhcp的管理引擎都配置为dnsmasq,修改/etc/cobbler/modules.conf
vi /etc/cobbler/modules.conf

[authentication]
module = authn_configfile
[dns]
module = manage_dnsmasq
[dhcp]
module = manage_dnsmasq

#修改httpd配置并启动
vi /etc/httpd/conf/httpd.conf

ServerName 127.0.0.1:80

/etc/init.d/httpd restart

#设置目标系统root密码,这个设置只对CentOS/RHEL有效
PASSWORD="`echo "admin123" | openssl passwd -1 -salt 'root' –stdin`"
sed -i s@"^default_password_crypted.*$"@"default_password_crypted: \"$PASSWORD\""@g /etc/cobbler/settings
***
default_password_crypted: "$1$cobbler$k/5ITeQUOffuOujzEvhjY."
***

#下载启动菜单,启动报错请尝试service cobblerd restart
cobbler get-loaders

cobbler@root#cobbler get-loaders
task started: 2016-04-11_092911_get_loaders
task started (id=Download Bootloader Content, time=Mon Apr 11 09:29:11 2016)
downloading http://cobbler.github.io/loaders/README to /var/lib/cobbler/loaders/README
downloading http://cobbler.github.io/loaders/COPYING.elilo to /var/lib/cobbler/loaders/COPYING.elilo
downloading http://cobbler.github.io/loaders/COPYING.yaboot to /var/lib/cobbler/loaders/COPYING.yaboot
downloading http://cobbler.github.io/loaders/COPYING.syslinux to /var/lib/cobbler/loaders/COPYING.syslinux
downloading http://cobbler.github.io/loaders/elilo-3.8-ia64.efi to /var/lib/cobbler/loaders/elilo-ia64.efi
downloading http://cobbler.github.io/loaders/yaboot-1.3.17 to /var/lib/cobbler/loaders/yaboot
downloading http://cobbler.github.io/loaders/pxelinux.0-3.86 to /var/lib/cobbler/loaders/pxelinux.0
downloading http://cobbler.github.io/loaders/menu.c32-3.86 to /var/lib/cobbler/loaders/menu.c32
downloading http://cobbler.github.io/loaders/grub-0.97-x86.efi to /var/lib/cobbler/loaders/grub-x86.efi
downloading http://cobbler.github.io/loaders/grub-0.97-x86_64.efi to /var/lib/cobbler/loaders/grub-x86_64.efi
*** TASK COMPLETE ***

#重启相关服务并配置自动启动
chkconfig cobblerd on  
chkconfig httpd on
chkconfig xinetd on
chkconfig dnsmasq on

service httpd restart  
service xinetd restart  
service dnsmasq restart
service cobblerd restart  


#检查并同步cobbler配置,如果有如下报错确认文件存在可以忽略
cobbler@ZJ/etc/cobbler#cobbler check
The following are potential configuration items that you may want to fix:

1 : file /etc/xinetd.d/rsync does not exist

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

cobbler@ZJ/etc/cobbler#cobbler sync
task started: 2016-04-11_170138_sync
task started (id=Sync, time=Mon Apr 11 17:01:38 2016)
running pre-sync triggers
cleaning trees
removing: /var/lib/tftpboot/grub/images
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 /usr/share/syslinux/memdisk -> /var/lib/tftpboot/memdisk
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 images
generating PXE configuration files
generating PXE menu structure
rendering DHCP files
rendering DNS files
rendering TFTPD files
generating /etc/xinetd.d/tftp
cleaning link caches
rendering Rsync files
running post-sync triggers
running python triggers from /var/lib/cobbler/triggers/sync/post/*
running python trigger cobbler.modules.sync_post_restart_services
running: service dnsmasq restart
received on stdout: Shutting down dnsmasq: [  OK  ]
Starting dnsmasq: [  OK  ]

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 setting report
cobbler setting report [--name=option]

allow_duplicate_hostnames               : 0
allow_duplicate_ips                     : 0
allow_duplicate_macs                    : 0
allow_dynamic_settings                  : 1
always_write_dhcp_entries               : 0
anamon_enabled                          : 0
auth_token_expiration                   : 3600
authn_pam_service                       : login
bind_chroot_path                        :
bind_master                             : 127.0.0.1
build_reporting_email                   : ['root@localhost']
build_reporting_enabled                 : 0
build_reporting_ignorelist              : ['']
build_reporting_sender                  :
build_reporting_smtp_server             : localhost
build_reporting_subject                 :
build_reporting_to_address              :
buildisodir                             : /var/cache/cobbler/buildiso
cheetah_import_whitelist                : ['random', 're', 'time']
client_use_https                        : 0
client_use_localhost                    : 0
cobbler_master                          :
consoles                                : /var/consoles
createrepo_flags                        : -c cache -s sha
default_deployment_method               : ssh
default_kickstart                       : /var/lib/cobbler/kickstarts/default.ks
default_name_servers                    : []
default_name_servers_search             : []
default_ownership                       : ['admin']
default_password_crypted                : $1$root$JX8M6OcOn.pjk0pHdnG0y0
default_template_type                   : cheetah
default_virt_bridge                     : xenbr0
default_virt_disk_driver                : raw
default_virt_file_size                  : 5
default_virt_ram                        : 512
default_virt_type                       : xenpv
enable_gpxe                             : 0
enable_menu                             : 1
func_auto_setup                         : 0
func_master                             : overlord.example.org
http_port                               : 80
isc_set_host_name                       : 0
iso_template_dir                        : /etc/cobbler/iso
kerberos_realm                          : EXAMPLE.COM
kernel_options                          : {'ksdevice': 'bootif', 'lang': ' ', 'text': '~'}
kernel_options_s390x                    : {'vnc': '~', 'ip': False, 'RUNKS': 1, 'ramdisk_size': 40000, 'ro': '~', 'root': '/dev/ram0'}
ldap_anonymous_bind                     : 1
ldap_base_dn                            : DC=example,DC=com
ldap_management_default_type            : authconfig
ldap_port                               : 389
ldap_search_bind_dn                     :
ldap_search_passwd                      :
ldap_search_prefix                      : uid=
ldap_server                             : ldap.example.com
ldap_tls                                : 1
ldap_tls_cacertfile                     :
ldap_tls_certfile                       :
ldap_tls_keyfile                        :
manage_dhcp                             : 1
manage_dns                              : 1
manage_forward_zones                    : []
manage_reverse_zones                    : []
manage_rsync                            : 1
manage_tftp                             : 1
manage_tftpd                            : 1
mgmt_classes                            : []
mgmt_parameters                         : {'from_cobbler': 1}
next_server                             : 172.28.70.245
power_management_default_type           : ipmitool
power_template_dir                      : /etc/cobbler/power
proxy_url_ext                           :
proxy_url_int                           :
puppet_auto_setup                       : 0
puppet_parameterized_classes            : 1
puppet_server                           : puppet
puppet_version                          : 2
puppetca_path                           : /usr/bin/puppet
pxe_just_once                           : 1
pxe_template_dir                        : /etc/cobbler/pxe
redhat_management_key                   :
redhat_management_permissive            : 0
redhat_management_server                : xmlrpc.rhn.redhat.com
redhat_management_type                  : off
register_new_installs                   : 0
remove_old_puppet_certs_automatically   : 0
replicate_repo_rsync_options            : -avzH
replicate_rsync_options                 : -avzH
reposync_flags                          : -l -n -d
restart_dhcp                            : 1
restart_dns                             : 1
restart_xinetd                          : 1
run_install_triggers                    : 1
scm_track_enabled                       : 0
scm_track_mode                          : git
serializer_pretty_json                  : 0
server                                  : 172.28.70.245
sign_puppet_certs_automatically         : 0
signature_path                          : /var/lib/cobbler/distro_signatures.json
signature_url                           : http://cobbler.github.io/signatures/2.6.x/latest.json
snippetsdir                             : /var/lib/cobbler/snippets
template_remote_kickstarts              : 0
virt_auto_boot                          : 1
webdir                                  : /var/www/cobbler
xmlrpc_port                             : 25151
yum_distro_priority                     : 1
yum_post_install_mirror                 : 1
yumdownloader_flags                     : --resolve

#修改seting文件cobbler登陆服务器地址
cobbler setting edit --name=server --value=172.28.0.1
#ks脚本关闭pxe,这样就不会重复安装
cobbler setting edit --name=pxe_just_once --value=1
#TFTP服务器 IP地址
cobbler setting edit --name=next_server --value=172.28.0.1
#cobbler管理rsync,dhcp,dns
cobbler setting edit --name=manage_rsync --value=1
cobbler setting edit --name=manage_dhcp --value=1
cobbler setting edit --name=manage_dns --value=1
cobbler导入镜像
    
#使用镜像文件
mount -o loop /tmp/rhel-server-6.3-x86_64-dvd.iso /mnt/rhel63
#使用光盘
mount /dev/sr0 /mnt/rhel63

#执行镜像导入,并关联自定义的自动安装配置ks脚本,这个地方我们可以为不同的系统版本指定不同的自动安装ks脚本(这个过程实际比较长,cobbler会把软件整个复制一份到本地,在这之前,务必确认硬盘空间足够装下镜像)
cobbler import --path=/tmp/rhel63 --name=rhel63 --kickstart=/var/lib/cobbler/kickstarts/rhel63.cfg

task started: 2016-04-12_090326_import
task started (id=Media import, time=Tue Apr 12 09:03:26 2016)
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/rhel63:
creating new distro: rhel63-x86_64
trying symlink: /var/www/cobbler/ks_mirror/rhel63 -> /var/www/cobbler/links/rhel63-x86_64
creating new profile: rhel63-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/rhel63 for rhel63-x86_64
processing repo at : /var/www/cobbler/ks_mirror/rhel63
need to process repo/comps: /var/www/cobbler/ks_mirror/rhel63
looking for /var/www/cobbler/ks_mirror/rhel63/repodata/*comps*.xml
Keeping repodata as-is :/var/www/cobbler/ks_mirror/rhel63/repodata
processing repo at : /var/www/cobbler/ks_mirror/rhel63/HighAvailability
need to process repo/comps: /var/www/cobbler/ks_mirror/rhel63/HighAvailability
looking for /var/www/cobbler/ks_mirror/rhel63/HighAvailability/repodata/*comps*.xml
Keeping repodata as-is :/var/www/cobbler/ks_mirror/rhel63/HighAvailability/repodata
processing repo at : /var/www/cobbler/ks_mirror/rhel63/Server
need to process repo/comps: /var/www/cobbler/ks_mirror/rhel63/Server
looking for /var/www/cobbler/ks_mirror/rhel63/Server/repodata/*comps*.xml
Keeping repodata as-is :/var/www/cobbler/ks_mirror/rhel63/Server/repodata
processing repo at : /var/www/cobbler/ks_mirror/rhel63/LoadBalancer
need to process repo/comps: /var/www/cobbler/ks_mirror/rhel63/LoadBalancer
looking for /var/www/cobbler/ks_mirror/rhel63/LoadBalancer/repodata/*comps*.xml
Keeping repodata as-is :/var/www/cobbler/ks_mirror/rhel63/LoadBalancer/repodata
processing repo at : /var/www/cobbler/ks_mirror/rhel63/ScalableFileSystem
need to process repo/comps: /var/www/cobbler/ks_mirror/rhel63/ScalableFileSystem
looking for /var/www/cobbler/ks_mirror/rhel63/ScalableFileSystem/repodata/*comps*.xml
Keeping repodata as-is :/var/www/cobbler/ks_mirror/rhel63/ScalableFileSystem/repodata
processing repo at : /var/www/cobbler/ks_mirror/rhel63/ResilientStorage
need to process repo/comps: /var/www/cobbler/ks_mirror/rhel63/ResilientStorage
looking for /var/www/cobbler/ks_mirror/rhel63/ResilientStorage/repodata/*comps*.xml
Keeping repodata as-is :/var/www/cobbler/ks_mirror/rhel63/ResilientStorage/repodata
*** TASK COMPLETE ***


#查看cobbler导入结果
cobbler distro list
cobbler report

#验证ks有效性,剩下的就是PXE引导测试了
cobbler validateks
cobbler-web
    
#设置Web登录,cobbler 2.6以上版本已经无需修改
sed -i 's/module = authn_denyall/module = authn_configfile/g' /etc/cobbler/modules.conf

#设置Cobbler Web登录用户登录密码
htdigest /etc/cobbler/users.digest "Cobbler" cobbler
Changing password for user cobbler in realm Cobbler
New password:cobbler
Re-type new password:cobbler

#cobbler_web登录地址,推荐使用命令行管理
http://{IP}/cobbler_web
Cobbler相关选项说明
    
#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 import --path=镜像路径 -- name=安装引导名 --arch=32位或64位
参数:
path 是镜像所挂载的目录
name 是导入到cobbler里面显示的名字
arch 是32位系统还是64位系统

#导入kickstart文件
命令:cobbler profile add --name=list名 --distro=镜像 --kickstart=路径
参数:
name是表示添加的ks 的名字,用cobbler report可以看到这个名字
distro 是用哪个镜像,list的distros里面选择一个,需要版本相对应
kickstart 是具体的 ks 文件路径

#同步DHCP、HTTPD
命令:cobbler sync
注,每次修改完dhcp.template之类的配置文件需要执行一次使其生效。

#查看Cobbler列表
命令:cobbler list
注,列出Cobbler所有的元素。

#删除相关列表
命令:cobbler distro/profile remove --name=要删除的引导文件名
删除指定 distro , 也就是镜像
删除指定的 profile 文件,也就是 ks

#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/images/ #导入发行版的Kernel和initrd镜像用于远程网络启动
/var/www/cobbler/repo_mirror/ #yum仓库存储目录

日志目录 /var/log/cobbler/:
/var/log/cobbler/install.log #客户端的安装系统日志
/var/log/cobbler/cobbler.log #cobbler日志
常见问题
    
#多查看错误日志
less /var/log/cobbler/cobbler.log

#为cobbler-web重置用户密码
htdigest /etc/cobbler/users.digest "Cobbler" cobbler
#添加新用户
htdigest /etc/cobbler/users.digest "Cobbler"  usernam

#DHCP多网卡环境可以指定网卡
vi /etc/sysconfig/dhcpd
# Command line options here
DHCPDARGS=eth0

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


一、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具体工作原理图,

简单总结一下,

    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各对象之间的关系图,


五、Cobbler 工作原理

下面我们来简单的说明一下,
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/images/CentOS-6.6-X86_64-x86_64
removing: /var/lib/tftpboot/pxelinux.cfg/default
removing: /var/lib/tftpboot/grub/images
removing: /var/lib/tftpboot/grub/efidefault
removing: /var/lib/tftpboot/images/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/images/pxeboot/vmlinuz
 -> /var/lib/tftpboot/images/CentOS-6.6-X86_64-x86_64/vmlinuz
trying hardlink /var/
www/cobbler/ks_mirror/CentOS-6.6-X86_64-x86_64/images/pxeboot/initrd.img
 -> /var/lib/tftpboot/images/CentOS-6.6-X86_64-x86_64/initrd.img
copying images
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/images/pxeboot/vmlinuz
 -> /var/
www/cobbler/images/CentOS-6.6-X86_64-x86_64/vmlinuz
trying hardlink /var/
www/cobbler/ks_mirror/CentOS-6.6-X86_64-x86_64/images/pxeboot/initrd.img
 -> /var/
www/cobbler/images/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                    
将启动项改为网卡启动:

启动服务后出现此界面:

默认安装后查看系统:

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


七、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/images/ 导入发行版的Kernel和initrd镜像用于远程网络启动
    /var/www/cobbler/repo_mirror/ yum仓库存储目录

日志目录 /var/log/cobbler/:

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


    from  http://cuchadanfan.blog.51cto.com/9940284/1698348
    ---------


    http://cobbler.github.io/manuals/