玩转企业常见应用与服务系列(十三):自动化安装工具 Cobbler 详解

2023-11-29 15:02:05 浏览数 (1)

Cobbler简介

Cobbler可以用来快速建立Linux网络安装环境。

Cobbler是一个Linux服务器安装的服务,可以通过网络启动(PXE)的方式来快速安装、重装物理服务器和虚拟机,同时还可以管理DHCP,DNS等。Cobbler可以使用命令行方式管理,也提供了基于Web的界面管理工具(cobbler-web),还提供了API接口,可以方便二次开发使用。

Cobbler是较早前的kickstart的升级版,优点是比较容易配置,还自带web界面比较易于管理。Cobbler内置了一个轻量级配置管理系统,但它也支持和其它配置管理系统集成,如Puppet。

  • 官网:http//cobbler.github.io/
Cobbler集成的服务
  • PXE服务支持
  • DHCP服务管理
  • DNS服务管理
  • 电源管理
  • Kickstart服务支持
  • YUM仓库管理
  • TFTP
  • Apache(提供kickstart的安装源,并提供定制化的kickstart配置)
Cobbler 可以干什么?
  • 服务器上架后,可以手动选择需要安装的系统(如:Centos6.8 或 Centos 7.3)
  • 服务器上架后,能够根据需求,安装配置操作系统(如:修改IP地址、主机名、选择安装包)
  • 系统安装后,可以自定义的执行脚本,完成系统基础软件初始化(如:Zabbix安装配置、SaltStack安装配置)
  • 可以当内部YUM源,并在系统安装时进行初始化
  • 可以重装系统
  • Cobbler支持API,可以无缝融合到自建运维平台中
  • Cobbler支持网卡的路由配置、DNS配置、bonding

Cobbler对应关系

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

从上图可以看出,Cobbler有五种实体,这5种实体名称和作用如下所示:

  • 1、发行版。 发行版表示一个操作系统,承载了内核和initrd的信息(开机自启服务的信息),以及其他内核参数。
  • 2、配置文件。 配置文件包括一个发行版、一个kickstart文件以及可能的存储库,还包括更多特定的内核参数等其他数据。
  • 3、系统。 表示要配给的设备。包括一个配置文件、一个系统镜像、IP和MAC地址,电源管理等其他信息。
  • 4、镜像。 可以替换一个包含不属此类别的文件的发行版对象。
  • 5、存储库。 保存一个YUM或者是rsync存储库镜像信息。

Cobbler 工作原理

cobbler在启动后,需要首先进行自身的检查,检查无误后,就可以统筹开启TFTP、DHCP等的各种服务,等到客户端链接。客户端开机后,需要PXE启动的会使用DHCP协议向cobbler请求IP地址,cobbler在给客户端提供IP地址的同时也会告知客户端其下一跳的IP地址。之后客户端会使用TFTP协议请求加载文件,引导客户端启动并安装系统。同时,为了防止设备被重复安装,cobbler还会记录下该设备的安装信息,当该设备再次接入时,cobbler便不会再对其进行引导。

cobbler 安装

本次我们使用Vmware虚拟机进行cobbler的安装与配置相关实验,为了保证实验的成功,我们需要将cobbler安装的设备网络设置为NAT或者是仅主机模式,同时取消Vmware的DHCP功能。

当我们完成上述网络设置后,就可以安装cobbler了。如果使用YUM安装的方式安装cobbler,则要求必须有epel的源,如果还没有安装epel的源,则可以执行以下命令:

代码语言:javascript复制
yum -y install epel-release

在安装完epel的扩展源之后,我们就可以安装cobbler了,尽管cobbler可以统筹配置DHCP、TFTP和HTTP等工具,但是我们还是需要手动安装上述软件。因此,cobbler及其相关软件安装命令如下:

代码语言:javascript复制
yum -y install cobbler cobbler-web tftp-server dhcp httpd xinetd

上述软件中,cobbler-web是cobbler的网络页面工具,xinetd是在centos版本中管理dhcp、tftp等小服务的工具。cobbler安装后,其重要相关文件如下所示:

代码语言:javascript复制
/etc/cobbler/ #cobbler的配置文件目录
/etc/cobbler/settings #cobbler的主配置文件
/etc/cobbler/dhcp.template #cobbler的DHCP服务配置模板
/etc/cobbler/tftpd.template #cobbler的TFTP服务配置模板
/etc/cobbler/users.conf #cobbler-web的web服务授权配置文件
/var/log/cobbler/cobbler.log #cobbler的日志文件
/var/www/cobbler/ #cobbler的系统安装镜像目录

cobbler开启命令为:

代码语言:javascript复制
systemctl start cobblerd

此外,由于cobbler的运行需要调动其他服务,因此,我们必须要关闭Linux系统自带的防火墙等设备。

cobbler检查

在cobbler安装完成后,我们就可以进行cobbler的配置了。首先,执行命令:

代码语言:javascript复制
cobbler check

来检查一下当前系统的配置,结果如下:

可以看出,在cobbler的检查中,当前系统有一系列的问题,我们必须将这些问题解决,才可以继续安装使用cobbler,下面,我们就来解决一下上述问题。

server配置问题解决

我们需要配置cobbler的监听IP地址,执行命令:

代码语言:javascript复制
cobbler setting edit --name=server --value=192.168.136.15

注意,这种修改方式属于直接执行命令对cobbler的配置进行动态修改,其实cobbler在进行检查的时候会读取主配置文件/etc/cobbler/settings中的参数。因此,这种修改方式当cobbler重启后就会失效,想要让cobbler的相关配置永久生效,我们可以打开cobbler的主配置文件,找到相关参数,进行修改,server参数在主配置文件中如下所示,其余参数也是类似的方法。

此外,上述这种使用命令进行修改的属于动态修改,还必须在cobbler的配置文件中设置打开相关参数,如下所示:

只有将cobbler的配置文件中allow_dynamic_settings参数设置为1,cobbler才可以进行动态的配置修改。注意,该参数默认为0,即处于关闭状态,当修改完上述设置后,我们还需要重启cobbler之后才会生效。

next_server配置问题解决

我们需要配置DHCP的下一条服务器,因为在本实战中进行PXE安装的还是本设置,因此需要执行以下命令:

代码语言:javascript复制
cobbler setting edit --name=next_server --value=192.168.136.15
tftp_server配置问题解决

接下来,我们需要打开tftp的配置文件/etc/xinetd.d/tftp,将该配置文件中如下的disable中的yes改成no。

boot-loaders问题解决

执行命令:

代码语言:javascript复制
cobbler get-loaders

即可使得cobbler远程自动下载。

rsync服务开启

运行cobbler需要开启rsync服务,相关命令如下:

代码语言:javascript复制
systemctl start rsyncd
systemctl enabled rsyncd
pykickstart模块下载

此外,我们还需要下载pykickstart,执行命令:

代码语言:javascript复制
yum install -y kickstart

即可。

系统安装初始密码设置

首先,安装openssl,执行命令:

代码语言:javascript复制
yum install -y openssl

其次,使用openssl生成系统的初始化密码,执行命令:

代码语言:javascript复制
openssl passwd -1 -salt `openssl rand -hex 4` 'admin'

在上述命令中,passwd表示生成密码,-1表示使用md5算法,-salt表示在进行md5加密时进行加盐操作(所谓加盐,就是指在正常密码的后面,增加一个随机的字符串,将原始的密码和盐作为密码,以增强密码破解的复杂度)。反引号后面的命令表示使用openssl生成一个4位16禁止的随机数,最后的admin表示加密的内容是admin。该命令执行结果如下:

可以看出,该命令执行后会反馈一个字符串,这个字符串就是admin的密码。最后,我们要把该密码添加到cobbler的配置中,执行命令:

代码语言:javascript复制
cobbler setting edit --name=default_password_crypted --values= $1$401e8e99$je25bcENyoRHNlXoYOoI8/

value的值就是上个命令执行的结果。

安装fencing tools

最后,我们还需要安装电源管理模块,执行命令:

代码语言:javascript复制
yum install -y fence-agents

即可完成配置。

cobbler配置

在上述配置完成后,我们还需要进行DHCP的配置。

DHCP配置

首先,我们先允许修改cobbler管理DHCP,打开cobbler的主配置文件,找到参数:manage_dhcp,将其修改为1,修改完成后的文件如下所示:

接下来,我们来编辑cobbler的DHCP配置文件/etc/cobbler/dhcp.template文件,将subnet字段修改为符合我们的网络情况,在我的设备上,修改完成后的配置文件如下:

同步cobbler配置

在上述所有配置完成后,我们还需要执行命令:

代码语言:javascript复制
cobbler sync  

来同步cobbler的配置,该命令的效果是使得cobbler用自身的配置修改TFTP、DHCP等服务的配置。该命令执行结果如下:

效果检验

最后,让我们来检验一下刚才配置的结果。新创建一个虚拟机,选择空白安装系统,选择网络为NAT模式,之后开机,尝试是否能够通过cobbler进行引导,结果如下:

尽管由于我们还没有导入镜像,导致cobbler还无法为新设备安装系统,但是cobbler的配置已经成功了!

利用Cobbler安装CentOS7系统

cobbler镜像导入

首先,我们将centos7的镜像以光盘的形式进行导入,如下所示:

接下来,我们需要对centos7的镜像进行挂载,执行命令:

代码语言:javascript复制
mkdir -p /centos7
mount -o loop /dev/sr1 /centos7

挂载完成后如下所示:

接下来,我们就可以将该镜像导入到cobbler中去了,执行命令:

代码语言:javascript复制
cobbler import --path=/centos7 --name=centos7 --arch=x86_64

执行结果如下:

将CentOS7镜像导入后,我们查看该镜像的配置文件如下所示:

ks文件设置

CentOS7的系统,我们就无需考虑分区的问题了,直接将sample_end.ks文件复制为centos7.ks文件,使用即可。执行命令:

代码语言:javascript复制
cobbler profile edit --name=centos7-x86_64 --kickstart=/var/lib/cobbler/kickstarts/centos7.ks

即可。完成上述配置后,查看cobbler的配置文件如下所示:

可以看出,该镜像的配置文件已经是我们新创建的ks文件了。类似的,我们也可以修改ks文件,包括时区、防火墙等配置,这需要根据我们的需求进行修改。

效果检验

最后,我们对上述配置进行检验。首先,新创建一个虚拟机,该虚拟机所处的网络需要跟cobbler系统所处的网络一致。新的虚拟机不安装任何操作系统,直接启动,过程如下所示:

可以看出,新的虚拟机上显示了cobbler的系统安装页面,并且可以选择。我们在这里选择centos7系统,尝试进行安装,结果如下:

安装系统的过程就不再赘述了。

CentOS7系统安装完毕,实验成功!

cobbler-web 管理

简介

cobbler支持在Web页面上进行管理,包括上传镜像、编辑kickstart等等。在安装cobbler和cobbler-web后,直接访问 https://X.X.X.X/cobbler-web,即可访问cobbler的Web管理页面,如下所示:

注意,cobbler只支持使用https,因此,当我们使用http来进行访问时,会出现如下的页面:

cobber-web认证

在上图中,我们可以看到,想要通过cobbler-web对cobbler进行管理控制需要认证。在默认情况下,cobbler-web的登录用户名和口令都是cobbler。输入用户名和口令后,结果如下所示:

cobbler的用户名、密码等信息存储在/etc/cobbler/users.digest文件中,如下所示:

从图中可以看到,在文件中,分别存储了用户名、用户组和用户密码,这三个信息以分号间隔。

cobbler-web登录认证管理

有时,我们需要更改cobbler-web的登录密码,或者是新创建cobbler-web的管理用户。此时,我们应该使用htdigest命令。修改cobbler用户的密码过程如下,执行命令:

代码语言:javascript复制
htdigest /etc/cobbler/users.digest "Cobbler" cobbler

在上述命令中,双引号内的"Cobbler"表示用户组,后面的cobbler表示用户名称,执行后,根据提示,输入两次新的密码,即可完成密码修改。执行过程如下所示:

完成后,我们还需要进行cobbler的同步,执行命令:

代码语言:javascript复制
cobbler sync

即可。这时,我们尝试使用修改后的密码登录,发现成功!我们在执行上述命令时,如果指定的用户组和用户名不存在,则会创建新的用户组/名,执行结果如下:

相应的,在创建后,我们的/etc/cobbler/users.digest文件也会发生变化,如下所示:

cobbler常用命令介绍

在安装cobbler的设备上,执行命令:

代码语言:javascript复制
cobbler --help

可以查看cobbler的命令,执行结果如下所示:

从上图中可以看到,cobbler的命令比较简单,常用命令主要有以下9种:

1、cobbler check

用于检查cobbler的当前配置是否正常。

2、cobbler list

用于列出当前所有的cobbler元素,比如镜像、repo仓库、配置文件等等。该命令执行结果如下:

3、cobbler report

该命令用于查看指定cobbler元素的详细信息。

4、cobbler sync

该命令用于同步配置到cobbler的数据目录,对于cobbler的任何更改,都应该在更改后执行这条命令用于同步。

5、cobbler reposync

该命令用于同步yum仓库。

6、cobbler distro

该命令用于查看导入的cobbler镜像信息。

7、cobbler system

该命令用于查看添加的系统信息。

8、cobbler profile

该命令用于查看配置信息。

9、cobbler import

该命令用于向cobbler中导入镜像文件。

cobbler常用命令示例

最后,我们再来列举一下在cobbler的实际使用过程中的cobbler命令示例。

代码语言:javascript复制
#导入系统镜像
cobbler import --path=/centos6 --name=centos6 --arch=x86_64

#修改系统的ks文件
cobbler profile edit --name=centos6-x86_64 --kickstart=/var/lib/cobbler/kickstarts/centos6.ks

#查看系统镜像信息
cobbler distro report --name=centos6-x86_64

#查看系统的配置文件
cobbler profile report --name=centos6-x86_64

以上就是今天同大家分享的关于自动化装机应用 Cobbler 的原理与实践过程。

参考链接:https://blog.csdn.net/weixin_40228200 /article/details/123222782 https://blog.csdn.net/ weixin_40228200/article/details/123401593

0 人点赞