cobbler实现系统自动化部署

2022/3/27 6:24:50

本文主要是介绍cobbler实现系统自动化部署,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

一、Cobbler

1.pex的二次封装,由Python开发,提供CLI和Web管理,cobbler在epel源中,安装时需要配置epel源。

 

2.工作原理:

client裸机配置了从网络启动后,开机后会广播包请求DHCP服务器(cobbler server)发送其分配
好的一个IP
DHCP服务器(cobbler server)收到请求后发送responese,包括其ip地址
client裸机拿到ip后再向cobbler server发送请求OS引导文件的请求
cobbler server告诉裸机OS引导文件的名字和TFTP server的ip和port
client裸机通过上面告知的TFTP server地址通信,下载引导文件
client裸机执行执行该引导文件,确定加载信息,选择要安装的os,期间会再向cobbler server请求
kickstart文件和os image
cobbler server发送请求的kickstart和os iamge
client裸机加载kickstart文件
client裸机接收os image,安装该os image

3.配置文件:

/etc/cobbler/settings  #cobbler 主配置文件
/etc/cobbler/iso/  #iso模板配置文件
/etc/cobbler/pxe   #pxe模板文件
/etc/cobbler/power  #电源配置文件
/etc/cobbler/user.conf   #web服务授权配置文件
/etc/cobbler/users.digest  #web访问的用户名密码配置文件
/etc/cobbler/dhcp.template #dhcp服务器的的配置模板
/etc/cobbler/dnsmasq.template #dns服务器的配置模板
/etc/cobbler/tftpd.template  #tftp服务的配置模板
/etc/cobbler/modules.conf #cobbler模块的配置文件

4.数据目录:

/var/lib/cobbler/config/     #用于存放distros,system,profiles 等信息的配置文件
/var/lib/cobbler/triggers/   #用于存放用户定义的cobbler命令
/var/lib/cobbler/kickstarts/  # 默认存放kickstart文件
/var/lib/cobbler/loaders/     #存放各种引导程序

5.镜像目录

/var/log/cobbler/installing  #客户端安装日志
/var/log/cobbler/cobbler.log #cobbler日志

6.cobbler常用命令

cobbler check 核对当前设置是否有问题

cobbler list 列出所有的cobbler元素

cobbler report 列出元素的详细信息

cobbler sync 同步配置到数据目录,更改配置最好都要执行下

cobbler reposync 同步yum仓库

cobbler distro 查看导入的发行版系统信息

cobbler system 查看添加的系统信息

cobbler profile 查看配置信息

cobbler profile report --name=xxxx 查看ks文件的详细信息

范例:centos7基于cobbler实现系统的自动化安装

安装cobbler包和dhcp包

[root@centos7 ~]#yum -y install dhcp cobbler

因为cobbler包对httpd和tftp有依赖关系,所以顺带装了

启用httpd,tftp,dhcpd,cobblerd服务

[root@centos7 ~]# systemctl enable --now cobblerd dhcpd httpd tftp

dhcp暂时起不来,我们需要进行配置

执行cobbler check命令

[root@centos7 ~]# cobbler check
The following are potential configuration items that you may want to fix:

1 : The 'server' field in /etc/cobbler/settings must be set to something other than localhost, or kickstarting features will not work.  This should be a resolvable hostname or IP for the boot server as reachable by all machines that will use it.
2 : For PXE to be functional, the 'next_server' field in /etc/cobbler/settings must be set to something other than 127.0.0.1, and should match the IP of the boot server on the PXE network.
3 : SELinux is enabled. Please review the following wiki page for details on ensuring cobbler works correctly in your SELinux environment:
    https://github.com/cobbler/cobbler/wiki/Selinux
4 : change 'disable' to 'no' in /etc/xinetd.d/tftp
5 : Some network boot-loaders are missing from /var/lib/cobbler/loaders.  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.
6 : enable and start rsyncd.service with systemctl
7 : debmirror package is not installed, it will be required to manage debian deployments and repositories
8 : 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
9 : 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.

找到server:/etc/cobbler/settings,并修改配置

[root@centos7 ~]# vim /etc/cobbler/settings

 

 

自己生成一个密码,并修改其文件将原密码替换

[root@centos7 ~]# openssl passwd -1 123456
$1$ggsV53Cw$XE2391b9SWl64gT1BNxO5.

 

 重启cobbler服务

[root@centos7 ~]# systemctl restart cobblerd

执行cobbler get-loaders命令下载相关文件

[root@centos7 ~]# cobbler get-loaders

如果该命令失效,则需要复制两个文件

[root@centos7 ~]# cp /usr/share/syslinux/pxelinux.0 /var/lib/cobbler/loaders/
[root@centos7 ~]# cp /usr/share/syslinux/menu.c32 /var/lib/cobbler/loaders/

再执行cobbler sync

[root@centos7 ~]# cobbler sync

修改/etc/cobbler/settings

修改dhcp模板配置文件/etc/cobbler/dhcp.template

[root@centos7 ~]# vim /etc/cobbler/dhcp.template 

 

 重启cobbler服务,并同步到真正的dhcp的配置文件/etc/dhcp/dhcp.conf

[root@centos7 ~]# systemctl restart cobblerd
[root@centos7 ~]# cobbler sync

查看dhcpd服务

[root@centos7 ~]# systemctl status dhcpd

 

 现在菜单已经生成了,但是里面什么都没有

[root@centos7 ~]# tree /var/lib/tftpboot/
[root@centos7 ~]# cat /var/lib/tftpboot/pxelinux.cfg/default 

 

 彻底修改菜单名

[root@centos7 ~]# vim /etc/cobbler/pxe/pxedefault.template

 

 执行cobbler sync同步

[root@centos7 ~]# cobbler sync

 将centos7光盘导入

[root@centos7 test1]# cobbler import --name=centos-7-x86_64 --path=/mnt/test1 -- arch=x86_64

实际是将centos7安装文件拷到/var/www/cobbler中

在这个机器上再增加一个8的光盘,将其挂载,然后也将其导入

先扫描出新光盘

[root@centos7 test1]# echo '- - -'  > /sys/class/scsi_host/host0/scan;echo '- - -'  > /sys/class/scsi_host/host1/scan;echo '- - -'  > /sys/class/scsi_host/host2/scan

将其挂载

[root@centos7 test1]# mkdir /mnt/test2
[root@centos7 test1]# mount /dev/sr1 /mnt/test2
mount: /dev/sr1 is write-protected, mounting read-only

将centos8光盘导入

[root@centos7 test1]# cobbler import --name=centos-8-x86_64 --path=/mnt/test2 -- arch=x86_64

我的是8.5的有bug不能直接导,需要修改配置文件

[root@centos7 ~]#vim /var/lib/cobbler/distro_signatures.json

#修改第70行添加centos-linux

 

 重新启动cobbler服务并同步

[root@centos7 ~]# systemctl restart cobblerd
[root@centos7 ~]# cobbler sync

再次导入

[root@centos7 ~]# cobbler import --name=centos-8-x86_64 --path=/mnt/test2 -- arch=x86_64

 

 将centos7、8的应答文件备好并修改

[root@centos8 ks]# vim centos7.cfg 

[root@centos8 ks]# vim centos8.cfg 

 

 

 正常情况下我们现在就有两个菜单了

[root@centos7 ~]# cobbler distro list
   centos-7-x86_64
   centos-8-x86_64

将应答文件关联,并加至菜单

[root@centos7 ~]# cp centos* /var/lib/cobbler/kickstarts/

 

[root@centos7 ~]# cobbler profile add --name=CentOS-8_mini --distro=CentOS-8-x86_64 --kickstart=/var/lib/cobbler/kickstarts/centos8.cfg
[root@centos7 ~]# cobbler profile add --name=CentOS-7_mini --distro=CentOS-7-x86_64 --kickstart=/var/lib/cobbler/kickstarts/centos7.cfg

现在我们有四个菜单

[root@centos7 ~]# cat /var/lib/tftpboot/pxelinux.cfg/default 

将系统两个菜单删掉

[root@centos7 ~]# cobbler profile remove --name=centos-8-x86_64
[root@centos7 ~]# cobbler profile remove --name=centos-7-x86_64
[root@centos7 ~]# cobbler profile list
   CentOS-7_mini
   CentOS-8_mini

大功告成!

 

 扩展:cobbler实现web功能

安装cobbler-web包

[root@centos7 ~]# yum -y install cobbler-web

重启httpd服务

[root@centos7 ~]# systemctl status httpd

 

 

修改cobbler用户名和密码

创建一个给Cobbler服务用的账号

[root@centos7 ~]# htdigest -c /etc/cobbler/users.digest Cobbler weilan

这里的-c表示重新创建,如果想加一个账号就把-c去了

查看存放账号密码的文件

[root@centos7 ~]# cat /etc/cobbler/users.digest

 

 拿新账号登录

 

 

 

 

记录于2022-3-27-0:11 weilan



这篇关于cobbler实现系统自动化部署的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!


扫一扫关注最新编程教程