运维自动化之批量部署(cobbler)的使用

Cobbler的介绍

1.cobbler的介绍

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

Cobbler 提供以下服务集成:

* PXE 服务支持

* DHCP 服务管理

* DNS 服务管理

* 电源管理

* Kickstart 服务支持

* yum 仓库管理

2.cobbler组成

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

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

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

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

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

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

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

3.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的安装

1.1 安装epel的yum源

[[email protected]~]# rpm  -ivh  http://download.fedoraproject.org/pub/epel/6/x86_64/epel-release-6-8.noarch.rpm
Retrievinghttp://download.fedoraproject.org/pub/epel/6/x86_64/epel-release-6-8.noarch.rpm
warning:/var/tmp/rpm-tmp.PiRbIQ: Header V3 RSA/SHA256 Signature, key ID 0608b895: NOKEY
Preparing...               ########################################### [100%]
   1:epel-release          ########################################### [100%]

1.2 关闭防火墙和禁用selinux

[[email protected]~]# service iptables stop
[[email protected]~]# chkconfig iptables off
[[email protected]~]# service iptables status
iptables: Firewall is notrunning.
[[email protected]~]# chkconfig --list | grep iptables
iptables        0:off  1:off   2:off   3:off  4:off   5:off   6:off
[[email protected]~]# getenforce 
Disabled
补充:禁用selinux的方法:
setenfore 0 临时禁用
sed -i ‘/SELINUX=/d‘/etc/selinux/config &&  echo"SELINUX=disabled">> /etc/selinux/config  永久禁用,重启生效

1.3 安装cobbler的必备软件和cobbler

[[email protected]~]# yum -y install  httpd  rsync  tftp-server  xinetd  dhcp cman  pykickstart  debmirror
[[email protected]~]# yum -y install cobbler cobbler-web
 
过程中可能会报错:
[[email protected] ~]# yum -y installhttpd rsync tftp-server xinetd dhcp  cmanpykickstart debmirror
Loaded plugins: fastestmirror
Loading mirror speeds fromcached hostfile
Error: Cannot retrieve metalinkfor repository: epel. Please verify its path and try again
解决:把epel.repo中的mirrorlist注释掉,并启用baseurl
[[email protected]~]# egrep "baseurl|mirrorlist" /etc/yum.repos.d/epel.repo 
#baseurl=http://download.fedoraproject.org/pub/epel/6/$basearch
mirrorlist=https://mirrors.fedoraproject.org/metalink?repo=epel-6&arch=$basearch
#baseurl=http://download.fedoraproject.org/pub/epel/6/$basearch/debug
mirrorlist=https://mirrors.fedoraproject.org/metalink?repo=epel-debug-6&arch=$basearch
#baseurl=http://download.fedoraproject.org/pub/epel/6/SRPMS
mirrorlist=https://mirrors.fedoraproject.org/metalink?repo=epel-source-6&arch=$basearch
[[email protected]~]#sed -i‘s/#baseurl/baseurl/g‘ /etc/yum.repos.d/epel.repo
[[email protected]~]#sed -i ‘‘s/mirrorlist/#mirrorlist/g/etc/yum.repos.d/epel.repo
[[email protected]~]# egrep "baseurl|mirrorlist" /etc/yum.repos.d/epel.repo 
baseurl=http://download.fedoraproject.org/pub/epel/6/$basearch
#mirrorlist=https://mirrors.fedoraproject.org/metalink?repo=epel-6&arch=$basearch
baseurl=http://download.fedoraproject.org/pub/epel/6/$basearch/debug
#mirrorlist=https://mirrors.fedoraproject.org/metalink?repo=epel-debug-6&arch=$basearch
baseurl=http://download.fedoraproject.org/pub/epel/6/SRPMS
#mirrorlist=https://mirrors.fedoraproject.org/metalink?repo=epel-source-6&arch=$basearch

1.4  执行cobbler check,然后依次解决检查出的问题

[[email protected]~]# cobbler check
The following are potentialconfiguration items that you may want to fix:
 
1 : The ‘server‘ field in/etc/cobbler/settings must be set to something other than localhost, orkickstarting features will not work. This should be a resolvable hostname or IP for the boot server asreachable 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 otherthan 127.0.0.1, and should match the IP of the boot server on the PXE network.
3 : some network boot-loadersare missing from /var/lib/cobbler/loaders, you may run ‘cobbler get-loaders‘ todownload them, or, if you only want to handle x86/x86_64 netbooting, you mayensure that you have installed a *recent* version of the syslinux packageinstalled 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 ‘cobblerget-loaders‘ command is the easiest way to resolve these requirements.
4 : change ‘disable‘ to ‘no‘in /etc/xinetd.d/rsync
5 : comment out ‘dists‘ on/etc/debmirror.conf for proper debian support
6 : comment out ‘arches‘ on/etc/debmirror.conf for proper debian support
7 : The default password usedby the sample templates for newly installed machines (default_password_cryptedin /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
 
Restart cobblerd and then run‘cobbler sync‘ to apply changes.
 
解决办法:
1:在settings里面设置server 的IP
2:在settings里面设置next_server的IP
3:如果当前节点可以访问互联网,执行“cobblerget-loader”命令下载pxelinux.0,menu.c32,elilo.efi, 或yaboot文件,否则,需要安装syslinux程序包,而后复制/usr/share/syslinux/中的pxelinux.0,menu.c32等文件至/var/lib/cobbler/loaders目录中
4:把/etc/xinetd.d/rsync中的disable的值改为no
5: 注释/etc/dedmirror.conf文件中的“@dists="sid";”一行
6: 注释/etc/dedmirror.conf文件中的“@arches="i386";”一行
7: 执行“openssl passwd -1 -salt$(openssl rand -hex 4)”生成密码,并用其替换/etc/cobbler/settings文件中default_password_crypted参数

下面开始在配置过程中解决上面的报错

2.cobbler的配置管理

2.1 修改/etc/xinetd.d/下rsync和tftp中disable值为no

[[email protected]~]# sed -i -e ‘s/= yes/= no/g‘ /etc/xinetd.d/rsync
[[email protected]~]# sed -i ‘/disable/c\\tdisable\t\t\t= no‘ /etc/xinetd.d/tftp  
[[email protected]~]# grep "disable" /etc/xinetd.d/rsync /etc/xinetd.d/tftp
/etc/xinetd.d/rsync:    disable = no
/etc/xinetd.d/tftp:     disable                 = no

2.2修改/etc/cobbler/settings文件相关参数

[[email protected]~]# sed -i "s/manage_dhcp: 0/manage_dhcp: 1/g" /etc/cobbler/settings
[[email protected]~]# sed -i "s/manage_rsync: 0/manage_rsync: 1/g" /etc/cobbler/settings
[[email protected] ~]# sed -i"s/next_server: 127.0.0.1/next_server: 192.168.255.10/g"/etc/cobbler/settings 
[[email protected]~]#  sed -i "s/server:127.0.0.1/server: 192.168.255.10/g" /etc/cobbler/settings
[[email protected]~]# egrep "manage_dhcp|manage_rsync|server:|next_server"/etc/cobbler/settings
manage_dhcp:1    #启用cobbler对dhcp的管理
manage_rsync:1    #启用cobbler对rsync的管理
next_server:192.168.255.10  #指定next_server的地址
server:192.168.255.10              #指定cobbler的服务器的ip

2.3 /etc/dedmirror.conf文件注释掉@dists="sid";@arches="i386

[[email protected]~]# sed -i "s/@dists/#@dists/g" /etc/debmirror.conf
[[email protected]~]# sed -i "s/@arches/#@arches/g" /etc/debmirror.conf
[[email protected]~]# egrep "@dists|@arches" /etc/debmirror.conf
#@dists="sid";
#@arches="i386";

2.4 修改/etc/cobbler/dhcp.template,配置dhcp相关参数

subnet192.168.255.0 netmask 255.255.255.0 {
     option routers             192.168.255.10;
     option domain-name-servers 192.168.255.10;
     option subnet-mask         255.255.255.0;
     range dynamic-bootp        192.168.255.100 192.168.255.254;
     default-lease-time         21600;
     max-lease-time             43200;
     next-server                $next_server;

2.5 生成新的密码文件

[[email protected]~]#  openssl passwd -1 -salt ‘cobbler‘"123.com"
$1$cobbler$rK3/2t1JZHrwohtqCqcmg.
[[email protected] ~]# sed -i‘/default_password_crypted/c\default_password_crypted:\"$1$cobbler$rK3/2t1JZHrwohtqCqcmg.\"‘ /etc/cobbler/settings
[[email protected]~]# grep "default_password_crypted" /etc/cobbler/settings
default_password_crypted:"$1$cobbler$rK3/2t1JZHrwohtqCqcmg."

2.6 启动cobbler的各个组件,并设置开机自动启动

[[email protected]~]# /etc/init.d/httpd start
Startinghttpd: httpd: apr_sockaddr_info_get() failed for Cobbler
httpd:Could not reliably determine the server‘s fully qualified domain name, using127.0.0.1 for ServerName
                                                          [  OK  ]
[[email protected]~]# /etc/init.d/xinetd start
Startingxinetd:                                          [  OK  ]
[[email protected]~]# /etc/init.d/cobblerd start
Startingcobbler daemon:                                   [  OK  ]
[[email protected]~]# /sbin/chkconfig httpd on
[[email protected]~]# /sbin/chkconfig dhcpd on
[[email protected]~]# /sbin/chkconfig xinetd on
[[email protected]~]# /sbin/chkconfig cobblerd on
[[email protected]~]# service dhcpd start
Startingdhcpd:                                           [FAILED]
dhcp启动失败,原因是没有同步cobbler的配置,现在cobbler还没接管dhcp,执行cobblerrsync之后就可以

2.7 执行cobbler get-loaders命令,在线下载pxelinux.0,menu.c32,elilo.efi,或yaboot文件

[[email protected]~]# cobbler get-loaders
task started:2015-06-01_170259_get_loaders
task started (id=DownloadBootloader Content, time=Mon Jun  117:02:59 2015)
path/var/lib/cobbler/loaders/README already exists, not overwriting existingcontent, use --force if you wish to update
path/var/lib/cobbler/loaders/COPYING.elilo already exists, not overwriting existingcontent, use --force if you wish to update
path/var/lib/cobbler/loaders/COPYING.yaboot already exists, not overwritingexisting content, use --force if you wish to update
path/var/lib/cobbler/loaders/COPYING.syslinux already exists, not overwritingexisting content, use --force if you wish to update
path/var/lib/cobbler/loaders/elilo-ia64.efi already exists, not overwritingexisting content, use --force if you wish to update
path/var/lib/cobbler/loaders/yaboot already exists, not overwriting existingcontent, use --force if you wish to update
path/var/lib/cobbler/loaders/pxelinux.0 already exists, not overwriting existingcontent, use --force if you wish to update
path/var/lib/cobbler/loaders/menu.c32 already exists, not overwriting existingcontent, use --force if you wish to update
path/var/lib/cobbler/loaders/grub-x86.efi already exists, not overwriting existingcontent, use --force if you wish to update
path/var/lib/cobbler/loaders/grub-x86_64.efi already exists, not overwritingexisting content, use --force if you wish to update
*** TASK COMPLETE ***

2.8重启cobbler,并执行cobbler sync使其同步

[[email protected]~]# service cobblerd restart
Stoppingcobbler daemon:                                   [  OK  ]
Startingcobbler daemon:                                   [  OK  ]
[[email protected]~]# cobbler sync
taskstarted: 2015-06-01_170502_sync
taskstarted (id=Sync, time=Mon Jun  117:05:02 2015)
runningpre-sync triggers
cleaningtrees
removing:/var/lib/tftpboot/grub/images
copyingbootloaders
tryinghardlink /var/lib/cobbler/loaders/pxelinux.0 -> /var/lib/tftpboot/pxelinux.0
tryinghardlink /var/lib/cobbler/loaders/menu.c32 -> /var/lib/tftpboot/menu.c32
tryinghardlink /var/lib/cobbler/loaders/yaboot -> /var/lib/tftpboot/yaboot
tryinghardlink /var/lib/cobbler/loaders/grub-x86.efi ->/var/lib/tftpboot/grub/grub-x86.efi
tryinghardlink /var/lib/cobbler/loaders/grub-x86_64.efi ->/var/lib/tftpboot/grub/grub-x86_64.efi
copyingdistros to tftpboot
copyingimages
generatingPXE configuration files
generatingPXE menu structure
renderingDHCP files
generating/etc/dhcp/dhcpd.conf
renderingTFTPD files
generating/etc/xinetd.d/tftp
cleaninglink caches
renderingRsync files
runningpost-sync triggers
runningpython triggers from /var/lib/cobbler/triggers/sync/post/*
runningpython trigger cobbler.modules.sync_post_restart_services
running:dhcpd -t -q
receivedon stdout: 
receivedon stderr: 
running:service dhcpd restart
receivedon stdout: Starting dhcpd: [  OK  ]
receivedon stderr: 
runningshell triggers from /var/lib/cobbler/triggers/sync/post/*
runningpython triggers from /var/lib/cobbler/triggers/change/*
runningpython trigger cobbler.modules.scm_track
runningshell triggers from /var/lib/cobbler/triggers/change/*
***TASK COMPLETE ***
 
同步完成没报错之后,现在重新启动dhcp,发现可以正常启动了
[[email protected]~]# service dhcpd restart
Shuttingdown dhcpd:                                       [  OK  ]
Startingdhcpd:                                            [  OK  ]
 
最后执行cobblercheck重新检查一下,没有报错
[[email protected]~]# cobbler check
Noconfiguration problems found.  Allsystems go.
此时cobbler已经安装配置完成,下面开始进行导入镜像等管理操作

3.Cobbler的管理和使用

3.1 cobbler常用命令

cobblercheck   #检查cobbler配置

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

cobbler list   #列出所有的cobbler元素

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

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

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

cobbler profile   #查看配置信息

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

cobbler reposync   #同步yum仓库到本地

每个命令如果不熟悉参数可以使用 --help来帮助 如:

[[email protected] ~]# cobbler--help

usage

=====

cobbler<distro|profile|system|repo|image|mgmtclass|package|file> ...

[add|edit|copy|getks*|list|remove|rename|report] [options|--help]

cobbler <aclsetup|buildiso|import|list|replicate|report|reposync|sync|validateks|version|signature|get-loaders|hardlink>[options|--help]

[[email protected] ~]# cobblerimport --help

Usage: cobbler [options]

Options:

-h, --help            show this help message and exit

--arch=ARCH           OS architecture being imported

--breed=BREED         the breed being imported

--os-version=OS_VERSION

the version beingimported

--path=PATH           local path or rsync location

--name=NAME           name, ex ‘RHEL-5‘

--available-as=AVAILABLE_AS

tree is here, don‘tmirror

--kickstart=KICKSTART_FILE

assign this kickstartfile

--rsync-flags=RSYNC_FLAGS

pass additional flagsto rsync

3.2 导入镜像文件,使用命令cobbler import

查看帮助信息

[[email protected]~]# cobbler import --help

Usage:cobbler [options]

Options:

-h, --help            show this help message and exit

--arch=ARCH           OS architecture being imported

--breed=BREED         the breed being imported

--os-version=OS_VERSION   the version being imported

--path=PATH           local path or rsync location

--name=NAME           name, ex ‘RHEL-5‘

--available-as=AVAILABLE_AS  tree is here, don‘t mirror

--kickstart=KICKSTART_FILE  assign this kickstart file

--rsync-flags=RSYNC_FLAGS  pass additional flags to rsync

现在开始导入:

挂载镜像文件到/media下

[[email protected]~]# mount /dev/cdrom /media/
mount:block device /dev/sr0 is write-protected, mounting read-only

导入镜像

[[email protected]~]# cobbler import --path=/media --name=CentOS6.4 --arch=x86_64
taskstarted: 2015-06-01_172716_import
taskstarted (id=Media import, time=Mon Jun  117:27:16 2015)
Founda candidate signature: breed=redhat, version=rhel6
Founda matching signature: breed=redhat, version=rhel6
Addingdistros from path /var/www/cobbler/ks_mirror/CentOS6.4-x86_64:
creatingnew distro: CentOS6.4-x86_64
tryingsymlink: /var/www/cobbler/ks_mirror/CentOS6.4-x86_64 ->/var/www/cobbler/links/CentOS6.4-x86_64
creatingnew profile: CentOS6.4-x86_64
associatingrepos
checkingfor rsync repo(s)
checkingfor rhn repo(s)
checkingfor yum repo(s)
startingdescent into /var/www/cobbler/ks_mirror/CentOS6.4-x86_64 for CentOS6.4-x86_64
processingrepo at : /var/www/cobbler/ks_mirror/CentOS6.4-x86_64
need toprocess repo/comps: /var/www/cobbler/ks_mirror/CentOS6.4-x86_64
lookingfor /var/www/cobbler/ks_mirror/CentOS6.4-x86_64/repodata/*comps*.xml
Keepingrepodata as-is :/var/www/cobbler/ks_mirror/CentOS6.4-x86_64/repodata
***TASK COMPLETE ***

查看导入的镜像:

[[email protected]~]# cobbler distro list
   CentOS6.4-x86_64
[[email protected]~]# cobbler list
distros:
   CentOS6.4-x86_64
profiles:
   CentOS6.4-x86_64
systems:
repos:
images:
mgmtclasses:
packages:
files:

3.3 生成kickstart文件,并绑定到profile中

Kickstart的模版文件在/var/lib/cobbler/kickstarts中,在导入镜像的时候不指定kickstart文件,就会使用默认的模版文件,现在我们拷贝 一份,进行自定义修改

[[email protected]~]# cd /var/lib/cobbler/kickstarts
[[email protected]]# cp sample.ks centos6.4x86_64.cfg
[[email protected] kickstarts]# cobbler profile edit --name=CentOS6.4-x86_64--kickstart=/var/lib/cobbler/kickstarts/centos6.4x86_64.cfg

3.4修改centos6.4x86_64.cfg文件进行定制

默认的kickstart文件sampl.ks注释:

 
#platform=x86, AMD64, or Intel EM64T
# System authorization information
auth --useshadow --enablemd5    #用户登录认证
# System bootloader configuration
bootloader --location=mbr #mbr引导
# Partition clearing information
clearpart --all --initlabel#默认清除所以分区
# Use text mode install
text    #默认以文本模式安装
# Firewall configuration
firewall --enabled #防火墙默认开启
# 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 thekickstart profile, include them here.
$yum_repo_stanza     #默认的yum仓库
# Network information
$SNIPPET(‘network_config‘) 
# Reboot after installation
reboot   #安装完成后重启
#Root password
rootpw --iscrypted $default_password_crypted   #密码是我们/etc/cobbler/settings设置密码
# SELinux configuration
selinux --disabled   #默认关闭selinux
# Do not configure the X Window System
skipx  #默认没有安装图形界面
# System timezone
timezone America/New_York  #默认时区是美国/纽约
# Install OS instead of upgrade
install   #定义的是安装系统而不是升级系统
# Clear the Master Boot Record
zerombr   #默认清空所有的mbr
# Allow anaconda to partition the system as needed
autopart   #默认自动分区
#下面就是Cobbler自定执行的一些脚本,我就不解释了。
%pre
$SNIPPET(‘log_ks_pre‘)
$SNIPPET(‘kickstart_start‘)
$SNIPPET(‘pre_install_network_config‘)
# Enable installation monitoring
$SNIPPET(‘pre_anamon‘)
%packages
$SNIPPET(‘func_install_if_enabled‘)
$SNIPPET(‘puppet_install_if_enabled‘)
%post
$SNIPPET(‘log_ks_post‘)
# Start yum configuration 
$yum_config_stanza
# End yum configuration
$SNIPPET(‘post_install_kernel_options‘)
$SNIPPET(‘post_install_network_config‘)
$SNIPPET(‘func_register_if_enabled‘)
$SNIPPET(‘puppet_register_if_enabled‘)
$SNIPPET(‘download_config_files‘)
$SNIPPET(‘koan_environment‘)
$SNIPPET(‘redhat_register‘)
$SNIPPET(‘cobbler_register‘)
# Enable post-install boot notification
$SNIPPET(‘post_anamon‘)
# Start final steps
$SNIPPET(‘kickstart_done‘)
# End final steps

自定义的centos6.4x86_64.cfg文件

auth  --useshadow --enablemd5
bootloader--location=mbr
clearpart--all --initlabel
text
firewall--enabled
firstboot--disable
keyboardus
langen_US
url--url=$tree
$yum_repo_stanza
$SNIPPET(‘network_config‘)
reboot
 
rootpw--iscrypted $default_password_crypted
selinux--disabled
skipx
timezone  Asia/Shanghai
install
zerombr
autopart
part/boot --fstype="ext4" --size=200
partswap --fstype="swap" --size=4096
part /--fstype="ext4" --grow --size=1
 
%pre
$SNIPPET(‘log_ks_pre‘)
$SNIPPET(‘kickstart_start‘)
$SNIPPET(‘pre_install_network_config‘)
$SNIPPET(‘pre_anamon‘)
 
%packages
$SNIPPET(‘func_install_if_enabled‘)
$SNIPPET(‘puppet_install_if_enabled‘)
@base
@chinese-support
@development
@system-admin-tools
%post--nochroot
$SNIPPET(‘log_ks_post_nochroot‘)
%end
%post
$SNIPPET(‘log_ks_post‘)
$yum_config_stanza
$SNIPPET(‘post_install_kernel_options‘)
$SNIPPET(‘post_install_network_config‘)
$SNIPPET(‘func_register_if_enabled‘)
$SNIPPET(‘puppet_register_if_enabled‘)
$SNIPPET(‘download_config_files‘)
$SNIPPET(‘koan_environment‘)
$SNIPPET(‘redhat_register‘)
$SNIPPET(‘cobbler_register‘)
$SNIPPET(‘post_anamon‘)
$SNIPPET(‘kickstart_done‘)

3.5 重启cobbler,并同步

[[email protected]~]# service cobblerd restart
Stoppingcobbler daemon:                                   [  OK  ]
Startingcobbler daemon:                                   [  OK  ]
[[email protected]~]# cobbler check
Noconfiguration problems found.  All systemsgo.
[[email protected]~]# cobbler sync
taskstarted: 2015-06-01_175813_sync
taskstarted (id=Sync, time=Mon Jun  117:58:13 2015)
runningpre-sync triggers
cleaningtrees
removing:/var/www/cobbler/images/CentOS6.4-x86_64
removing:/var/lib/tftpboot/pxelinux.cfg/default
removing:/var/lib/tftpboot/grub/grub-x86.efi
removing:/var/lib/tftpboot/grub/efidefault
removing:/var/lib/tftpboot/grub/images
removing:/var/lib/tftpboot/grub/grub-x86_64.efi
removing:/var/lib/tftpboot/images/CentOS6.4-x86_64
removing:/var/lib/tftpboot/s390x/profile_list
copyingbootloaders
tryinghardlink /var/lib/cobbler/loaders/grub-x86.efi ->/var/lib/tftpboot/grub/grub-x86.efi
tryinghardlink /var/lib/cobbler/loaders/grub-x86_64.efi ->/var/lib/tftpboot/grub/grub-x86_64.efi
copyingdistros to tftpboot
copyingfiles for distro: CentOS6.4-x86_64
tryinghardlink /var/www/cobbler/ks_mirror/CentOS6.4-x86_64/images/pxeboot/vmlinuz-> /var/lib/tftpboot/images/CentOS6.4-x86_64/vmlinuz
tryinghardlink /var/www/cobbler/ks_mirror/CentOS6.4-x86_64/images/pxeboot/initrd.img-> /var/lib/tftpboot/images/CentOS6.4-x86_64/initrd.img
copyingimages
generatingPXE configuration files
generatingPXE menu structure
copyingfiles for distro: CentOS6.4-x86_64
tryinghardlink /var/www/cobbler/ks_mirror/CentOS6.4-x86_64/images/pxeboot/vmlinuz-> /var/www/cobbler/images/CentOS6.4-x86_64/vmlinuz
tryinghardlink /var/www/cobbler/ks_mirror/CentOS6.4-x86_64/images/pxeboot/initrd.img-> /var/www/cobbler/images/CentOS6.4-x86_64/initrd.img
Writingtemplate files for CentOS6.4-x86_64
renderingDHCP files
generating/etc/dhcp/dhcpd.conf
renderingTFTPD files
generating/etc/xinetd.d/tftp
processingboot_files for distro: CentOS6.4-x86_64
cleaninglink caches
renderingRsync files
runningpost-sync triggers
runningpython triggers from /var/lib/cobbler/triggers/sync/post/*
runningpython trigger cobbler.modules.sync_post_restart_services
running:dhcpd -t -q
receivedon stdout: 
receivedon stderr: 
running:service dhcpd restart
receivedon stdout: Shutting down dhcpd: [ OK  ]
Startingdhcpd: [  OK  ]
 
receivedon stderr: 
runningshell triggers from /var/lib/cobbler/triggers/sync/post/*
runningpython triggers from /var/lib/cobbler/triggers/change/*
runningpython trigger cobbler.modules.scm_track
runningshell triggers from /var/lib/cobbler/triggers/change/*
***TASK COMPLETE ***

下面客户机就可以开机从网卡启动进行装系统了。

补充:cobbler添加pxe菜单密码

1.生成hash密码

支持两种不同类型的密码:
sha1passmypassword
或
opensslpasswd -1 -salt sXiKzkus mypassword
我这里选择后者
    [[email protected]]# openssl passwd -1 -salt cobbler cobbler
$1$cobbler$M6SE55xZodWc9.vAKLJs6.

2.编辑配置文件pxedefault.template,添加如下红色部分

[[email protected]]# vim /etc/cobbler/pxe/pxedefault.template

DEFAULTmenu

PROMPT0

MENUTITLE Cobbler | http://www.cobblerd.org/

MENU MASTERPASSWD $1$cobbler$M6SE55xZodWc9.vAKLJs6.

TIMEOUT200

TOTALTIMEOUT6000

ONTIMEOUT$pxe_timeout_profile

LABELlocal

MENU LABEL (local)

MENU DEFAULT

LOCALBOOT -1

$pxe_menu_items

MENUend

3.编辑pxeprofile文件,添加下面内容

[[email protected]]# vim /etc/cobbler/pxe/pxeprofile.template

LABEL$profile_name

MENU PASSWD

kernel $kernel_path

$menu_label

$append_line

ipappend 2

4.重新检查配置,并同步使其生效

[[email protected]]# cobbler check
[[email protected]]# cobbler sync

下次客户端装系统的时候,选择系统菜单时就需要输入密码了

3.cobbler相关目录和配置文件

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

3.2 cobbler数据目录

/var/lib/cobbler/config     #配置文件

/var/lib/cobbler/triggers  #Cobbler命令

/var/lib/cobbler/kickstarts       #默认存放kickstart文件

/var/lib/cobbler/loaders  #存放的各种引导程序

/var/lib/dhcpd/dhcpd.leases        #dhcp租期缓存文件

/tftpboot/pxelinux.cfg/default      #pxe配置文件

/var/lib/cobbler/kickstarts_*.ks  #ks模板文件

3.3 系统镜像目录

/var/www/cobbler/ks_mirror      #导入的系统镜像列表

/var/www/cobbler/images      #导入的系统镜像启动文件

/var/www/cobbler/repo_mirror       #yum源存储目录

3.4 日志目录

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

/var/log/cobbler/cobbler.log #cobbler日志

4.cobbler的web端管理

4.1 安装web端

yuminstall cobbler-web -y

4.2 设置用户名和密码

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

htdigest/etc/cobbler/users.digest "Cobbler" cobbler

添加新用户

htdigest/etc/cobbler/users.digest "Cobbler" your_newname

4.3修改配置文件,允许cobbler从web登录

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

4.4重启Cobbler与http

/etc/init.d/cobblerdrestart

/etc/init.d/httpdrestart

4.5访问cobbler web界面,配置管理

在浏览器上输入http://cobber_ip/cobber_web打开web界面,输入刚才设置的用户名和密码,进入后台

后台界面:

下面开始导入镜像:

选择Import DVD,

在prefix项中要填写导入光盘的名字,只有不与先前的名字冲突,这里可以随意填。

在Arch项中选择光盘的类型,是i386、x86_64、ai64等。

在Breed项中选择系统的类型,CentOS、Debian、Ubuntu中的一种。

在Path项中填写光盘或ISO镜像包挂载的位置,路径一定要填写正确。

最后点击 run开始导入,过程很慢,可以通过日志查看导入状态

查看日志中的导入状态,可以发现正在运行,第二个是之前用命令导入的,现在状态为complate完成

等到state状态为complate时,导入已完成

查看生成的distros,若生成刚导入的系统,表示没问题,如没有生成需要查看日志,了解具体情况

下面我们开始配置kickstart文件。点击kickstart  template,在右边点击创建新的kickstart文件,填写你准备好的kickstart内容即可

修改profile文件,让刚导入的镜像和刚创建的kickstart文件相关联,选择redhat6.4x86_64。点击edit

修改kickstart的路径,把刚才我们创建的kickstart的文件路径写进去,保存即可。

此就是cobbler简单的web配置。

时间: 2024-10-11 11:11:33

运维自动化之批量部署(cobbler)的使用的相关文章

运维自动化之系统部署(一)

运维自动化发展历程及技术应用 安装程序 CentOS系统安装 系统启动流程: ??bootloader-->kernel(initramfs)-->rootfs-->/sbin/initanaconda: 系统安装程序 ?? gui:图形窗口 ?? tui: 基于图形库curses的文本窗口 安装程序启动过程 MBR:isolinux/boot.cat stage2: isolinux/isolinux.bin 配置文件:isolinux/isolinux.cfg ??每个对应的菜单选项

运维自动化之系统部署

运维自动化发展历程及技术应用 什么是自动化的安装部署操作系统? 在工作中我们可能经常部署很多台主机,手工的一台一台的安装只适合主机非常少的情况,但大的互联网公司在一些特殊的日子要部署大量的主机,以应对要到来的特大流量访问.这时候我们就不能,一台一台的安装主机了,一是效率太慢,二是太累,三是费时间.基于这个情况我们可以自动化的一起部署很多的主机,而不用我们人工一台一台的去安装部署,节约了大量的时间. centos 6的启动流程 1.POST开机加电自检 2.MBR 读取硬盘mbr引导的前446字节

运维自动化之中级进阶—Cobbler实战,实现批量多版本os自动部署。

Cobbler简介 Cobbler由python语言开发,是对PXE和Kickstart以及DHCP的封装.融合很多特性,提供了CLI和Web的管理形式.更加方便的实行网络安装.适用场景:需要大批量的部署操作系统. Collber 对象关系图 Distros(发行版):表示一个操作系统.它承载了内核和 initrd 的信息,以及内核参数等其他数据. profile:定义Kickstart文件 repos:安装源 system:表示要配给的机器.它包含一个配置文件或一个镜像,还包含 IP 和 MA

运维自动化之系统部署(kickstart、PXE)

anaconda anaconda负责安装系统向导,默认为GUI界面,如果我们使用ks自动应答安装的话建议使用TUI界面来安装 在安装启动界面我们可以按esc键来自己手动指定安装启动选项 anaconda选项: 1)linux askmethod 在稍后的安装中手动选择安装源 本地光盘.硬盘.NFS.FTP.HTTP 2)linux dd 加载驱动盘 3)linux ks=xxx   指定安装ks文件 DVD drive: ks=cdrom:/PATH/TO/KICKSTART_FILE Har

运维自动化之使用Cobbler自动化部署Linux操作系统

1.Cobbler是什么? Cobbler是一个Linux安装服务器,能够快速设置好网络安装环境.它实现了许多与Linux相关的任务的自动化和组合,因此你在部署新的(操作)系统或更改已经存在的操作系统时不需要在繁多的命令和应用程序之间来回切换.Cobbler能帮助(用户.管理者)置备和管理DNS.DHCP.软件包更新.电源管理.配置管理以及更多. "Cobbler is a Linux installation server that allows for rapid setup of netw

运维自动化工具Cobbler之——安装实践

运维自动化工具--Cobbler实践 第1章 About Cobbler 1.1 Cobbler Introduction Cobbler是一个Linux服务器安装的服务,可以通过网络启动(PXE)的方式来快速安装.重装物理服务器和虚拟机,同时还可以管理DHCP,DNS等. Cobbler可以使用命令行方式管理,也提供了基于Web的界面管理工具(cobbler-web),还提供了API接口,可以方便二次开发使用.Cobbler是较早前的kickstart的升级版,优点是比较容易配置,还自带web

自动化运维工具Ansible详细部署 (转载)

自动化运维工具Ansible详细部署 标签:ansible 原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 .作者信息和本声明.否则将追究法律责任.http://sofar.blog.51cto.com/353572/1579894 ========================================================================================== 一.基础介绍 ===========================

自动化运维工具SaltStack详细部署【转】

==========================================================================================一.基础介绍==========================================================================================1.简介SaltStack是一个服务器基础架构集中化管理平台,具备配置管理.远程执行.监控等功能,一般可以理解为简化版的pupp

运维自动化之Cobbler系统安装详解

原文链接 参考文档 参考文档SA们现在都知道运维自动化的重要性,尤其是对于在服务器数量按几百台.几千台增加的公司而言,单单是装系统,如果不通过自动化来完成,根本是不可想象的. 运维自动化安装方面,早期一般使用人工配置pxe+dhcp+tftp配合kickstart,现在开源工具就多了,如cobbler,OpenQRM和Spacewalk.本文重点介绍Cobbler. Cobbler介绍 Cobbler是一个快速网络安装linux的服务,而且在经过调整也可以支持网络安装windows.该工具使用p