一、Cobbler简介
Cobbler 是一个系统启动服务(boot server),可以通过网络启动(PXE)的方式用来快速安装、重装物理服务器和虚拟机,支持安装不同的 Linux 发行版和 Windows。该工具使用python开发,小巧轻便(才15k行代码),使用简单的命令即可完成PXE网络安装环境的配置,同时还可以管理DHCP,DNS,以及yum包镜像。
Cobbler 使用命令行方式管理,也提供了基于 Web 的界面管理工具(cobbler-web),还提供了API接口,可以方便二次开发使用。
即多安装树的pxe环境,是pxe的高级封装
二、Cobbler提供以下服务集成
1、PXE服务支持
2、DHCP服务管理
3、DNS服务管理(可选bind,dnsmasq)
4、电源管理
5、Kickstart服务支持
6、yum仓库管理
7、TFTP (PXE启动时需要)
8、Apache(提供kickstart 的安装源,并提供定制化的kickstart配置)
同时,它和apache做了深度整合。通过 cobbler,可以实现对RedHat/Centos/Fedora系统的快速部署,同时也支持Suse 和Debian(Ubuntu)系统,通过配置也支持windows。
三、cobbler的组织结构
profile:是核心,由以下三个组件组成
repositories(安装树或安装源),
mirror:镜像 指向网络中的安装源
import:导入
distribution (vmlinuz(内核)+initrd.img(引导映像文件))
cobbler会自动从reporitories抽取出来生成
kickstart file组成的完完整整的系统发行版
cobbler装机系统是较早前pxe的升级版,优点比较容易配置,还自带web界面比较易于管理,不足在于中文资料较少。和pxe不同的是,使用cobbler不会因为在局域网中启动了dhcp而导致有些机器因为默认从pxe启动在重启服务器后加载tftp内容导致启动终止。
通过配置cobbler自动部署DHCP、TFTP、HTTP,在安装过程中加载kiskstart无人值守安装应答文件实现无人值守。从客户端使用PXE引导启动安装。
常用架构如下图:
四、Cobbler的工作流程
Cobbler工作流程:
下面我们来简单的说明一下,
Server端:
第一步,启动Cobbler服务
第二步,进行Cobbler错误检查,执行cobbler check命令
第三步,进行配置同步,执行cobbler sync命令
第四步,复制相关启动文件文件到TFTP目录中
第五步,启动DHCP服务,提供地址分配
第六步,DHCP服务分配IP地址
第七步,TFTP传输启动文件
第八步,Server端接收安装信息
第九步,Server端发送ISO镜像与Kickstart文件
Client端:
第一步,客户端以PXE模式启动
第二步,客户端获取IP地址
第三步,通过TFTP服务器获取启动文件
第四步,进入Cobbler安装选择界面
第五步,客户端确定加载信息
第六步,根据配置信息准备安装系统
第七步,加载Kickstart文件
第八步,传输系统安装的其它文件
第九步,进行安装系统
五、Kickstart 概述
kickstart配置文件详解
六、cobbler安装
1、环境
1)cobbler服务器和客户机IP
Cobbler服务器系统:CentOS6.5-x86_64
IP地址:192.168.200.1
需要安装部署的Linux系统的客户机IP地址段:192.168.200.21-192.168.200.100
子网掩码:255.255.255.0
网关:192.168.200.1
DNS:114.114.114.114
所有服务器均支持PXE网络启动
实现目的:通过配置Cobbler服务器,全自动批量安装部署Linux系统
2)关闭防火墙与SELinux
[root@localhost ~]# service iptables stop
iptables: Setting chains to policy ACCEPT: filter [ OK ]
iptables: Flushing firewall rules: [ OK ]
iptables: Unloading modules: [ OK ]
[root@localhost ~]# chkconfig iptables off
[root@localhost ~]# setenforce 0
[root@localhost ~]# sed -i '/SELINUX/s/enforcing/disabled/' /etc/selinux/config
3)yum源配置
mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.BAK
wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-6.repo
wget -O /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-6.repo
yum clean all ; yum makecache all
4)同步系统时间
[root@node2 ~]# yum install -y ntp
[root@localhost yum.repos.d]# ntpdate 202.120.2.101
7 Sep 13:59:53 ntpdate[5475]: adjust time server 202.120.2.101 offset 0.169428 sec
[root@localhost yum.repos.d]# date
Mon Sep 7 13:59:56 CST 2015
[root@node2 ~]# hwclock -w
2、安装cobbler (epel源)
yum install dhcp tftp-server httpd syslinux cobbler cobbler-web pykickstart debmirror -y
七、配置cobbler
1、设置httpd服务
[root@node2 ~]# vim /etc/httpd/conf/httpd.conf
ServerName localhost:80
[root@node2 ~]# service httpd start
2、配置tftp与rsync
修改 rsync 和 tftp 这两个服务的 xinetd 配置,只需修改 rsync 和tftp的配置文件,在/etc/xinetd.d/目录下
将 disable = yes 修改为 disable = no来开启tftp与rsync服务的开机启动
也可以直接使用命令:
chkconfig tftp on
chkconfig rsync on
再启动xinetd服务:
service xinetd start
3、 配置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.200.1/g' /etc/cobbler/settings
next_server选项是DHCP/PXE网络引导文件被下载的TFTP服务器的IP,在本例中它将和server设置为同一个IP
# sed -i 's/next_server: 127.0.0.1/next_server: 192.168.200.1/g' /etc/cobbler/settings
②防止误重装系统
pxe安装只允许一次,防止误操作 ( 在正式环境有用。实际测试来看,这个功能可以屏蔽掉 )
# sed -i 's/pxe_just_once: 0/pxe_just_once: 1/g' /etc/cobbler/settings
③、生成Cobbler安装系统root初始密码
(1)这里生成密钥和配置默认密钥。这个设置只针对centos有效。用 openssl 生成一串密码后加入到 cobbler 的配置文件(/etc/cobbler/settings)里,替换 default_password_crypted 字段
[root@localhost cobbler]# openssl passwd -1 -salt '123abc' 'www.magedu.com'
$1$123abc$5tYLxoUm1wOxOeGQZI7Lo.
openssl passwd -1 -salt ‘随机字符’ ‘密码’ (是数字1 不是字母L)
这个命令的用法,随机字符可以随便写,这个密码就是安装完系统root的密码了。
(2) 将上面的加密串加入cobbler配置文件中。
# vi /etc/cobbler/settings
# 修改为如下配置(第101行)
default_password_crypted: "$1$123abc$5tYLxoUm1wOxOeGQZI7Lo."
④、Cobbler管理rsync
默认为0,不对rsync进行管理,可以修改为1 进行管理
# sed -i 's/manage_rsync: 0/manage_rsync: 1/g' /etc/cobbler/settings
⑤. 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
4、修改cobbler管理DHCP的模板
/etc/cobbler/dhcp.template,此文件是cobbler管理dhcp的模板,确保DHCP分配的地址和Cobbler在同一网段
对于此文件,本例中只需要修改如下部分
# 需要修改192.168.1.0为自己网段
[root@node2 ~]# vim /etc/cobbler/dhcp.template
subnet 192.168.100.0 netmask 255.255.255.0 {
option routers 192.168.100.1;
option domain-name-servers 8.8.8.8;
option subnet-mask 255.255.255.0;
range dynamic-bootp 192.168.100.100 192.168.18.200;
default-lease-time 21600;
max-lease-time 43200;
next-server $next_server;
其余部分维持默认值即可。
如果是多网卡需要指定DHCP服务的网络接口
#vi /etc/sysconfig/dhcpd
修改内容如下:
#Command line options here DHCPDARGS=eth0
DHCPDARGS=eth0
# 测试dhcp服务器配置是否正确
# dhcpd # 在执行cobbler sync 之后测试才有效,因为没同步之前文件/etc/dhcp/dhcpd.conf还没有被同步修改
5、设置debmirror
注释掉@dists和@arches的行
sed -i -e 's|@dists=.*|#@dists=|' /etc/debmirror.conf
sed -i -e 's|@arches=.*|#@arches=|' /etc/debmirror.conf
修改配置完成后一定要运行cobbler sync 命令让配置生效,使dhcp、http被cobbler接管,不然会报错。
八、Cobbler 子命令介绍并启动cobbler
1、cobbler子命令介绍
-------------------------------------------------------------------------------------------
cobbler check #检查cobbler配置 主要用于检查cobbler配置是否有错
cobbler sync #同步配置到dhcp pxe和数据目录 更改某些配置后记得执行一下,同步一下配置。
cobbler list #列出所有的cobbler元素
cobbler import #导入安装的系统光盘镜像
cobbler report #列出各元素的详细信息
cobbler distro #查看导入的发行版系统信息 不但可以查看导入的发行版系统信息还可以增加与修改等
cobbler profile #查看配置信息 不但可以查看Kickstart文件而且还可以编辑与删除此文件
cobbler system #查看添加的系统信息
cobbler reposync #同步yum仓库到本地 同步远程的yum源到本地
cobbler signature update
cobbler --help #获得cobbler的帮助
cobbler distro --help #获得cobbler子命令的帮助
[root@localhost ~]# cobbler --help usage ===== cobbler... [add|edit|copy|getks*|list|remove|rename|report] [options|--help] cobbler [options|--help] [root@localhost ~]# cobbler list --help Usage: cobbler [options] Options: -h, --help show this help message and exit [root@localhost cobbler]# cobbler profile --help usage ===== cobbler profile add cobbler profile copy cobbler profile dumpvars cobbler profile edit cobbler profile find cobbler profile getks cobbler profile list cobbler profile remove cobbler profile rename cobbler profile report [root@localhost cobbler]# cobbler profile add --help Usage: cobbler [options] Options: -h, --help show this help message and exit --name=NAME Name (Ex: F10-i386-webserver) --uid=UID --owners=OWNERS Owners (Owners list for authz_ownership (space delimited)) --distro=DISTRO Distribution (Parent distribution) --parent=PARENT Parent Profile --enable-gpxe=ENABLE_GPXE Enable gPXE? (Use gPXE instead of PXELINUX for advanced booting options) --enable-menu=ENABLE_MENU Enable PXE Menu? (Show this profile in the PXE menu?) --kickstart=KICKSTART Kickstart (Path to kickstart template) --kopts=KERNEL_OPTIONS Kernel Options (Ex: selinux=permissive) --kopts-post=KERNEL_OPTIONS_POST Kernel Options (Post Install) (Ex: clocksource=pit noapic) --ksmeta=KS_META Kickstart Metadata (Ex: dog=fang agent=86) --proxy=PROXY Internal proxy (Internal proxy URL) --repos=REPOS Repos (Repos to auto-assign to this profile) --comment=COMMENT Comment (Free form text description) --virt-auto-boot=VIRT_AUTO_BOOT Virt Auto Boot (Auto boot this VM?) --virt-cpus=VIRT_CPUS Virt CPUs (integer) --virt-file-size=VIRT_FILE_SIZE Virt File Size(GB) --virt-disk-driver=VIRT_DISK_DRIVER Virt Disk Driver Type (The on-disk format for the virtualization disk) --virt-ram=VIRT_RAM Virt RAM (MB) --depth=DEPTH --virt-type=VIRT_TYPE Virt Type (Virtualization technology to use) (valid options: xenpv,xenfv,qemu,kvm,vmware,openvz,SETTINGS:d efault_virt_type) --virt-path=VIRT_PATH Virt Path (Ex: /directory OR VolGroup00) --virt-bridge=VIRT_BRIDGE Virt Bridge --dhcp-tag=DHCP_TAG DHCP Tag (See manpage or leave blank) --server=SERVER Server Override (See manpage or leave blank) --ctime=CTIME --mtime=MTIME --name-servers=NAME_SERVERS Name Servers (space delimited) --name-servers-search=NAME_SERVERS_SEARCH Name Servers Search Path (space delimited) --mgmt-classes=MGMT_CLASSES Management Classes (For external configuration management) --mgmt-parameters=MGMT_PARAMETERS Management Parameters (Parameters which will be handed to your management application (Must be valid YAML dictionary)) --boot-files=BOOT_FILES TFTP Boot Files (Files copied into tftpboot beyond the kernel/initrd) --fetchable-files=FETCHABLE_FILES Fetchable Files (Templates for tftp or wget/curl) --template-files=TEMPLATE_FILES Template Files (File mappings for built-in config management) --redhat-management-key=REDHAT_MANAGEMENT_KEY Red Hat Management Key (Registration key for RHN, Spacewalk, or Satellite) --redhat-management-server=REDHAT_MANAGEMENT_SERVER Red Hat Management Server (Address of Spacewalk or Satellite Server) --template-remote-kickstarts=TEMPLATE_REMOTE_KICKSTARTS --clobber allow add to overwrite existing objects --in-place edit items in kopts or ksmeta without clearing the other items
2、启动相关服务并设置开机启动
cobbler sync
chkconfig cobblerd on
chkconfig dhcpd on
chkconfig httpd on
chkconfig xinetd on
chkconfig tftp on
chkconfig rsync on
/etc/init.d/xinetd restart
/etc/init.d/dhcpd restart
/etc/init.d/httpd restart #这里如果提示启动失败,先cobbler sync同步一下配置就可以了
启动cobbler并运行Cobbler检查命令
[root@localhost ~]# service cobblerd start
[root@localhost ~]# cobbler get-loaders #清除一些无关的报错
[root@localhost ~]# cobbler check
No configuration problems found. All systems go. #没有报错
九、Cobbler的使用
1、导入要安装的镜像文件
①、挂载镜像
[root@localhost ~]# mount /dev/cdrom /mnt
mount: block device /dev/sr0 is write-protected, mounting read-only
[root@localhost ~]# ls /mnt
CentOS_BuildTag isolinux RPM-GPG-KEY-CentOS-Debug-6
EFI Packages RPM-GPG-KEY-CentOS-Security-6
EULA RELEASE-NOTES-en-US.html RPM-GPG-KEY-CentOS-Testing-6
GPL repodata TRANS.TBL
p_w_picpaths RPM-GPG-KEY-CentOS-6
[root@localhost ~]#
②、使用cobbler
import
命令导入镜像
主要有以下几个参数--path 指定导入镜像的路径,--name 指定导入镜像的名称,--arch 指定导入镜像的架构(32位还是64位)。还有需要说明的是这里导入的时间相对较长大概在5-10分钟左右,请大家耐心等待。
下面是具体的导入过程:
[root@localhost ~]# cobbler import --path=/mnt --name=centos6.7 --arch=x86_64
task started: 2015-09-07_170439_import
task started (id=Media import, time=Mon Sep 7 17:04:39 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/CentOS6.7-x86_64:
creating new distro: CentOS6.7-x86_64
trying symlink: /var/www/cobbler/ks_mirror/CentOS6.7-x86_64 -> /var/www/cobbler/links/CentOS6.7-x86_64
creating new profile: CentOS6.7-x86_64
associating repos
checking for rsync repo(s)
checking for rhn repo(s)
checking for yum repo(s)
starting descent into /var/www/cobbler/ks_mirror/CentOS6.7-x86_64 for CentOS6.7-x86_64
processing repo at : /var/www/cobbler/ks_mirror/CentOS6.7-x86_64
need to process repo/comps: /var/www/cobbler/ks_mirror/CentOS6.7-x86_64
looking for /var/www/cobbler/ks_mirror/CentOS6.7-x86_64/repodata/*comps*.xml
Keeping repodata as-is :/var/www/cobbler/ks_mirror/CentOS6.7-x86_64/repodata
*** TASK COMPLETE ***
注意1: 这个安装源的唯一标示就是根据--name和--arch这两个参数来定义
本例导入成功后,安装源的唯一标示就是:CentOS6.7-x86_64,如果重复,系统会提示导入失败,其它命令可通过cobbler –help来进行查看。如果需要更多的参数定制,也可以查看官方文档: man cobbler ,然后查找 import 的配置,可以使用另外一个命令: cobbler distro。
从上面显示信息所知:
cobbler会将镜像中的所有安装文件拷贝到本地一份,放在/var/www/cobbler/ks_mirrors下的centos6.7-x86_64目录下。同时会创建一个名字为centos6.7-x86_64的一个(distro)发布版本,以及一个名字为centos6.7-x86_64的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.7-x86_64/
# du -sh /mnt
如果上述两个命令执行过显示的结果出入较大, 则可能文件没有正常导入
在重新导入之前最好先把之前的内容删除再导入
cobbler [distro] remove –name=[CentOS-6.7] 方括号中的内容根据自己的情况来填写 , 更多命令通过cobbler –help 来查看
剩下其它系统导入方法类似,只是名字和路径更改下即可。重复上面的操作,把其他的系统镜像文件导入到Cobbler导入完成之后,可通过 cobbler list 来查看导入的结果。
[root@localhost kickstarts]# cobbler list
distros:
CentOS6.7-x86_64
profiles:
CentOS6.7-x86_64
systems:
repos:
p_w_picpaths:
mgmtclasses:
packages:
files:
[root@localhost kickstarts]#
③. 创建kickstarts自动安装脚本(For Centos/RHEL)
注意:这是关键步骤之一
由于需要安装的操作系统发行厂商不同,因此KS文件的写法要求,也不一而足。
本文只讨论 CentOs/RHEL 系列的 KS配置
另外:操作系统 版本不同,KS也存在一定的差异,比如CentOS5 ,和CentOS6下就有不同,切记!
默认kickstart文件是/var/lib/cobbler/kickstarts/sample_end.ks,需要手动为每个发行版单独指定,或单独修改。
自定义ks文件:
手动的修改已有的Kickstart文件
用system-config-kickstart工具生成Kickstart文件
下面是我自己定义的一个centos6.6模板
# kickstart template for Fedora 8 and later.
# (includes %end blocks)
# do not use with earlier distros
#platform=x86, AMD64, or Intel EM64T
# System authorization information
auth --useshadow --enablemd5
# System bootloader configuration
bootloader --location=mbr
# Partition clearing information
clearpart --all --initlabel
# Use text mode install
text
# Firewall configuration
firewall --service=ssh
# 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')
# 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 --utc Asia/Shanghai
# Install OS instead of upgrade
install
# Clear the Master Boot Record
zerombr
# Allow anaconda to partition the system as needed
part /boot --fstype=ext4 --size=200
part / --fstype=ext4 --size=10000
part /data --fstype=ext4 --size=5000
part swap --size=1000
%pre
$SNIPPET('log_ks_pre')
$SNIPPET('kickstart_start')
$SNIPPET('pre_install_network_config')
# Enable installation monitoring
$SNIPPET('pre_anamon')
%end
%packages
@chinese-support
@development
$SNIPPET('func_install_if_enabled')
%end
%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('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
%end
注意:kickstarts自动安装脚本中不允许有中文(注释有中文也不行),否则会报错
可以使用ksvalidator程序验证kickstart文件中是否有语法错误
# ksvalidator ks.cfg
④、修改profile指定新的KS启动文件
按照操作系统版本分别关联系统镜像文件和kickstart自动安装文件
在第一次导入系统镜像时,cobbler会给安装镜像指定一个默认的kickstart自动安装文件
例如:CentOS-6.7-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查看
[root@node2 ~]# cobbler profile edit --name=CentOS-6.4-x86_64 --distro=CentOS-6.4-x86_64 --kickstart=/var/lib/cobbler/kickstarts/centos6.ks
[root@node2 ~]# cobbler report
注,部分省略。
profiles:
==========
Name : CentOS-6.4-x86_64
TFTP Boot Files : {}
Comment :
DHCP Tag : default
Distribution : CentOS-6.4-x86_64
Enable gPXE? : 0
Enable PXE Menu? : 1
Fetchable Files : {}
Kernel Options : {}
Kernel Options (Post Install) : {}
Kickstart : /var/lib/cobbler/kickstarts/centos6.ks
⑤、同步一下
[root@node2 ~]# cobbler sync
task started: 2013-11-13_163907_sync
task started (id=Sync, time=Wed Nov 13 16:39:07 2013)
running pre-sync triggers
cleaning trees
removing: /var/www/cobbler/p_w_picpaths/CentOS-6.4-x86_64
removing: /var/lib/tftpboot/pxelinux.cfg/default
removing: /var/lib/tftpboot/grub/grub-x86_64.efi
removing: /var/lib/tftpboot/grub/p_w_picpaths
removing: /var/lib/tftpboot/grub/efidefault
removing: /var/lib/tftpboot/grub/grub-x86.efi
removing: /var/lib/tftpboot/p_w_picpaths/CentOS-6.4-x86_64
removing: /var/lib/tftpboot/s390x/profile_list
copying bootloaders
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 files for distro: CentOS-6.4-x86_64
trying hardlink /var/www/cobbler/ks_mirror/CentOS-6.4-x86_64/p_w_picpaths/pxeboot/vmlinuz -> /var/lib/tftpboot/p_w_picpaths/CentOS-6.4-x86_64/vmlinuz
trying hardlink /var/www/cobbler/ks_mirror/CentOS-6.4-x86_64/p_w_picpaths/pxeboot/initrd.img -> /var/lib/tftpboot/p_w_picpaths/CentOS-6.4-x86_64/initrd.img
copying p_w_picpaths
generating PXE configuration files
generating PXE menu structure
copying files for distro: CentOS-6.4-x86_64
trying hardlink /var/www/cobbler/ks_mirror/CentOS-6.4-x86_64/p_w_picpaths/pxeboot/vmlinuz -> /var/www/cobbler/p_w_picpaths/CentOS-6.4-x86_64/vmlinuz
trying hardlink /var/www/cobbler/ks_mirror/CentOS-6.4-x86_64/p_w_picpaths/pxeboot/initrd.img -> /var/www/cobbler/p_w_picpaths/CentOS-6.4-x86_64/initrd.img
Writing template files for CentOS-6.4-x86_64
rendering DHCP files
generating /etc/dhcp/dhcpd.conf
rendering TFTPD files
generating /etc/xinetd.d/tftp
cleaning link caches
running post-sync triggers
running python triggers from /var/lib/cobbler/triggers/sync/post/*
running python trigger cobbler.modules.sync_post_restart_services
running: dhcpd -t -q
received on stdout:
received on stderr:
running: service dhcpd restart
received on stdout: 关闭 dhcpd:[确定]
正在启动 dhcpd:[确定]
received on stderr:
running shell triggers from /var/lib/cobbler/triggers/sync/post/*
running python triggers from /var/lib/cobbler/triggers/change/*
running python trigger cobbler.modules.scm_track
running shell triggers from /var/lib/cobbler/triggers/change/*
*** TASK COMPLETE ***
现在就可以新建客户机,使用cobbler自动安装系统了。
十、Cobbler的Web管理界面
可以配置cobbler的web管理界面
(1)、安装软件包
[root@localhost ~]# yum -y install cobbler-web
(2)、设置用户名密码
为已存在的用户cobbler重置密码
[root@localhost ~]# htdigest /etc/cobbler/users.digest "Cobbler" cobbler #认证时提示信息 用户名
添加新用户
[root@localhost ~]# htdigest /etc/cobbler/users.digest "Cobbler" admin
(3)、配置cobbler web可以登录
[root@localhost ~]# sed -i 's/authn_denyall/authn_configfile/g' /etc/cobbler/modules.conf
(4)、重启Cobbler与http
[root@localhost ~]# /etc/init.d/cobblerd restart
Stopping cobbler daemon: [ OK ]
Starting cobbler daemon: [ OK ]
[root@localhost ~]# /etc/init.d/httpd restart
Stopping httpd: [ OK ]
Starting httpd: [ OK ]
[root@localhost ~]#
(5)访问Cobbler Web页面
https://192.168.200.1/cobbler_web
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配置
cobbler setting report
cobbler setting report [--name=option]
cobbler setting edit --name=option --value=xxx
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日志
Cobbler 常用命令汇总
1.导入镜像文件
命令:cobbler import --path=镜像路径 -- name=安装引导名 --arch=32位或64位
参数:
path 是镜像所挂载的目录
name 是导入到cobbler里面显示的名字
arch 是32位系统还是64位系统
2.导入kickstart文件
命令:cobbler profile add --name=list名 --distro=镜像 --kickstart=路径
参数:
name是表示添加的ks 的名字,用cobbler report可以看到这个名字
distro 是用哪个镜像,list的distros里面选择一个,需要版本相对应
kickstart 是具体的 ks 文件路径
3.同步DHCP、HTTPD
命令:cobbler sync
注,每次修改完dhcp.template之类的配置文件需要执行一次使其生效。
4.查看Cobbler列表
命令:cobbler list
注,列出Cobbler所有的元素。
5.删除相关列表
命令:cobbler distro/profile remove --name=要删除的引导文件名
删除指定 distro , 也就是镜像
删除指定的 profile 文件,也就是 ks
Cobbler 不足
1.问题说明
根据MAC地址来配置主机ip和hostname,根据mac配置ip等相关信息是一些常见需求,有些设备标签上有mac地址,这一类可以手动抄下,然后在配置。但是,由于主机更换主板,或其他原因导致mac不对,你还用标签上的mac地址来配置,这就悲剧了。为了更好的解决这样的问题我们也可以有解决的办法。
2.解决方法
根据dhcp请求信息抓取mac地址,然后进行配置。具体方法可以通过tcpdump或者脚本来分析/var/log/message文件,抓取对目标端口为67访问的数据包,然后进行分析。
[root@node6 ~]# tcpdump -i eth0 dst port 67