技术也要去运维

Cobbler——无人值守安装多种版本多种配置操作系统

2017-07-24  本文已影响279人  于龙君

本文来自本人的博客,转移到简书,未经允许,不得转载,否则追究到底。

Cobbler

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,其他依赖如tftpdhttpdsyslinux(里面有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_dhcp0更改为1

# default, don't manage
manage_dhcp: 1

6. 更改dhcp模板

由于上一节更改settings里的manage_dhcp1了,所以,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

dhcpd.conf

重启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
htdigest
systemctl restart cobblerd
cobbler sync
systemctl restart httpd

用修改过用户名密码登录测试:

cobbler-web cobbler-web

二、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
cobbler import

如图我们可以看到,我们添加了两个发行版本到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的最小化安装和开发包安装(其中手选了一些必要的包),包的话可以根据个人喜好自行更改:

ks

把这四个文件copy到cobbler服务器的/var/lib/cobbler/kickstarts/目录下

这时候我们只是拷贝到目录里了,但是cobbler并没有对系统和ks文件做对应关系,我们用cobbler profile report(和distro命令一样,加--name=xxx可以查看具体单个的属性信息)可以看到kickstart的那一条属性只是一个例子而已:

cobbler profile report

我们删掉例子,来重新添加新的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
pxelinux.cfg

重启cobblerd

systemctl restart cobblerd
cobblerd sync

Cobbler自动化安装图示

新增加一台虚机,和cobbler在一个网段,打开运行,就会出现如下界面:

cobbler install

好了,可以尽情的使用了,如果要添加新的版本,按照上面步骤添加就可以了。

Cobbler Web

图形界面,不感冒,感兴趣的可以自行研究😆


更多内容请关注微信号(虽然目前只有这一篇文章):

扫描二维码
上一篇下一篇

猜你喜欢

热点阅读