本文来自本人的博客,转移到,未经允许,不得转载,否则追究到底。
Cobbler官网地址:cobbler.github.io
Cobbler是一个Linux安装服务器,它能实现网络安装环境下的快速安装。
Cobbler是基于Python研发的。
我们可能经常遇到这种情况,需要大规模的安装Linux操作系统(几百上千台),不同版本的操作系统,同一版本又有不同配置,用Cobbler就可以搞定。
Cobber基于DHCP、PXE、TFTP、HTTP、Kickstart的技术,来提供统一的对外服务,另外还有Cobbler Web界面,不过Cobbler CLI已经满足大部分人需求,这里Cobbler Web不做研究。
1. 主机信息
虚拟机安装CentOS7,配置两个网卡。一个仅主机模式,关闭仅主机模式的dhcp服务(仅主机模式不影响其他网段的机器,做实验比较安全);一个桥接模式,主要用来连外网下载Cobbler和Cobbler-Web安装包。
仅主机模式配置静态ip为192.168.111.1
;桥接模式的ip用dhcp获取即可。
2. 配置阿里云的CentOS7和epel的yum源(比较快)
cd /etc/yum.repos.d/
mkdir backup
mv *.repo backup
wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo
wget -O /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-7.repo
3. 关闭SELinux和iptables
setenforce 0
sed -i.bak 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/selinux/config
systemctl stop firewalld
systemctl disabled firewalld
4. 安装dhcp、cobbler、cobbler-web, 启动和启用服务
yum安装cobbler的时候,除了dhcp,其他依赖如tftpd
、httpd
、syslinux
(里面有pxelinux.0
文件)会自动安装,所以只要装dhcp、cobbler、cobbler-web
就好。
yum install dhcp cobbler cobbler-web
systemctl enable dhcpd httpd tftp cobblerd
systemctl start dhcpd httpd tftp cobblerd
这里启动dhcpd会报错,是因为配置还没配置,不用管,忽略就行。
5. 更改配置文件
配置文件路径:/etc/cobbler/settings
cp /etc/cobbler/settings{,.bak}
要更改的内容:
(1) Default Encrypted Password
默认为:
default_password_crypted: "$1$bfI7WLZz$PxXetL97LkScqJFxnW7KS1"
用openssl passwd -1
命令来生成新的sha1sum加密密码,这里设置的密码是Cobbler
,加密后变成$1$2rPjTa.8$iDxUnssv2aGjLKUm/df2w1
,把生成的密码覆盖原来的密码:
openssl passwd -1
(2) Server 和 Next_Server
server
选项是指cobbler server的ip地址,这里要指定一个网卡的ip,实验环境里指的是仅主机模式的192.168.111.1
。
next_server
选项被用在DHCP/PXE上,用来作为DHCP Server和TFTP Server的IP地址,一般和Cobbler服务地址使用一个IP。
# default, localhost
server: 192.168.111.1
# default, localhost
next_server: 192.168.111.1
(3) DHCP Management 和 DHCP Server Template(模板)
manage_dhcp
,0
更改为1
# default, don't manage
manage_dhcp: 1
6. 更改dhcp模板
由于上一节更改settings
里的manage_dhcp
为1
了,所以,dhcpd
变成cobblerd
来管理了。我们通过更改/etc/cobbler/dhcp.template
,然后sync同步到/etc/dhcp/dhcpd.conf
。
cp /etc/cobbler/dhcp.template{,.bak}
vim /etc/cobbler/dhcp.template
修改模板里的内容:
subnet 192.168.111.0 netmask 255.255.255.0 {
option subnet-mask 255.255.255.0;
range dynamic-bootp 192.168.111.100 192.168.111.200;
default-lease-time 21600;
max-lease-time 43200;
next-server $next_server;
备份原来的dhcpd.config
,然后用cobbler sync
一下:
cp /etc/dhcp/dhcpd.conf{,.bak}
cobbler sync
同步完后,这时候去查看一下/etc/dhcp/dhcpd.conf
,内容已经被覆盖了,我们也可以看到注释里写的是被Cobbler管理的dhcpd.conf:Cobbler managed dhcpd.conf file
重启cobblerd服务:
systemctl restart cobblerd
警告:千万不要修改
next-server $next_server;
这行,不用改。配置是写在#for dhcp_tag in $dhcp_tags.keys():
这行之前,不要写在最后。
如果想了解更多关于dhcpd.conf
的信息,可以man dhcpd.conf
7. 同步配置,重启相关服务
cobbler sync
8. 下载bootloader的加载程序
cobbler get-loaders
cobbler sync
9. 配置cobbler-web
配置文件是/etc/cobbler/modules.conf
。
修改cobbler的用户名和密码:
htdigest /etc/cobbler/users.digest "Cobbler" cobbler
systemctl restart cobblerd
cobbler sync
systemctl restart httpd
用修改过用户名密码登录测试:
二、cobbler使用指南
1. 导入光盘
(1)挂载光盘
给虚拟机配置两个光盘,分别挂载CentOS6和CentOS7的光盘。
挂载光盘到目录:
mkdir /mnt/centos6
mkdir /mnt/centos7
mount /dev/sr0 /mnt/centos6
mount /dev/sr1 /mnt/centos7
如果是拷贝的iso文件到服务器,可以mount iso到目录:
mkdir /mnt/centos6
mkdir /mnt/centos7
mount CentOS-6.9-x86_64-bin-DVD1.iso /mnt/centos6
mount CentOS-7-x86_64-Everything-1611.iso /mtn/centos7
(2)cobbler import
导入光盘
cobbler import --name=CentOS6.9 --path=/mnt/centos6 && cobbler import --name=CentOS7.3 --path=/mnt/centos7
如图我们可以看到,我们添加了两个发行版本到distros
,也创建了两个profile
(使用的是sample的ks文件),名字都是CentOSx.x-x86_64
,是cobblerd自动侦测了是x86_64的版本,自动添加到上面import
命令的name
后面。
查看distro/profile
对,这两个list目前显示应该是一样的。(后期增加不同配置的ks文件,生成不同的profile,就不一样了,还需要把profile默认的两个例子删掉)
cobbler distro list
cobbler profile list
查看导入的发行版操作系统信息(distro
):
# 导入的发行版操作系统信息
cobbler distro report # 全部
cobbler distro report --name=CentOS6.9-x86_64 # 单独一个
我们看到有两行信息:
Kickstart Metadata : {'tree': 'http://@@http_server@@/cblr/links/CentOS7.3-x86_64'}
Kickstart Metadata : {'tree': 'http://@@http_server@@/cblr/links/CentOS6.9-x86_64'}
这两行就是你将来ks文件里写的安装url,后续在ks文件就采用这个地址作为源的地址。
ks文件如果原来是cdrom安装方式,把cdrom
换成url --url=http://xxxx
:
CentOS 6:
url --url=http://192.168.111.1/cblr/links/CentOS6.9-x86_64/
CentOS 7:
url --url=http://192.168.111.1/cblr/links/CentOS7.3-x86_64/
导入ks文件
如果要自己制作,详见博文自制kickstart光盘 。
然后记得修改cdrom
安装方式为url --url=http://192.168.111.1/cblr/links/CentOS6.9-x86_64/
本人自制的cobbler的ks文件链接: http://pan.baidu.com/s/1i4BGeUh
密码:0kfe
如果有网友拿过来,记得更改url地址为自己cobbler的地址。
cobbler文件夹就是存放cobbler用的ks文件,分别对应6和7的最小化安装和开发包安装(其中手选了一些必要的包),包的话可以根据个人喜好自行更改:
把这四个文件copy到cobbler服务器的/var/lib/cobbler/kickstarts/
目录下
这时候我们只是拷贝到目录里了,但是cobbler并没有对系统和ks文件做对应关系,我们用cobbler profile report
(和distro
命令一样,加--name=xxx
可以查看具体单个的属性信息)可以看到kickstart的那一条属性只是一个例子而已:
我们删掉例子,来重新添加新的kickstart文件对应关系:
cobbler profile remove --name="CentOS6.9-x86_64"
cobbler profile remove --name="CentOS7.3-x86_64"
cobbler profile add --name=CentOS6.9-Devel--x86_64 --kickstart=/var/lib/cobbler/kickstarts/ks-centos6-devel.cfg --distro=CentOS6.9-x86_64
cobbler profile add --name=CentOS6.9-Mini-x86_64 --kickstart=/var/lib/cobbler/kickstarts/ks-centos6-mini.cfg --distro=CentOS6.9-x86_64
cobbler profile add --name=CentOS7.3-Devel-x86_64 --kickstart=/var/lib/cobbler/kickstarts/ks-centos7-devel.cfg --distro=CentOS7.3-x86_64
cobbler profile add --name=CentOS7.3-Mini-x86_64 --kickstart=/var/lib/cobbler/kickstarts/ks-centos7-mini.cfg --distro=CentOS7.3-x86_64
这时候我们去查看pxelinux.cfg/default
文件就能看到菜单选项也跟着变了:
[root@center tftpboot]# locate pxelinux.cfg/default
/var/lib/tftpboot/pxelinux.cfg/default
[root@center tftpboot]# cat /var/lib/tftpboot/pxelinux.cfg/default
重启cobblerd
systemctl restart cobblerd
cobblerd sync
Cobbler自动化安装图示
新增加一台虚机,和cobbler在一个网段,打开运行,就会出现如下界面:
好了,可以尽情的使用了,如果要添加新的版本,按照上面步骤添加就可以了。
Cobbler Web
图形界面,不感冒,感兴趣的可以自行研究
更多内容请关注微信号(虽然目前只有这一篇文章):