Cobbler自动化部署Linux系统简介

目录
  1. 1. Cobbler的安装
  2. 2. Cobbler的配置
    1. 2.1 修改/etc/cobbler/settings文件
    2. 2.2 修改/etc/cobbler/dhcp.template文件
    3. 2.3 修改/etc/xinetd.d/tftp文件
    4. 2.4 启动相关服务
  3. 3. Cobbler的文件目录
  4. 4. 检查错误与同步文件
  5. 5. 导入系统镜像文件
  6. 6. 创建System
  7. 7. 启动被安装主机

作者:杨冬 欢迎转载,也请保留这段声明。谢谢!
出处:https://andyyoung01.github.io/http://andyyoung01.16mb.com/

Cobbler是一个Linux安装服务器,它可以快速安装配置一个网络安装环境。Cobbler通过将设置和管理一个安装服务器所涉及的各种任务集中在一起,简化了整个安装服务器的系统配置。

在之前的文章,介绍过通过salt cloud在云端批量部署计算节点。但是如果我们需要的是快速批量部署物理服务器的话,salt-cloud并不能实现,这样就需要通过其它工具的辅助。
对于Linux系统自动化部署可以采用pxe+dhcp+tftp配合kickstart实现,但是面对多版本、多部署需求的情况下,这种普通的部署方式可能达不到我们的要求;这时候就需要借助cobbler开源自动化部署工具来实现。Cobbler是一款快速的网络系统部署工具,其最大的特点是集合了所有系统部署所需服务,如DHCP、DNS、TFTP,这样你在部署一台操作系统的时候不需要在各个服务之间协调切换。
下面就来看一下Cobbler的简单使用:

1. Cobbler的安装

本文的实验环境为CentOS7(网段为192.168.71.0/24):

1)首先安装epel的源:yum -y install epel-release
2)安装cobbler相关服务:yum -y install cobbler cobbler-web dhcp pykickstart xinetd
3)关闭SELinux:setenforce 0
4)关闭防火墙:systemctl stop firewalld

2. Cobbler的配置

Cobbler配置非常灵活,可以实现的功能也很多。下面配置一个可以通过网络安装CentOS7系统的Cobbler安装服务器。为了简单起见,我们配置一个可以使该服务器运行的最小配置:

2.1 修改/etc/cobbler/settings文件

这里只列出修改了默认值的项:

1
2
3
manage_dhcp: 1
server: 192.168.71.10
next_server: 192.168.71.10

将manage_dhcp设置为1的意思是让Cobbler管理dhcp服务;选项next_server用在DHCP配置文件中,向机器告知提供引导文件的服务器地址;选项server在机器安装期间用于提供Cobbler 服务器地址。

2.2 修改/etc/cobbler/dhcp.template文件

1
2
3
4
5
6
7
subnet 192.168.71.0 netmask 255.255.255.0 {
option routers 192.168.71.2;
option domain-name-servers 192.168.71.2;
option subnet-mask 255.255.255.0;
range dynamic-bootp 192.168.71.20 192.168.71.30;
...
}

该文件主要配置DHCP服务可以分配IP地址的网段、默认网关地址、DNS服务器地址、子网掩码及可以分配的IP地址池。

2.3 修改/etc/xinetd.d/tftp文件

将该文件中disable = yes改为disable = no

2.4 启动相关服务

通过命令systemctl start httpd rsyncd xinetd cobblerd启动相关服务。
可以通过systemctl status httpd rsyncd xinetd cobblerd查看相关服务的信息。

3. Cobbler的文件目录

下面看看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模块配置文件
/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日志

4. 检查错误与同步文件

通过命令cobbler check来检查前面的配置是否正确。这里的输出只是给出建议的配置,有这些错误并不代表着Cobbler安装服务器不能正常运行。下面给出了本机运行上述命令的输出:

The following are potential configuration items that you may want to fix:

1 : 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.
2 : enable and start rsyncd.service with systemctl
3 : debmirror package is not installed, it will be required to manage debian deployments and repositories
4 : 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
5 : 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.

修复第1项配置的方式为运行命令cobbler get-loaders
修复第2项配置的方式为启动rsyncd服务并且使其开机自动运行:systemctl enable rsyncd,由于我们之前已经启动该服务,这里只是使其开机自动运行;
由于我们要安装RHEL系列的Linux发行版,所以忽略第3项配置;
第4项配置提醒我们新安装的Linux默认的root密码仍然为cobbler,这里我们保留默认密码,不做修改;
第5项配置是与电源相关的模块,我们暂时不需要,暂且忽略。

最后,通过命令cobbler sync来应用前面的配置,如果最后输出“*** TASK COMPLETE ***”表示命令成功完成。

5. 导入系统镜像文件

下面需要在cobbler中加入一个完成的系统安装镜像,首先将光盘ISO镜像挂载到某处:

# mount -t iso9660 -o loop,ro /path/to/isos/CentOS-7.0-1406-x86_64-DVD.iso /mnt

将光盘镜像挂载后,便可以运行导入命令了:

# cobbler import --name=CentOS7 --arch=x86_64 --path=/mnt

由于CentOS7光盘镜像较大,上述命令可能需要一段时间才能完成。如果上述命令成功完成,便可以使用cobbler distro listcobbler profile list命令来列出系统导入的镜像:

# cobbler distro list
  CentOS7-x86_64
# cobbler profile list
  CentOS7-x86_64

使用cobbler distro report --name=CentOS7-x86_64cobbler profile report --name=CentOS7-x86_64命令来列出更详细的信息。

6. 创建System

在有了distro和profile之后,就可以创建一个system了。创建一个system对象的最主要的原因是每台机器不同的网络配置。
如果不创建system对象,使用profiles也可以完成系统的安装,只是被安装的系统只能使用DHCP的网络配置,但使用system对象就可以指定更详细的网络配置选项。提供给system对象的信息越详细,cobbler就会更多得自动配置被安装的系统。
下面配置一个system对象:

# cobbler system add --name=test --profile=CentOS7-x86_64

system对象可以根据被安装机器的MAC地址(这里假设为00:0C:29:A5:33:A0)来识别出不同的主机,从而给该主机的某个网络接口指定的特定的ip地址,子网掩码等信息:

# cobbler system edit --name=test --interface=eth0 --mac=00:50:56:38:B2:53 --ip-address=192.168.71.20 --netmask=255.255.255.0 --static=1 --dns-name=test.mydomain.com

被安装系统的默认网关以及机器名并不是按照每个网络接口指定的,所以这里单独添加:

# cobbler system edit --name=test --gateway=192.168.71.2 --hostname=test.mydomain.com

上述命令便完成了一个system对象的创建及编辑。可以使用cobbler system report --name=test命令查看详细信息:

# cobbler system report --name=test
Name                           : test
TFTP Boot Files                : {}
Comment                        : 
Enable gPXE?                   : <<inherit>>
Fetchable Files                : {}
Gateway                        : 192.168.71.2
Hostname                       : test.mydomain.com
Image                          : 
IPv6 Autoconfiguration         : False
IPv6 Default Device            : 
Kernel Options                 : {}
Kernel Options (Post Install)  : {}
Kickstart                      : <<inherit>>
Kickstart Metadata             : {}
LDAP Enabled                   : False
LDAP Management Type           : authconfig
Management Classes             : <<inherit>>
Management Parameters          : <<inherit>>
Monit Enabled                  : False
Name Servers                   : []
Name Servers Search Path       : []
Netboot Enabled                : True
Owners                         : <<inherit>>
Power Management Address       : 
Power Management ID            : 
Power Management Password      : 
Power Management Type          : ipmitool
Power Management Username      : 
Profile                        : CentOS7-x86_64
Internal proxy                 : <<inherit>>
Red Hat Management Key         : <<inherit>>
Red Hat Management Server      : <<inherit>>
Repos Enabled                  : False
Server Override                : <<inherit>>
Status                         : production
Template Files                 : {}
Virt Auto Boot                 : <<inherit>>
Virt CPUs                      : <<inherit>>
Virt Disk Driver Type          : <<inherit>>
Virt File Size(GB)             : <<inherit>>
Virt Path                      : <<inherit>>
Virt PXE Boot                  : 0
Virt RAM (MB)                  : <<inherit>>
Virt Type                      : <<inherit>>
Interface =====                : eth0
Bonding Opts                   : 
Bridge Opts                    : 
CNAMES                         : []
InfiniBand Connected Mode      : False
DHCP Tag                       : 
DNS Name                       : test.mydomain.com
Per-Interface Gateway          : 
Master Interface               : 
Interface Type                 : 
IP Address                     : 192.168.71.20
IPv6 Address                   : 
IPv6 Default Gateway           : 
IPv6 MTU                       : 
IPv6 Prefix                    : 
IPv6 Secondaries               : []
IPv6 Static Routes             : []
MAC Address                    : 00:50:56:38:B2:53
Management Interface           : False
MTU                            : 
Subnet Mask                    : 255.255.255.0
Static                         : True
Static Routes                  : []
Virt Bridge                    : 

虽然在每次编辑了system对象后,cobbler都会进行一次“lite sync”,但通过命令cobbler sync进行一次完整的sync也是不错的,这可以使cobbler自动重新生成dhcpd.conf文件及重启DHCP服务。

7. 启动被安装主机

上述配置全部完成后,就可以启动被安装系统了。如果是使用虚拟机进行安装,确保分配给它的内存不少于2GB,如果分配的内存过小的话,安装过程会报错。启动主机后,由于没有系统,主机会查找可以启动的设备,最后找到网卡,便通过PXE进行网络安装,如下图:
“通过PXE启动系统”
整个安装过程全部都是自动化进行,不需要人为干预。安装结束后,可以通过用户root密码cobbler登录系统。系统的ip地址,主机名等配置已经在安装过程中自动完成。

本文对Cobbler进行了一个简单的探索,配置了一个最简单的Cobbler安装服务器。Cobbler的功能还有很多,可以满足许多部署需求,更详细的信息可以参考其官方文档