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