本公众号内容大多由平时操作记录,如果有错误地方欢迎留言指
接着前一片篇文章《Cobbler自动化安装原理》继续,这里介绍Cobbler的安装和使用。
部署事项
环境准备
epel源安装
安装cobbler,DHCP,httpd,cobbler_web(web环境可能会有Django依赖错误)
配置cobbler, cobbler check
挂载光盘,导入RPM包文件 cobbler import
创建kickstart应答文件
创建启动菜单项 cobbler profile add
安装测试
安装前环境准备
因为cobbler服务要用到DHCP向新加主机分配地址,而VM虚拟机软件也具有DHCP功能,所以要禁用VM软件中的桥接模式的DHCP功能。
服务端信息:
系统版本:
[root@Cobbler ~]# cat /etc/redhat-release
CentOS Linux release 7.4.1708 (Core)
[root@Cobbler ~]# uname -r
3.10.0-693.el7.x86_64
网卡信息:
网卡1:192.168.214.134 (提供外网连接,安装等)
网卡2: 172.20.110.15 (桥接模式,向客户机提供DHCP,HTTP服务)
关闭防火墙与selinux
[root@Cobbler ~]# setenforce 0
[root@Cobbler ~]# getenforce
Disabled
[root@Cobbler ~]# iptables -F
[root@Cobbler ~]# iptables -X
[root@Cobbler ~]# systemctl stop firewalld
注意:centos7上的防火墙即使关闭,其中的规则任然会起作用,所以要清一下规则
安装epel源
[root@Cobbler ~]# curl -o /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo
[root@Cobbler ~]# curl -o /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-7.repo
安装Cobbler
cobbler两个核心组件:
cobbler
cobbler-web
其他依赖包:
pykickstart :cobbler会调用pykickstart中语法验证工具检验kickstart文件
debmirror : 可以安装deb系列的系统
syslinux :提供pxelinux.0文件
http
DHCP #使用coobler安装那么dhcp就不用设置 next-server这一项
tftp #提供启动文件传输
tftp-server
xinetd #守护进程服务
在安装cobbler时会自动将一部分的依赖包安装好,也可以自己全部指定安装。
安装上面的那些包
[root@Cobbler ~]# yum install httpd xinetd tftp tftp-server dhcp syslinux -y
[root@Cobbler ~]# yum install cobbler cobbler-web pykickstart debmirror -y
挂载光盘并测试httpd
这里挂载光盘的目的是将光盘挂载到http的网页文件目录下,然后进行访问测试一下http服务是否正常,这里挂载的光盘是centos6.9的光盘镜像,待会自动安装也是安装这个系统。
在/var/www/html/目录下新建一个目录为centos,将光盘挂载到centos,启动httpd服务访问测试httpd服务是否正常
[root@Cobbler ~]# mkdir -p /var/www/html/centos
[root@Cobbler ~]# mount /dev/sr0 /var/www/html/centos/
mount: /dev/sr0 is write-protected, mounting read-only
[root@Cobbler ~]# ls /var/www/html/centos/
CentOS_BuildTag images repodata RPM-GPG-KEY-CentOS-Testing-6
EFI isolinux RPM-GPG-KEY-CentOS-6 TRANS.TBL
EULA Packages RPM-GPG-KEY-CentOS-Debug-6
GPL RELEASE-NOTES-en-US.html RPM-GPG-KEY-CentOS-Security-6
启动httpd
[root@Cobbler ~]# systemctl start httpd
[root@Cobbler ~]# ss -tnl | grep :80
LISTEN 0 128 :::80 :::*
测试访问一下

测试访问说明httpd服务正常,然后就可以把挂载的光盘卸载了,因为后面要导入镜像时要重新挂载到别的路径
[root@Cobbler ~]# umount /var/www/html/centos/
检查配置Cobbler
启动Cobbler
[root@Cobbler ~]# systemctl start cobblerd
注意,必须启动cobblerd和httpd服务,cobbler check指令才能执行
执行cobbler check,根据检查结果提示做出相应修改
检查出现了9个问题,一个一个处理
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 other than 127.0.0.1, and should match the IP of the boot server on the PXE network.
修改/etc/cobbler/settings文件中next_server: 的地址为本地地址
next_server: 172.20.110.15
修改/etc/cobbler/settings文件中server的地址为本地地址
server: 172.20.110.15
3 : change 'disable' to 'no' in /etc/xinetd.d/tftp
照着提示做: 修改后重启xinetd服务
[root@Cobbler ~]# service xinetd restart
【在centos7上使用systemd来管理,启动tftp后执行systemctl enable tftp即可】
4 : Some network boot-loaders are missing from /var/lib/cobbler/loaders, you may run 'cobbler get-loaders' to download them。。。
安装了syslinux可以不用管,执行cobbler sync会自动把所需核心文件同步到/var/lib/tftpboot目录下,执行cobbler get-loaders是从网上去下载这些文件
5 : enable and start rsyncd.service with systemctl
启动服务
[root@Cobbler ~]# systemctl start rsyncd
[root@Cobbler ~]# systemctl enable rsyncd
6 : comment out 'dists' on /etc/debmirror.conf for proper debian support
7 : comment out 'arches' on /etc/debmirror.conf for proper debian support
注释文件中如下两行:
@dists="sid";
@arches="i386";
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
修改/etc/cobbler/settings中的用户密码
[root@Cobbler ~]# openssl passwd -1 -salt `openssl rand -hex 4`
Password:
$1$326024fa$xD1Aw3DSjp/cCkkqNS2an0
也可以简单点不加盐:openssl passwd -1 即可
用上面生成的密码串替换/etc/cobbler/settings中的用户密码
default_password_crypted: "$1$326024fa$xD1Aw3DSjp/cCkkqNS2an0"
9 : fencing tools were not found, and are required to use the (optional) power management features. install cman or fence-agents to use them
不用管
配置DHCP
这里配置DHCP的方式有两种:
一种是在DHCP服务中单独配置
另一种是让DHCP让cobbler管理,这里我使用这种方式
如果让cobbler自动管理DHCP则在cobbler的 /etc/cobbler/settings文件中启动自动管理DHCP的功能,然后在/etc/cobbler/dhcp.template中定义DHCP的规则,
方式如下:
编辑 :/etc/cobbler/settings
修改:manage_dhcp: 0 为 : manage_dhcp: 1
编辑/etc/cobbler/dhcp.template文件,修改内容如下:(只需修改subnet段)
subnet 172.20.110.0 netmask 255.255.255.0 {
option routers 172.20.110.15;
range dynamic-bootp 172.20.110.20 172.20.110.100;
next-server $next_server;
修改完成后,执行一下同步
[root@Cobbler ~]# cobbler sync
查看dhcp配置文件内容有没有同步过去,如果文件为空,重启cobblerd后再执行cobbler sync即可
重启DHCP服务
[root@Cobbler ~]# systemctl restart dhcpd
同步后测试一下DHCP服务是不是能正常工作
测试dhcp服务分发地址是否正常
测试方式:用一台虚拟机设置其网卡为桥接,然后启动虚拟机后查看它的IP地址,到服务端/var/lib/dhcp目录下查看dhcpd.leases文件,这个文件中记录了DHCP服务已经分发出去的地址信息,如果与另一个虚拟机地址相同,说明DHCP服务正常
lease 172.20.110.24 {
starts 4 2018/05/24 09:51:07;
ends 4 2018/05/24 10:01:07;
cltt 4 2018/05/24 09:51:07;
binding state active;
next binding state free;
rewind binding state free;
hardware ethernet 00:0c:29:49:e2:aa;
}
同步完后,cobbler会自动把刚才编辑的dhcp.template文件同步到/etc/dhcp/dhcpd.conf配置文件中,并且会自动加载系统核心启动文件到/var/lib/tftboot/目录下
[root@Cobbler ~]# ls /var/lib/tftpboot/
boot etc grub images images2 ppc pxelinux.cfg s390x
[root@Cobbler tftpboot]# tree /var/lib/tftpboot
/var/lib/tftpboot
├── boot
│ └── grub
│ └── menu.lst
├── etc
├── grub
│ ├── efidefault
│ └── images -> ../images
├── images
├── images2
├── memdisk
├── menu.c32
├── ppc
├── pxelinux.0
├── pxelinux.cfg
│ └── default
└── s390x
└── profile_list
同步完后再次执行cobbler check进行检查
[root@localhost cobbler]# cobbler check
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 : 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.
上面的提示信息都无关紧要,因为都已经修改过了,
[root@Cobbler ~]# cobbler sync
创建repo
repo的创建方式:使用import方式导入文件 cobbler import
cobbler子命令: 执行cobbler --help查看
cobbler repo add
copy
find
list
remove
cobbler import
挂载光盘文件
[root@Cobbler ~]# mount /dev/sr0 /data/
导入光盘文件
[root@Cobbler ~]# cobbler import --path=/data --name=CentOS6.9
…省略部分…
creating new distro: CentOS6.9-x86_64
trying symlink: /var/www/cobbler/ks_mirror/CentOS6.9 -> /var/www/cobbler/links/CentOS6.9-x86_64
creating new profile: CentOS6.9-x86_64
…省略部分…
等待导入完成,光盘文件被导入到/var/www/cobbler/ks_mirror/CentOS6.9
目录下,可以查看一下
[root@Cobbler ~]# ls /var/www/cobbler/ks_mirror/CentOS6.9
CentOS_BuildTag isolinux RPM-GPG-KEY-CentOS-Debug-6
EFI Packages RPM-GPG-KEY-CentOS-Security-6
EULA RELEASE-NOTES-en-US.html RPM-GPG-KEY-CentOS-Testing-6
GPL repodata TRANS.TBL
images RPM-GPG-KEY-CentOS-6
这里的CentOS6.9目录就是上面执行导入cobbler import指令时指定的name,并且,在导入镜像后会自动生成一个自动应答安装文件sample_end.ks在/var/lib/cobbler/kickstarts目录下,这个就是提供cobbler默认自动安装的应答文件
导入完成后要同步一下文件
[root@Cobbler ~]# cobbler sync
重启httpd
[root@Cobbler ~]# systemctl restart httpd
生成kickstart自动应答文件
要实现无需人工干预的自动化安装,需要配kickstart生成自动应答安装配置文件,这个过程需要在桌面环境下进行配置,所以到另一台centos6.9的系统上进行文件的配置生成,没有安装桌面环境可以执行:yum groupinstall Desktop -y安装
安装kickstartyum install system-config-kickstart
执行指令生成向导文件
执行执行system-config-kickstart
指令通过配置向导生成自动安装应答文件,将生成的文件scp复制到cobbler服务端.并重命名为centos6-X86-yufu.cfg

[root@yufu data]# scp /data/ks.cfg 192.168.214.134:/var/lib/cobbler/kickstarts/centos6.cfg
【应答文件中的utl路径最后不能加斜线,因为启动时会自动补全路径后的文件】
由于http的url是将服务地址和路径分开写

【注意:在配置kickstart应答文件时通过http方式安装,需要进行网络传输,这里的http服务地址要填写和提供dhcp服务的ip地址一样,(同一网卡地址),因为新加的主机获取的IP和dhcp服务的ip是同一网段,(之前忽略了了这个问题填了另一个网卡地址,导致新机器启动后照不到http上的镜像文件。)】
(其他步骤按需设置即可,此处略过)
创建一个RPM仓库添加一个RPM仓库 (profile文件)就是将repository和distribution中的文件合并
[root@Cobbler ~]# cobbler profile list #查看profile
CentOS6.9-x86_64
[root@Cobbler ~]# cobbler distro list #查看distro
CentOS6.9-x86_64
[root@Cobbler ~]# cobbler profile add --name="CentOS6.9-yufu" --distro=CentOS6.9-x86_64 --kickstart=/var/lib/cobbler/kickstarts/centos6.cfg
注意:应答件中不能出现任何中文字符,包括注释内容也不行
,由于刚才生成文件的系统环境是中文,所以要检查centos6.cfg有没有中文字符
再次查看profile
[root@Cobbler ~]# cobbler profile list
CentOS6.9-x86_64
CentOS6.9-yufu
执行同步指令并重启cobbler
[root@Cobbler ~]# cobbler sync
[root@Cobbler ~]# systemctl restart cobblerd
到此,cobbler的安装和配置基本已经完成,可以测试自动安装了,新加一个虚拟机把网卡模式设置为仅主机模式即可。启动安装,
进行测试
新加虚拟机开机进行自动安装测试

第一项是系统自动生成的安装项,这里选择自己定义的安装项,最后一项,过一会系统会自动安装成功并重启

Cobbler_web管理
cobbler支持web界面的管理配置,需要通过https访问,直接通过http无法访问,如果在安装cobbler_web过程中遇到Django依赖问题安装解决即可。
yum install python-pip -y
pip install Django
为cobbler web添加管理用户:yufu
[root@Cobbler cobbler]# htdigest -c /etc/cobbler/users.digest Cobbler yufu
Adding password for yufu in realm Cobbler.
New password: #设置密码
Re-type new password: #确认密码
#查看用户
[root@Cobbler cobbler]# cat /etc/cobbler/users.digest
yufu:Cobbler:48f27607b0374bdb6d5610fe0417b11ef3
访问方式:
https://192.168.214.134/cobbler_web

可能会出现的问题
由于机器环境不同,安装过程中可能会出现不同的问题,安装过程中应该对几个关键服务进程测试,httpd,dhcpd等,以确保关键服务正常工作。在安装cobbler-web环境时可能会出现Django的依赖问题,要解决该问题。
还有就是kickstart生成的应答文件必须要检查无误,【我遇到过通过向导生成的最小化安装的应答文件使用其安装出桌面环境的诡异事情,原因是在生成的应答文件中并没有生成对最小化安装的定义内容】
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日志
/var/lib/tftpboot #目录存放启动裸机时提供传输的核心文件




