1. Cobbler介绍

Cobbler是一个Linux服务器安装的服务,可以通过网络启动(PXE)的方式来快速安装、重装物理服务器和虚拟机,同时还可以管理DHCP,DNS等。

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

Cobbler是较早前的kickstart的升级版,优点是比较容易配置,还自带web界面比较易于管理。

Cobbler内置了一个轻量级配置管理系统,但它也支持和其它配置管理系统集成,如Puppet,暂时不支持SaltStack。

Cobbler官网

1.1 Cobbler集成的服务

  • PXE服务支持

  • DHCP服务管理

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

  • 电源管理

  • Kickstart服务支持

  • YUM仓库管理

  • TFTP(PXE启动时需要)

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

 

1.2 系统环境准备

systemctl stop firewalld.service
setenforce 0
getenforce
#永久关闭: /etc/selinux/config
# 配置阿里云的epel源
wget -O /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-6.repo

2. Cobbler安装配置

2.1 安装Cobbler

yum -y install httpd cobbler cobbler-web dhcp tftp-server pykickstart 
rpm -ql cobbler
# 查看安装的文件,下面列出部分。
/etc/cobbler # 配置文件目录
/etc/cobbler/settings # cobbler主配置文件,这个文件是YAML格式,Cobbler是python写的程序。
/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模块配置文件
/var/lib/cobbler # Cobbler数据目录
/var/lib/cobbler/config # 配置文件
/var/lib/cobbler/kickstarts # 默认存放kickstart文件
/var/lib/cobbler/loaders # 存放的各种引导程序
/var/www/cobbler # 系统安装镜像目录
/var/www/cobbler/ks_mirror # 导入的系统镜像列表
/var/www/cobbler/images # 导入的系统镜像启动文件
/var/www/cobbler/repo_mirror # yum源存储目录
/var/log/cobbler # 日志目录
/var/log/cobbler/install.log # 客户端系统安装日志
/var/log/cobbler/cobbler.log # cobbler日志

2.2 配置Cobbler

systemctl start httpd 
systemctl start cobblerd
cobbler check 
# 第1、2、6个问题,顺便修改其他功能
# 备份
cp /etc/cobbler/settings{,.ori} 

#1.server,Cobbler服务器的IP。
sed -i 's/server: 127.0.0.1/server: 192.168.247.139/' /etc/cobbler/settings

#2.next_server,如果用Cobbler管理DHCP,修改本项,作用不解释,看kickstart。
sed -i 's/next_server: 127.0.0.1/next_server: 192.168.247.139/' /etc/cobbler/settings

#3.用Cobbler管理DHCP
sed -i 's/manage_dhcp: 0/manage_dhcp: 1/' /etc/cobbler/settings

#4.防止循环装系统,适用于服务器第一启动项是PXE启动。
sed -i 's/pxe_just_once: 0/pxe_just_once: 1/' /etc/cobbler/settings

#5.设置新装系统的默认root密码123456。下面的命令来源于提示6。random-phrase-here为干扰码,可以自行设定。
root@cen7zc ~]# openssl passwd -1 -salt 'qinzc' '123456'      
$1$qinzc$qMAl/QeVyLASCGnVBelxE/

[root@cen7zc ~]# vim /etc/cobbler/settings   
default_password_crypted: "$1$qinzc$qMAl/QeVyLASCGnVBelxE/"

#启动TFTP
systemctl status tftp

2.3配置DHCP模板

[root@cen7zc ~]# systemctl restart cobblerd
[root@cen7zc ~]# cobbler check
[root@cen7zc ~]# vim /etc/cobbler/dhcp.template
subnet 192.168.247.0 netmask 255.255.255.0 {
     option routers             192.168.247.2;
     option domain-name-servers 192.168.247.2;
     option subnet-mask         255.255.255.0;
     range dynamic-bootp        192.168.247.100 192.168.247.254;
     default-lease-time         21600;
     max-lease-time             43200;
     next-server                $next_server;
#同步cobbler配置

2.4同步cobbler配置,挂载镜像

[root@cen7zc ~]# systemctl restart cobblerd
[root@cen7zc ~]# cobbler sync
#挂载镜像,并导入
mount /dev/cdrom /mnt
cobbler import --path=/mnt/ --name=CentOS-7-x86_64 --arch=x86_64
ls /var/www/cobbler/ks_mirror  #倒入到此
cobbler distro list # 查看镜像列表
# 最后
[root@cen7zc ~]# cobbler get-loaders # 会自动从官网下载
[root@cen7zc ~]# cd /var/lib/cobbler/loaders/ # 下载的内容
[root@cen7zc ~]# ls
COPYING.elilo     COPYING.yaboot  grub-x86_64.efi  menu.c32    README
COPYING.syslinux  elilo-ia64.efi  grub-x86.efi     pxelinux.0  yaboot

3.ks.cfg文件及调整内核参数

# Cobbler的ks.cfg文件存放位置
ll /var/lib/cobbler/kickstarts/
# 上传准备好的ks文件 (默认使用sample_end.ks文件)
 
# 查看安装镜像文件信息
[root@cen7zc]# cobbler distro list            
   CentOS-6-x86_64
   CentOS-7-x86_64
[root@cen7zc]# cobbler distro report --name=CentOS-7-x86_64
# 查看所有的profile设置
[root@cen7zc]# cobbler profile report

# 编辑profile,修改关联的ks文件
[root@cen7zc]# cobbler profile edit --name=CentOS-7-x86_64 --kickstart=/var/lib/cobbler/kickstarts/CentOS-7-x86_64.cfg

# 修改安装系统的内核参数,在CentOS7系统有一个地方变了,就是网卡名变成eno16777736这种形式,但是为了运维标准化,我们需要将它变成我们常用的eth0,因此使用下面的参数。但要注意是CentOS7才需要下面的步骤,CentOS6不需要。
[root@cen7zc]# cobbler profile edit --name=CentOS-7-x86_64 --kopts='net.ifnames=0 biosdevname=0'

#修改Cobbler提示
[root@linux-node1 ~]# vim /etc/cobbler/pxe/pxedefault.template
MENU TITLE Cobbler | http://www.zyops.com
[root@linux-node1 ~]# cobbler sync # 修改配置都要同步 

# 每次修改完都要同步一次
[root@cen7zc]# cobbler sync

4.开始安装

可以开机直接安装了

6. Cobbler的Web管理界面

配置已经安装cobbler-web软件。

访问网址:http://192.168.247.139/cobbler_web和http://192.168.247.139/cobbler_web

默认用户名:cobbler
默认密码 :cobbler

/etc/cobbler/users.conf       # Web服务授权配置文件
/etc/cobbler/users.digest     # 用于web访问的用户名密码配置文件
[root@linux-node1 ~]# cat /etc/cobbler/users.digest
cobbler:Cobbler:a2d6bae81669d707b72c0bd9806e01f3
# 设置Cobbler web用户登陆密码
# 在Cobbler组添加cobbler用户,提示输入2遍密码确认
[root@linux-node1 ~]# htdigest /etc/cobbler/users.digest "Cobbler" cobbler
Changing password for user cobbler in realm Cobbler
New password: 123456
Re-type new password:123456
[root@linux-node1 ~]# cobbler sync
[root@linux-node1 ~]# /etc/init.d/httpd restart
停止 httpd:                                               [确定]
正在启动 httpd:                                           [确定]
[root@linux-node1 ~]# /etc/init.d/cobblerd restart
Stopping cobbler daemon:                                   [确定]
Starting cobbler daemon:                                   [确定]

7.定制化自动安装 

cobbler system add --name=qinzctest --mac=00:0C:29:9C:4D:76 --profile=CentOS-7-x86_64 --ip-address=192.168.247.10 --subnet=255.255.255.0 --gateway=192.168.247.2 --interface=eth0 --static=1 --hostname=test --name-servers="114.114.114.114 8.8.8.8"

# --name 自定义,但不能重复
# 查看定义的列表
[root@linux-node1 ~]# cobbler system list
qinzctest
[root@linux-node1 ~]# cobbler sync

 

ks.cfg文件简析

# Cobbler for Kickstart Configurator for CentOS 7 by Qinzc
install
url --url=$tree  # 这些$开头的变量都是调用配置文件里的值。
text
lang en_US.UTF-8
keyboard us
zerombr
bootloader --location=mbr --driveorder=sda --append="crashkernel=auto rhgb quiet"
# Network information
$SNIPPET('network_config')
timezone --utc Asia/Shanghai
authconfig --enableshadow --passalgo=sha512
rootpw  --iscrypted $default_password_crypted
clearpart --all --initlabel
part /boot --fstype xfs --size 1024  # CentOS7系统磁盘默认格式xfs
part swap --size 1024
part / --fstype xfs --size 1 --grow
firstboot --disable
selinux --disabled
firewall --disabled
logging --level=info
reboot
%pre
$SNIPPET('log_ks_pre')
$SNIPPET('kickstart_start')
$SNIPPET('pre_install_network_config')
# Enable installation monitoring
$SNIPPET('pre_anamon')
%end
%packages
@base
@compat-libraries
@debugging
@development
tree
nmap
sysstat
lrzsz
dos2unix
telnet
iptraf
ncurses-devel
openssl-devel
zlib-devel
OpenIPMI-tools
screen
%end
%post
systemctl disable postfix.service
%end

 

参考:

https://blog.oldboyedu.com/autoinstall-cobbler/