Cobbler介绍
Cobbler 是一个系统启动服务(boot server),可以通过网络启动(PXE)的方式用来快速安装、重装物理服务器和虚拟机,支持安装不同的 Linux 发行版和 Windows。该工具使用python开发,小巧轻便(才15k行代码),使用简单的命令即可完成PXE网络安装环境的配置,同时还可以管理DHCP,DNS,以及yum包镜像。
Cobbler 使用命令行方式管理,也提供了基于 Web 的界面管理工具(cobbler-web),还提供了API接口,可以方便二次开发使用。
Cobbler提供以下服务集成:
PXE服务支持
DHCP服务管理
DNS服务管理(可选bind,dnsmasq)
电源管理
Kickstart服务支持
yum仓库管理
TFTP (PXE启动时需要)
Apache(提供kickstart 的安装源,并提供定制化的kickstart配置)
同时,它和apache做了深度整合。通过 cobbler,可以实现对RedHat/Centos/Fedora系统的快速部署,同时也支持Suse 和Debian(Ubuntu)系统。
cobbler装机系统是较早前kickstart的升级版,优点比较容易配置,还自带web界面比较易于管理,不足在于中文资料较少。和Kickstart不同的是,使用cobbler不会因为在局域网中启动了dhcp而导致有些机器因为默认从pxe启动在重启服务器后加载tftp内容导致启动终止。
通过配置cobbler自动部署DHCP、TFTP、HTTP,在安装过程中加载kiskstart无人值守安装应答文件实现无人值守。从客户端使用PXE引导启动安装。
常用架构如下图:
Cobbler的工作流程
Cobbler工作流程:
基本原理
PXE到底是什么东东?
PXE(Pre-boot Execution Environment)是由Intel设计的协议,它可以使计算机通过网络启动。协议分为client和server两端,PXE client在网卡的ROM中,当计算机引导时,BIOS把PXE client调入内存执行,并显示出命令菜单,经用户选择后,PXE client将放置在远端的操作系统通过网络下载到本地运行。
既然是通过网络传输,就需要IP地址;也就是说在其启动过程中,客户端请求服务器分配IP地址,之后PXE Client使用TFTP Client 通过TFTP(Trivial File Transfer Protocol)协议下载启动安装程序所需的文件。
简单地说PXE网络安装,客户机通过支持PXE的网卡向网络中发送请求DHCP信息的广播请求IP地址等信息,DHCP服务器给客户端提供IP地址和其它信息(TFTP服务器、启动文件等),之后请求并下载安装需要的文件。在这个过程中需要一台服务器来提供启动文件、安装文件、以及安装过程中的自动应答文件等。下图中介绍了Linux中自动安装系统的详细工作过程:
第一步:PXE Client向DHCP发送请求
首先,将支持PXE的网络接口卡(NIC)的客户端的BIOS设置成为网络启动,通过PXE BootROM(自启动芯片)会以UDP(简单用户数据报协议)发送一个广播请求,向网络中的DHCP服务器索取IP地址等信息。
第二步:DHCP服务器提供信息
DHCP服务器收到客户端的请求,验证是否来至合法的PXE Client的请求,验证通过它将给客户端一个“提供”响应,这个“提供”响应中包含了为客户端分配的IP地址、pxelinux启动程序(TFTP)位置,以及配置文件所在位置。
第三步:PXE客户端请求下载启动文件
客户端收到服务器的“回应”后,会回应一个帧,以请求传送启动所需文件。这些启动文件包括:pxelinux.0、pxelinux.cfg/default、vmlinuz、initrd.img等文件。
第四步:Boot Server响应客户端请求并传送文件
当服务器收到客户端的请求后,他们之间之后将有更多的信息在客户端与服务器之间作应答, 用以决定启动参数。BootROM 由 TFTP 通讯协议从Boot Server下载启动安装程序所必须的文件(pxelinux.0、pxelinux.cfg/default)。default文件下载完成后,会根据该文件中定义的引导顺序,启动Linux安装程序的引导内核。
第五步:请求下载自动应答文件
客户端通过pxelinux.cfg/default文件成功的引导Linux安装内核后,安装程序首先必须确定你通过什么安装介质来安装linux,如果是通过网络安装(NFS, FTP, HTTP),则会在这个时候初始化网络,并定位安装源位置。或许你会说,刚才PXE不是已经获取过IP地址了吗?为什么现在还需要一次?这是由于PXE获取的是安装用的内核以及安装程序等,而安装程序要获取的是安装系统所需的二进制包以及配置文件。由于它们需要的内容不同造成PXE模块和安装程序是相对独立的,PXE的网络配置并不能传递给安装程序。从而进行两次获取IP地址过程。
接着会读取该文件中指定的自动应答文件ks.cfg所在位置,根据该位置请求下载该文件。
第六步:客户端安装操作系统
将ks.cfg文件下载回来后,通过该文件找到OS Server,并按照该文件的配置请求下载安装过程需要的软件包。
OS Server和客户端建立连接后,将开始传输软件包,客户端将开始安装操作系统。安装完成后,将提示重新引导计算机。这个时候注意,在重新引导的过程中一定要将BIOS修改回从硬盘启动,不然的话又会重复的自动安装操作系统。
在上面介绍中PXE client是需要安装Linux的计算机,TFTP Server、DHCP Server和NFS Server运行在另外一台Linux Server上。Bootstrap文件、配置文件、Linux内核都放置在Linux Server上TFTP服务器的根目录下。而Linux根文件系统存放于NFS Server的共享目录中。
PXE client在工作过程中,需要三个二进制文件:bootstrap、Linux 内核和Linux根文件系统。Bootstrap文件是可执行程序,它向用户提供简单的控制界面,并根据用户的选择,下载合适的Linux内核以及Linux根文件系统。
Cobbler实验环境及目的
Cobbler服务器系统:CentOS 6.6 64位
IP地址:192.168.1.180
需要安装部署的Linux系统:
eth0:IP地址段:192.168.1.230-192.168.1.240
子网掩码:255.255.255.0
网关:192.168.1.1
DNS:172.19.0.5
所有服务器均支持PXE网络启动
实现目的:通过配置Cobbler服务器,全自动批量安装部署Linux系统
服务器基本配置:
操作系统CentOS-6.6-x86_64以Basic Server方式安装
ip及子网掩码:
------------------------------------------------------------------------------------------
# tail -2 /etc/sysconfig/network-scripts/ifcfg-eth0
IPADDR=192.168.1.180
NETMASK=255.255.255.0
主机名及网关:
------------------------------------------------------------------------------------------
# tail -2 /etc/sysconfig/network
HOSTNAME=cobbler_server
GATEWAY=192.168.1.1
dns:
------------------------------------------------------------------------------------------
# tail -1 /etc/resolv.conf
nameserver 172.19.0.5
hosts文件
------------------------------------------------------------------------------------------
# tail -1 /etc/hosts
192.168.1.180 cobbler_server cobbler
防火墙:
------------------------------------------------------------------------------------------
# chkconfig iptables off
# chkconfig --list iptables
iptables 0:off1:off2:off3:off4:off5:off6:off
selinux:
------------------------------------------------------------------------------------------
# sed -i '/^SELINUX=.*/c SELINUX=disabled' /etc/selinux/config
# sed -i '/^SELINUX=/ s/^SELINUX=.*/SELINUX=disabled/g' /etc/selinux/config
# grep --color=auto '^SELINUX' /etc/selinux/config
SELINUX=disabled
SELINUXTYPE=targeted
setenforce 0 # 使配置立即生效
这个需要重启机器才能生效,所以建议修改完重启
[root@cobbler ~]# sestatus
SELinux status: disabled
Cobbler的安装部署配置
Cobbler安装环境准备
使用前提
1、你有一个DVD或ISO文件,您的操作系统的分布。
2、服务器有足够的本地磁盘的可用空间在/var/www/cobbler 解压缩DVD/ISO。
3、服务器和客户端都有一个共同的IP网络。
4、这个网络上的DHCP服务器是唯一的实例。
5、在此网络上的客户端是支持PXE网络启动。
yum源配置:
对于centos本身源 ,可根据自己所在地选择离自己近的镜像源,比如mirrors.aliyun.com或mirrors.sohu.com
相关配置文件: /etc/yum.repos.d/epel.repo
yum源配置:
------------------------------------------------------------------------------------------
# cd /etc/yum.repos.d/
# mkdir backup && mv CentOS-* backup
# cat << EOF > epel.repo
[epel]
name=epel
baseurl=http://mirrors.aliyun.com/epel/6Server/x86_64/
enabled=1
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-6
[aliyun]
name=aliyun
baseurl=http://mirrors.aliyun.com/centos/6.6/os/x86_64/
enabled=1
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-6
EOF
# yum clean all ; yum makecache all
Cobbler下载安装及配置
------------------------------------------------------------------------------------------
https://cobbler.github.io/ cobbler项目主页,目前最新版为v2.6.9
https://github.com/cobbler/cobbler/releases/tag/v2.6.9 下载地址
# mkdir /root/soft
# wget -P /root/soft https://codeload.github.com/cobbler/cobbler/tar.gz/v2.6.9
# cd /root/soft
# tar -xvf v2.6.9 && cd cobbler-2.6.9/
# yum install rpm-build git python-devel redhat-rpm-config 安装生成cobber的rpm包所需的相关的包
# cd cobbler-2.6.9/
# make rpms
# cd rpm-build/
# ls -l
total 2148
drwxr-xr-x 2 root root 4096 Jul 13 12:37 BUILDROOT
drwxr-xr-x 14 root root 4096 Jul 13 12:37 cobbler-2.6.9
-rw-r--r-- 1 root root 539816 Jul 13 12:37 cobbler-2.6.9-1.el6.noarch.rpm
-rw-r--r-- 1 root root 662548 Jul 13 12:37 cobbler-2.6.9-1.el6.src.rpm
-rw-r--r-- 1 root root 654287 Jul 13 12:37 cobbler-2.6.9.tar.gz
-rw-r--r-- 1 root root 205864 Jul 13 12:37 cobbler-web-2.6.9-1.el6.noarch.rpm
-rw-r--r-- 1 root root 122568 Jul 13 12:37 koan-2.6.9-1.el6.noarch.rpm
相看cobbler-2.6.9-1.el6.noarch.rpm依赖的包
yum deplist cobbler-2.6.9-1.el6.noarch.rpm
只要配置了以上两个yum源除PyYAML包之外的所有安装cobbler-2.6.9-1.el6.noarch.rpm所需要的包都会自动安装
如果没有安装PyYAML会得到以下错误:
Error: Package: cobbler-2.6.9-1.el6.noarch (/cobbler-2.6.9-1.el6.noarch)
Requires: PyYAML
wget ftp://ftp.is.co.za/mirror/fedora.redhat.com/epel/6/x86_64/PyYAML-3.10-3.el6.x86_64.rpm
yum localinstall PyYAML-3.10-3.el6.x86_64.rpm
yum localinstall cobbler-2.6.9-1.el6.noarch.rpm
yum localinstall cobbler-web-2.6.9-1.el6.noarch.rpm
在使用repository作为yum仓库的时候需要用到一个文件服务器(http,ftp,nfs),cobbler默认使用的是http,注意在安装cobbler的时候会默认安装httpd服务并在/var/www目录下生成一个cobbler目录
cobbler的目录结构:
安装cobbler相关的包
-------------------------------------------------------------------------------------------
额外需要的服务还有httpd rsync tftp-server xinetd,dhcp,如果系统没有装上的话,可以执行以下命令安装
yum install tftp-server xinetd dhcp httpd rsync
安装运行cobbler需要的软件包(这些包都在epel有)
yum install pykickstart debmirror python-ctypes cman
根据需要来,如果要部署 debian/ubuntu 系统需要 debmirror 软件包;
想使用电源管理功能的话需要安装 cman 或fence-agents;我的测试环境不需要bind,就没有安装
配置Cobbler
-------------------------------------------------------------------------------------------
1. 设置http服务
配置httpd配置文件
# vim /etc/httpd/conf/httpd.conf
ServerName 192.168.1.104:80
2. 启用wsgi模块
需要确认mod_wsgi已经正确安装,否则需要手动安装
启用wsgi模块只需要取消 /etc/httpd/conf.d/wsgi.conf 文件中
LoadModule wsgi_module modules/mod_wsgi.so 行的注释
sed -i 's*#LoadModule*LoadModule*g' /etc/httpd/conf.d/wsgi.conf
3. 配置tftp与rsync
修改 rsync 和 tftp 这两个服务的 xinetd 配置,只需修改 rsync 和tftp的配置文件,
将 disable = yes 修改为 disable = no来开启tftp与rsync服务的开机启动
# sed -i '/disable/c \\tdisable \t\t= no' /etc/xinetd.d/tftp 或chkconfig tftp on
# grep --color=auto '^[[:blank:]]*disable' /etc/xinetd.d/tftp
# sed -i -e 's/= yes/= no/g' /etc/xinetd.d/rsync 或# chkconfig rsync on
# grep --color=auto '.*disable' /etc/xinetd.d/rsync
# service xinetd restart
4. 配置Cobbler主配置文件
在启动Cobbler服务之前,你需要修改一些配置文件。在修改每一个文件之前最好先备份下当前的文件。
Cobblerd的配置文件为/etc/cobbler/settings ,这个文件是YAML信息的格式文件。
根据需要修改 cobbler主配置文件: /etc/cobbler/settings
Server 和 Next_Server
server 选项用于为cobbler 服务器指定ip地址,请不要使用0.0.0.0,设置一个你希望和cobbler服务器通过http和tftp等协议链接的IP。
# sed -i 's/server: 127.0.0.1/server: 192.168.1.180/g' /etc/cobbler/settings
# grep '^server' /etc/cobbler/settings
next_server选项是DHCP/PXE网络引导文件被下载的TFTP服务器的IP,在本例中它将和server设置为同一个IP
# sed -i 's/next_server: 127.0.0.1/next_server: 192.168.1.180/g' /etc/cobbler/settings
# grep '^next_server' /etc/cobbler/settings
防止误重装系统
pxe安装只允许一次,防止误操作 ( 在正式环境有用。实际测试来看,这个功能可以屏蔽掉 )
# sed -i 's/pxe_just_once: 0/pxe_just_once: 1/g' /etc/cobbler/settings
# grep '^pxe_just_once' /etc/cobbler/setting
生成Cobbler安装系统root初始密码
(1)这里生成密钥和配置默认密钥。这个设置只针对centos有效。用 openssl 生成一串密码后加入到 cobbler 的配置文件(/etc/cobbler/settings)里,
替换 default_password_crypted 字段
# openssl passwd -1 -salt 'random-phrase-here' 'oracle'
$1$random-p$WbZ3JxhRzCS/1Ne4S9g4Z.
openssl passwd -1 -salt ‘任间字符’ ‘密码’ (是数字1 不是字母L)
这个命令的用法,任意字符可以随便写,这个密码就是安装完系统root的密码了。
(2) 将上面的加密串加入cobbler配置文件中。
# vi /etc/cobbler/settings
# 修改为如下配置(第101行)
default_password_crypted: "$1$random-p$WbZ3JxhRzCS/1Ne4S9g4Z."
5. Cobbler管理rsync
默认为0,不对rsync进行管理,可以修改为1 进行管理
# sed -i 's/manage_rsync: 0/manage_rsync: 1/g' /etc/cobbler/settings
# grep '^manage_rsync' /etc/cobbler/settings
6. Cobbler管理dhcp
为了pxe的启动,需要一个DHCP服务器地址,并直接引导系统,它可以在网络中下载引导文件到TFTP的服务器,cobbler可以通过manage_dhcp的设置来进行管理
配置dhcp服务
首先修改cobbler配置,让cobbler来管理dhcp服务,在做自定义配置时,需要修改dhcp相关配置,以配合PXE启动用,编辑文件/etc/cobbler/settings
manage_dhcp: 1 (注:默认为0 ,表示不进行管理dhcp服务,可以修改为1,对其进行管理。此为使cobbler管理dhcp也就是后面用于同步更新配置信息[cobbler sync])
也可用命令修改:
# sed -i 's/manage_dhcp: 0/manage_dhcp: 1/g' /etc/cobbler/settings
# grep '^manage_dhcp' /etc/cobbler/settings
接下来修改/etc/cobbler/dhcp.template,此文件是cobbler管理dhcp的模板,确保DHCP分配的地址和Cobbler在同一网段
对于此文件,本例中只需要修改如下部分
# 需要修改192.168.1.0为自己网段
subnet 192.168.1.0 netmask 255.255.255.0 {
option routers 192.168.1.1; # 修改自己的路由
option domain-name-servers 172.19.0.5; # 域名服务器地址
option subnet-mask 255.255.255.0; # 子网掩码
range dynamic-bootp 192.168.1.230 192.168.1.240; # 设置dhcp服务器IP地址租用的范围
default-lease-time 21600; #缺省租约时间
max-lease-time 43200; #最大租约时间
next-server $next_server; #指定引导服务器
class "pxeclients" {
match if substring (option vendor-class-identifier, 0, 9) = "PXEClient";
if option pxe-system-type = 00:02 {
filename "ia64/elilo.efi";
} else if option pxe-system-type = 00:06 {
filename "grub/grub-x86.efi";
} else if option pxe-system-type = 00:07 {
filename "grub/grub-x86_64.efi";
} else {
filename "pxelinux.0";
}
}
}
其余部分维持默认值即可。
如果是多网卡需要指定DHCP服务的网络接口
#vi /etc/sysconfig/dhcpd
修改内容如下:
#Command line options here DHCPDARGS=eth0
DHCPDARGS=eth0
# 测试dhcp服务器配置是否正确
# dhcpd # 在执行cobbler sync 之后测试才有效,因为没同步之前文件/etc/dhcp/dhcpd.conf还没有被同步修改
设置debmirror
注释掉@dists和@arches的行
sed -i -e 's|@dists=.*|#@dists=|' /etc/debmirror.conf
sed -i -e 's|@arches=.*|#@arches=|' /etc/debmirror.conf
Cobbler 子命令介绍
-------------------------------------------------------------------------------------------
cobbler check #检查cobbler配置
cobbler sync #步配置到dhcp pxe和数据目录
cobbler list #列出所有的cobbler元素
cobbler import #导入安装的系统光盘镜像
cobbler report #列出各元素的详细信息
cobbler distro #查看导入的发行版系统信息
cobbler profile #查看配置信息
cobbler system #查看添加的系统信息
cobbler reposync #同步yum仓库到本地
cobbler signature update
cobbler --help #获得cobbler的帮助
cobbler distro --help #获得cobbler子命令的帮助
下载引导操作系统文件
------------------------------------------------------------------------------------------
加载部分缺失的网络boot-loaders
# cobbler get-loaders
如果没有启动httpd服务在执行cobbler get-loaders命令时会得到以下错误:
# cobbler get-loaders
httpd does not appear to be running and proxying cobbler, or SELinux is in the way. Original traceback:
Traceback (most recent call last)
检查Cobbler配置
下载引导操作系统文件
------------------------------------------------------------------------------------------
# cobbler check
重启cobbler和更新相关配置
重启服务
# service cobblerd restart
查看cobbler监听的端口:
# ss -tnulp | grep cobbler
tcp LISTEN 0 5 127.0.0.1:25151 *:* users:(("cobblerd",4336,8))
同步最新cobbler配置,它会根据配置自动修改dhcp,bind 等服务,因此我称之为容器的原因。
cobbler sync # 同步配置文件到dhcp服务器
# cobbler sync
启动相关服务并设置开机启动
下载引导操作系统文件
------------------------------------------------------------------------------------------
chkconfig httpd on
chkconfig xinetd on
chkconfig cobblerd on
chkconfig dhcpd on
/etc/init.d/httpd restart
/etc/init.d/xinetd restart
/etc/init.d/cobblerd restart
/etc/init.d/dhcpd restart
设置Cobbler相关服务启动脚本(以上功能也可以使用以下脚本一次完成)
------------------------------------------------------------------------------------------
cat << EOF > /etc/rc.d/init.d/cobbler
#!/bin/sh
# chkconfig: - 80 90
# description:cobbler
case $1 in
start)
/etc/init.d/httpd start
/etc/init.d/xinetd start
/etc/init.d/dhcpd start
/etc/init.d/cobblerd start
;;
stop)
/etc/init.d/httpd stop
/etc/init.d/xinetd stop
/etc/init.d/dhcpd stop
/etc/init.d/cobblerd stop
;;
restart)
/etc/init.d/httpd restart
/etc/init.d/xinetd restart
/etc/init.d/dhcpd restart
/etc/init.d/cobblerd restart
;;
status)
/etc/init.d/httpd status
/etc/init.d/xinetd status
/etc/init.d/dhcpd status
/etc/init.d/cobblerd status
;;
sync)
cobbler sync
;;
*)
echo "Input error,please in put 'start|stop|restart|status|sync'!";
exit 2>&1 >/dev/null &
;;
esac
EOF
chmod +x /etc/rc.d/init.d/cobbler #添加脚本执行权限
chkconfig cobbler on #添加开机启动
service cobbler restart #重启cobbler
Cobbler的Web管理界面的安装与配置
-------------------------------------------------------------------------------------------
1.用web 界面进行管理Cobbler是一个非常简便的方法, 只需要安装cobbler_web 软件包即可
2.设置cobbler web登陆,用户登陆密码
为cobbler添加cobbler用户,并设置密码
htdigest /etc/cobbler/users.digest "Cobbler" cobbler # 添加cobbler用户,提示输入2遍密码确认
3. 配置cobbler web 登录认证
vim /etc/cobbler/modules.conf
修改authentication 部分中的module,修改后如下:
module = authn_configfile # 修改认证方式为密码文件类型
命令自动修改
sed -i 's/authn_denyall/authn_configfile/g' /etc/cobbler/modules.conf
4. 同步cobbler
# cobbler sync /输出*** TASK COMPLETE *** 表示配置无错误
5. 重启cobbler 与http
# /etc/init.d/httpd restart
# /etc/init.d/cobblerd restart
或
service cobbler restart
也可以使用pam认证:
在/etc/cobbler/modules.conf文件中修改认证方式为authn_pam
module = authn_pam
2. 新加用户
useradd cobbleradmin
passwd cobbleradmin
3. 在/etc/cobbler/users.conf文件中把新加的用户加入cobbler管理员组
[admins]
admin = "cobbleradmin"
6. 访问web页面: https://192.168.21.128/cobbler_web 使用刚才创建的用户登录,密码就是上面设置的。
Cobbler的使用
-----------------------------------------------------------------------------------------
1.导入系统镜像到Cobbler
从DVD中导入客户端的OS。这将自动设置为“x86_64”,并将其命名为CentOS-6.6
{注:这需要一点时间,不要急。可查看/var/www/cobbler/ks_mirror/CentOS-6.6-x86_64/目录文件生成情况。}
# mount -t iso9660 -o loop /dev/cdrom /mnt
cobbler import --path=/mnt --name=CentOS-6.6 --arch=x86_64 #导入系统镜像文件,需要一段时间
命令格式:cobbler import --path=镜像路径 -- name=安装引导名 --arch=32位或64位
参数说明:
--name 为安装源定义一个名字
--arch 指定安装源是32位还是64位、ia64, 目前支持的选项有: x86│x86_64│ia64
注意1: 这个安装源的唯一标示 就是根据这两个参数来定义
本例导入成功后,安装源的唯一标示就是:centos6.6 ,如果重复,系统会提示导入失败,其它命令可通过cobbler �Chelp来进行查看。如果需要更多的参数定制,
也可以查看官方文档: man cobbler ,然后查找 import 的配置,可以使用另外一个命令: cobbler distro。
从上面显示信息所知,cobbler会将镜像中的所有安装文件拷贝到本地一份,放在/var/www/cobbler/ks_mirrors下的centos6.6目录下。
同时会创建一个名字为centos6.6的一个发布版本,以及一个名字为centos6.6的profile文件。
注意2:/var/www/cobbler 目录必须具有足够容纳 Linux安装文件的空间。如果空间不够,可以对/var/www/cobbler目录进行移动,建软链接来修改文件存储位置。
例如:
# ln -s /home/cobbler /var/www
导入时间较长, 请耐心等待!!!在正常导完之后会给出如下提示:
*** TASK COMPLETE ***
有时可能会出现卡住的现象,如果导入时间过长,可通过比对文件大小来确定是否已经正常导入
比对文件大小的方法
# du -sh /var/www/cobbler/ks_mirror/CentOS-6.6-x86_64/
# du -sh /mnt
如果上述两个命令执行过显示的结果出入较大, 则可能文件没有正常导入
在重新导入之前最好先把之前的内容删除再导入
cobbler [distro] remove �Cname=[CentOS-6.6] 方括号中的内容根据自己的情况来填写 , 更多命令通过cobbler �Chelp 来查看
剩下其它系统导入方法类似,只是名字和路径更改下即可。重复上面的操作,把其他的系统镜像文件导入到Cobbler导入完成之后,可通过 cobbler list 来查看导入的结果。
2. 创建kickstarts自动安装脚本(For Centos/RHEL)
注意:这是关键步骤之一
由于需要安装的操作系统发行厂商不同,因此KS文件的写法要求,也不一而足。
本文只讨论 CentOs/RHEL 系列的 KS配置
另外:操作系统 版本不同,KS也存在一定的差异,比如CentOS5 ,和CentOS6下就有不同,切记!
官网的文档在此:
CentOS5 的 (网上大多是这个系列的) : http://www.centos.org/docs/5/html/Installation_Guide-en-US/s1-kickstart2-options.html
CentOS6 的 (能看到的配置案例很少) : https://access.redhat.com/knowledge/docs/en-US/Red_Hat_Enterprise_Linux/6/html/Installation_Guide/s1-kickstart2-options.html
默认kickstart文件是/var/lib/cobbler/kickstarts/sample.ks,需要手动为每个发行版单独指定,或单独修改。
自定义ks文件,下面是我自己定义的一个centos6.6模板
cd /var/lib/cobbler/kickstarts #进入默认Kickstart模板目录
vi /var/lib/cobbler/kickstarts/CentOS-6.6-x86_64.ks #创建CentOS-6.5-x86_64安装脚本
cat /var/lib/cobbler/kickstarts/CentOS-6.6-x86_64.ks
#platform=x86, AMD64, or Intel EM64T
# System authorization information
auth --useshadow --enablemd5
# System bootloader configuration
bootloader --location=mbr
# Partition clearing information
clearpart --all --initlabel
#Partition information
part /boot --fstype="ext4" --size=200
part / --fstype="ext4" --size=10000
part /data --fstype="ext4" --size=6000
part swap --fstype="swap" --size=409
# Use text mode install
text
# key
key --skip
# Firewall configuration
firewall --disable
# Run the Setup Agent on first boot
firstboot --disable
# System keyboard
keyboard us
# System language
lang en_US
# Use network installation
url --url=$tree
# If any cobbler repo definitions were referenced in the kickstart profile, include them here.
#$yum_repo_stanza
# Network information
$SNIPPET('network_config')
#network --bootproto=dhcp --device=em1
# Reboot after installation
reboot
#Root password
rootpw --iscrypted $default_password_crypted
# SELinux configuration
selinux --disabled
# Do not configure the X Window System
skipx
# System timezone
timezone Asia/Shanghai
# Install OS instead of upgrade
install
# Clear the Master Boot Record
zerombr
%packages
@ base
@ core
e2fsprogs
-ckermit
grub
-bluez-pin
-firstboot
-rhgb
-zsh
kernel-devel
-OpenIPMI-tools
-xdelta
net-snmp
sysstat
lslk
-nmap
kernel
-synaptics
control-center
libaio
compat-libstdc++-33
subversion
%pre
$SNIPPET('log_ks_pre')
$SNIPPET('kickstart_start')
$SNIPPET('pre_install_network_config')
# Enable installation monitoring
$SNIPPET('pre_anamon')
示例二:
#cat ks.cfg
#platform=x86, AMD64, or Intel EM64T
#version=DEVEL
# Firewall configuration
firewall --disabled
# SELinux configuration
selinux --disabled
# Install OS instead of upgrade
install
# Use network installation
url --url="http://192.168.1.230/cobbler/ks_mirror/CentOS-6.6-x86_64"
# Root password
rootpw --iscrypted $1$N7fw01zf$FN08P4pNKGysYlktuGpdr.
# System authorization information
auth --useshadow --passalgo=sha512
# Use text mode install
text
firstboot --disable
# System keyboard
keyboard us
# System language
lang en_US
# SELinux configuration
selinux --enforcing
# Installation logging level
logging --level=info
# Reboot after installation
reboot
# System timezone
timezone Asia/Shanghai
# Network information
network --bootproto=dhcp --device=eth0 --onboot=on
# System bootloader configuration
bootloader --location=mbr
# Clear the Master Boot Record
zerombr
# Partition clearing information
clearpart --all --initlabel
# Disk partitioning information
part /boot --asprimary --fstype="ext4" --size=200
part / --asprimary --fstype="ext4" --size=20000
part /tmp --fstype="ext4" --size=10000
part swap --fstype="swap" --size=4096
%packages
@core
@development
%end
注意:kickstarts自动安装脚本中不允许有中文(注释有中文也不行),否则会报错
可以使用ksvalidator程序验证kickstart文件中是否有语法错误
# ksvalidator ks.cfg
修改profile指定新的KS启动文件
--------------------------------------------------------------------------------------------------------
按照操作系统版本分别关联系统镜像文件和kickstart自动安装文件
在第一次导入系统镜像时,cobbler会给安装镜像指定一个默认的kickstart自动安装文件
例如:CentOS-6.6-x86_64版本的kickstart自动安装文件为:
/var/lib/cobbler/kickstarts/sample_end.ks
cobbler profile report --name CentOS-6.6-x86_64 #查看profile设置
cobbler distro report --name CentOS-6.6-x86_64 #查看安装镜像文件信息
cobbler profile remove --name=CentOS-6.6-x86_64 #移除profile
cobbler profile add --name=CentOS-6.6-x86_64 --distro=CentOS-6.6-x86_64 --kickstart=/var/lib/cobbler/kickstarts/CentOS-6.6-x86_64.ks #添加
cobbler profile edit --name=CentOS-6.6-x86_64 --distro=CentOS-6.6-x86_64 --kickstart=/var/lib/cobbler/kickstarts/CentOS-6.5-x86_64.ks #编辑
命令:cobbler profile add|edit|remove --name=安装引导名 --distro=系统镜像名 --kickstart=kickstart自动安装文件路径
参数说明:
--name:自定义的安装引导名,注意不能重复
--distro:系统安装镜像名,用cobbler distro list可以查看
--kickstart:与系统镜像文件相关联的kickstart自动安装文件(此文件必须预先准备好 )
更多命令参数可执行cobbler --help查看
再次执行cobbler check 检查下配置
#查看Cobbler列表
cobbler list
cobbler report
cobbler profile report
cobbler distro list # 查看导入列表
#通过profile查找对应的kickstart自动安装文件
例如:
ksfile=$( cobbler profile report --name CentOS-6.5-x86_64|grep -E '^Kickstart' |head -n 1|cut -d ':' -f 2 );
cat $ksfile;
重复上面的操作,把其他的系统镜像文件和kickstart自动安装文件关联起来
注意:
1、kickstart自动安装文件需要预先配置好
2、每次修改完配置文件,需要执行一次同步操作:cobbler sync 配置才能生效
3、kickstart自动安装文件可以用工具生成(需要用到图形界面操作)
yum install system-config-kickstart #安装
yum groupinstall "X Window System" #安装X Window图形界面
system-config-kickstart #运行kickstart配置
service cobbler sync #与cobbler sync作用相同
service cobbler restart #重启cobbler
cobbler import --name=CentOS_7.1 --path=/mnt/ --arch=x86_64
cobbler profile report --name CentOS_7.1-x86_64
cobbler profile edit --name=CentOS_7.1-x86_64 --distro=CentOS_7.1-x86_64 --kickstart=/var/lib/cobbler/kickstarts/CentOS-7.1-x86_64.ks
在使用bobbler profile add添加配置文件以后使用cobbler sync同步,其实是把刚才配置的改变写入
/var/lib/tftpboot/pxelinux.cfg/default
如:
# cobbler profile add --name=centos-6.6-x86_64-basic --distro=CentOS-6.6-x86_64 --kickstart=/var/lib/cobbler/kickstarts/ks.cf
/var/lib/tftpboot/pxelinux.cfg/default的文件见容如下:
# cat /var/lib/tftpboot/pxelinux.cfg/default
DEFAULT menu
PROMPT 0
MENU TITLE Cobbler | http://cobbler.github.com
TIMEOUT 200
TOTALTIMEOUT 6000
ONTIMEOUT local
LABEL local
MENU LABEL (local)
MENU DEFAULT
LOCALBOOT -1
LABEL CentOS-6.6-x86_64
kernel /images/CentOS-6.6-x86_64/vmlinuz
MENU LABEL CentOS-6.6-x86_64
append initrd=/images/CentOS-6.6-x86_64/initrd.img ksdevice=bootif lang= kssendmac text ks=http://192.168.1.230/cblr/svc/op/ks/profile/CentOS-6.6-x86_64
ipappend 2
LABEL centos-6.6-x86_64-basic
kernel /images/CentOS-6.6-x86_64/vmlinuz
MENU LABEL centos-6.6-x86_64-basic
append initrd=/images/CentOS-6.6-x86_64/initrd.img ksdevice=bootif lang= kssendmac text ks=http://192.168.1.230/cblr/svc/op/ks/profile/centos-6.6-x86_64-basic
ipappend 2
为Cobbler添加RPM仓库
命令行下操作,添加epel和epel-test的repo
把repo添加到profle
cobbler repo add --mirror=http://mirrors.ustc.edu.cn/epel/6/x86_64/ --name=epel6-x86_64 --arch=x86_64 --breed=yum
cobbler repo add --mirror=http://mirrors.ustc.edu.cn/epel/testing/6/x86_64/ --name=epel6-x86_64-testing --arch=x86_64 --breed=yum
这个只是对centos有效,如果你吧repo添加到profle,他会自动添加到节点上的repo上,指向内网,非常方便。
# cobbler profile edit --name=CentOS-6.6-x86_64 --repos="epel6-x86_64"
这个时候,就需要同步epel的源到本地,考验你的网络速度
cobbler reposync
也可以通过设置�Cmirror-locally=0不下载到本地,而通过kickstart server去仓库下载rpm包
我内网已经有,所以就直接同步就可以
rsync -avlH [email protected]
:/var/www/cobbler/repo_mirror/ /var/www/cobbler/repo_mirror
另外还有两个源,你可以考虑使用 centos update和centos plus
同步Cobbler配置
获取上述所有配置的cobbler(包括启动DHCP等)
cobbler sync
cobbler会自动进行初始化工作,移除已经存在的启动项,然后根据模板拷贝loader文件。之后再生成pxe的配置文件,生成dhcp的配置文件,最后再重启dhcp服务。
注:每次更改Kickstart 配置文件,都需要使用cobbler sync重新同步所有配置
到目前为止,全部的准备工作已经算全部完成,接下来要做的就是启动服务了。在之前的调试过程中,很多服务已经启动过了,这里只需要启动xinetd服务即可:
/etc/init.d/xinetd start
至此,就可以使用虚拟机来测试Cobbler安装了
添加指定客户机系统配置到Cobbler
1. 指定一个网段使用特定的装机配置
cobbler system add --name=test_000 --ip=192.168.1.0/24 --profile=CentOS-5.9-x86_64
2. 添加一个指定服务器的装机配置
指定服务器的mac地址,并设置好主机名、IP地址等信息,需要提示知道服务器MAC地址,根据MAC应用到具体机器上。
还可以指定ks参数。�Ckickstart=/var/lib/cobbler/kickstarts/webserver.ks
cobbler system add --name=test_001 --hostname=test_001 --mac=00:0C:29:E3:81:32 --interface=eth0 --ip-address=192.168.1.123 --subnet=255.255.255.0 --gateway=192.168.1.1 --static=1 --profile=Centos-5.9-x86_64
3. 修改system配置
机器IP地址变更为192.168.21.118
cobbler system add --name=test_001 --ip=192.168.21.118
变更system配置名称
cobbler system rename --name=test001 --newname=abc
4. 删除system配置
需要删除的profile名称为test_001
cobbler system remove --name=test_001
5. 查看定义的系统列表
cobbler system list
test_001
设置好后,需要执行排错和同步
cobbler check
cobbler sync
Cobbler配置文件
cobbler有许多的配置文件,但是只有少部分基本功能需要修改。
Cobbler最主要的setting file就是/etc/cobbler/settings。Cobbler2.4.0开始引入动态修改模式(Dynamic Settings),我们只需启动这一模式,便不用再手动修改这个文件了。该文件是YAML格式的,如果直接修改setting文件,则必须重启cobbler服务才会生效,但如果是通过CLI命令或者是Web GUI进行修改的话,改动会立即生效,无需重启服务。
修改allow_dynamic_settings的值为1
cd /etc/cobbler/
cp settings settings.save
sed -i 's/^[[:space:]]\+/ /' /etc/cobbler/settings
sed -i 's/allow_dynamic_settings: 0/allow_dynamic_settings: 1/g' /etc/cobbler/settings
修改该配置后重启cobbler服务
/etc/init.d/cobblerd restart
这个时候,你就可以通过命令行来编辑配置
cobbler setting report
cobbler setting report [--name=option]
cobbler setting edit --name=option --value=xxx
命令来动态修改cobbler配置
命令用法参考:CentOS6.5安装和配置Cobbler 2.4:http://www.chenshake.com/centos6-4-installation-and-configuration-cobbler-2-4/
Cobbler目录说明
1、Cobbler配置文件目录:/etc/cobbler
/etc/cobbler/settings #cobbler主配置文件
/etc/cobbler/dhcp.template #DHCP服务的配置模板
/etc/cobbler/tftpd.template #tftp服务的配置模板
/etc/cobbler/rsync.template #rsync服务的配置模板
/etc/cobbler/iso #iso模板配置文件
/etc/cobbler/pxe #pxe模板文件
/etc/cobbler/power #电源的配置文件
/etc/cobbler/users.conf #Web服务授权配置文件
/etc/cobbler/users.digest #用于web访问的用户名密码配置文件
/etc/cobbler/dnsmasq.template #DNS服务的配置模板
/etc/cobbler/modules.conf #Cobbler模块配置文件
2、Cobbler数据目录:/var/lib/cobbler
/var/lib/cobbler/config #配置文件
/var/lib/cobbler/triggers #Cobbler命令
/var/lib/cobbler/kickstarts #默认存放kickstart文件
/var/lib/cobbler/loaders #存放的各种引导程序
3、系统安装镜像目录:/var/www/cobbler
/var/www/cobbler/ks_mirror #导入的系统镜像列表
/var/www/cobbler/images #导入的系统镜像启动文件
/var/www/cobbler/repo_mirror #yum源存储目录
4、日志目录:/var/log/cobbler
/var/log/cobbler/install.log #客户端系统安装日志
/var/log/cobbler/cobbler.log #cobbler日志