背景

cobbler简介

  Cobbler:是快速网络安装linux操作系统的服务,支持众多的Linux发行版:Red Hat、 Fedora、CentOS、Debian、Ubuntu和SuSE,也可以支持网络安装windows。cobbler是PXE的二次封装,将多种安装参数封装到一个菜单 。
  cobbler是由Python编写并且提供了CLI和Web的管理形式,相对于pxe来说大量机械性工作被程序替代,整个部署流程来说简洁明了,个人操作操作导致的无法正常部署系统的概率有了明显的降低。

cobbler工作原理

基于cobbler实现多版本的系统部署
工作流程:
  1.client配置了网络启动之后(现在大多数主机默认支持无需手动设置),开机后会广播报文请求DHCP服务器(cobbler serveer)提供一个ip地址。
  2.DHCP服务器(cobbler server)收到请求之后会发送response,包括为其分配的IP地址。
  3.client在得到IP地址之后再次向cobbler服务器发送请求OS引导文件的请求。
  4.cobbler server告诉client机器OS引导文件的名字和TFTP server的IP和端口。
  5.client用过得到的IP和端口,进行访问TFTP server,请求下载引导文件。
  6.client执行提供的引导文件,确定其加载的信息,选择要安装的os,期间会再次向cobbler server发送请求kickstart文件和os image文件。
  7.cobbler server 发送client请求的kickstart和OS image文件。
  8.client 加载kickstart文件。
  9.client接收os image,安装os image

cobbler的目录说明

配置文件目录

/etc/cobbler /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 : 模块的配置文件

数据目录

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

镜像目录

/var/www/cobbler/ks_mirror/: 导入的发行版系统的所有数据 /var/www/cobbler/images/ : 导入发行版的kernel和initrd镜像用于远程网络启动 
/var/www/cobbler/repo_mirror/: yum 仓库存储目录 

日志目录

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

cobbler命令介绍

  cobbler check 核对当前设置是否有问题
  cobbler list 列出所有的cobbler元素
  cobbler report 列出元素的详细信息
  cobbler sync 同步配置到数据目录,更改配置最好都要执行下
  cobbler reposync 同步yum仓库
  cobbler distro 查看导入的发行版系统信息
  cobbler system 查看添加的系统信息
  cobbler profile 查看配置信息

服务搭建

1.安装cobbler,设置开机启动,启动服务,cobbler依赖于epel源,因此在安装之前要先配置epel源。

# 安装官方自带的epel源,不过速度比较慢
yum install epel-release -y 
# 安装cobbler
yum install cobbler -y
systemctl enable cobblerd
systemctl start cobblerd
#安装dhcp
yum install dhcp -y

2.执行cobbler check检查当前环境存在的问题。

#执行cobbler check之前要先启动httpd否则会报错
systemctl enable httpd
systemctl starthttpd 
cobbler check

未启动httpd报错显示
基于cobbler实现多版本的系统部署
cobbler check提示
基于cobbler实现多版本的系统部署
3.依次修改提示的问题,根据提示更改完成后重启cobbler
修改/etc/cobbler/settings文件中的server参数的值为提供cobbler服务的主机相 应的IP地址或主机名

vim /etc/cobbler/settings

基于cobbler实现多版本的系统部署
4.修改/etc/cobbler/settings文件中的next_server参数的值为提供PXE服务的主机 相应的IP地址
基于cobbler实现多版本的系统部署
5.如果当前节点可以访问互联网,执行“cobbler get-loaders”命令即可;否则, 需要安装syslinux程序包,而后复制/usr/share/syslinux/{pxelinux.0,memu.c32} 等文件至/var/lib/cobbler/loaders/目录中
基于cobbler实现多版本的系统部署
6.执行“openssl passwd -1 生成密码,并用其替换/etc/cobbler/settings文件中 default_password_crypted参数的值 (这里为了省事密码设为了123456)
基于cobbler实现多版本的系统部署
7.在settings文件中查找manage_dhcp 设置字段为1,使用cobbler管理dhcp
基于cobbler实现多版本的系统部署
8.修改cobbler的dhcp配置模板

vim /etc/cobbler/dhcp.template

基于cobbler实现多版本的系统部署
9.重启cobbler服务,执行cobbler sync同步

systemctl restart cobblerd
cobbler sync

基于cobbler实现多版本的系统部署
10.导入包环境

#挂载光盘到media
mount /dev/sr0 /media
cobbler import --name=centos-7.5-x86_64 --path=/media --arch=x86_64
umount /dev/sr0
#更换6.9系统之后再次挂载
mount /dev/sr0 /media
cobbler import --name=centos-6.9-x86_64 --path=/media --arch=x86_64

这里的i386只是个空的菜单,cobbler默认是最小化安装,它的模板文件在/var/lib/cobbler/kickstarts/sample_end.ks
基于cobbler实现多版本的系统部署
11.如果想使用自己定义的ks文件也可以将文件放入/var/lib/cobbler/kickstarts/目录下之后使用指令添加(要注意自定义的ks文件中http路径要改了$tree继承cobbler的路径即可)

cp centos6-mini.cfg centos7-mini.cfg /var/lib/cobbler/kickstarts/
#这里的ks文件是之前生成的这里仅仅做添加演示
cobbler profile add --name=centos6.9-mini --distro=centos-6.9-x86_64 --kickstart=/var/lib/cobbler/kickstarts/centos6-mini.cfg
cobbler profile add --name=centos7.5-mini --distro=centos-7.5-x86_64 --kickstart=/var/lib/cobbler/kickstarts/centos7-mini.cfg
#验证
cobbler profile list

基于cobbler实现多版本的系统部署
12.到这里为止基本构建完毕,接下来重启各种服务

systemctl restart cobblerd
cobbler sync #可以选择不同步也行
systemctl restart tftp #如果是6系统使用xinetd调用
systemctl restart httpd

验证端口

ss -tunlp

基于cobbler实现多版本的系统部署

部署验证

将cobbler主机和2台空白机器置于同一物理网络中开启空白机器等待
基于cobbler实现多版本的系统部署
一台选择centos6一台选择centos7安装,(后添加的ks选项也是最小安装,这里就不选了,就按照默认选项执行安装)
开始安装
基于cobbler实现多版本的系统部署
基于cobbler实现多版本的系统部署
等待安装完成即可
centos6.9 部署完成
基于cobbler实现多版本的系统部署
基于cobbler实现多版本的系统部署
centos7 部署完成
基于cobbler实现多版本的系统部署

后续

cobbler还提供了web管理界面

安装web界面

yum install cobbler-web

认证方式
认证方法配置文件:/etc/cobbler/modules.conf
支持多种认证方法:

authn_configfile 
authn_pam 

使用authn_configfile模块认证cobbler_web用户

vim /etc/cobbler/modules.conf    
[authentication]   
module=authn_configfile 

基于cobbler实现多版本的系统部署
创建其认证文件/etc/cobbler/users.digest,并添加所需的用户

htdigest -c /etc/cobbler/users.digest Cobbler admin    

重启cobbler服务和httpd
通过https://cobblerserver/cobbler_web访问
注意:添加第一个用户时,使用“-c”选项,后续添加其他用户时不要再使 用,cobbler_web的realm只能为Cobbler
基于cobbler实现多版本的系统部署

使用authn_pam模块认证cobbler_web用户

vim /etc/cobbler/modules.conf    
[authentication]     
module = authn_pam 

创建cobbler用户:

useradd cobbler 
echo 123 | passwd --stdin cobbler
vim  /etc/cobbler/users.conf    
[admins]  
admin = "cobbler“ 

Web访问cobbler
重启cobblerd服务
通过https://cobblerserver/cobbler_web访问
基于cobbler实现多版本的系统部署