Cobbler安装与部署
目录
理论部分:Cobbler简介
Cobbler由python语言开发,是对PXE和Kickstart以及DHCP的封装。融合很多特性,提供了CLI和Web的管理形式。更加方便的实行网络安装。适用场景:需要大批量的部署操作系统。
Collber 对象关系图
Distros(发行版):表示一个操作系统。它承载了内核和 initrd 的信息,以及内核参数等其他数据。
profile:定义Kickstart文件
repos:安装源
system:表示要配给的机器。它包含一个配置文件或一个镜像,还包含 IP 和 MAC 地址、电源管理(地址、凭据、类型)以及更为专业的数据等信息。
image:可替换一个包含不属于此类别的文件的发行版对象(例如,无法分为内核和 initrd 的对象)。
集成的服务
PXE 服务
DHCP服务管理
DNS服务管理
HTTP服务管理
TFTP服务管理
Kickstart服务
yum仓库管理
电源管理
工作流程
(1).需要安装系统的客户端主机的网卡支持网络安装,也就是支持以PXE模式启动。
(2).客户端主机需要有一个IP地址来与Cobbler Server进行通信,这时网络中必须要有一个主机能自动分配IP。DHCP就是一个能为客户端主机自动分配IP地址的服务,DHCP就是安装在CobblerServer主机上。
(3).客户端得到IP地址后,需要提供一个引导程序pxelinux.0(类似于grub) 此文件由syslinux程序提供,所以需要安装syslinux并且能加载内核及内核镜像文件(vmlinuz与initrd.img),客户端可以通过TFTP协议到TFTP Server上下载内核及内核镜像文件(vmlinuz与initrd.img),所以需要一个TFTP 服务,TFTP也是安装在Cobbler Server主机上,客户端只是知道可以用TFTP协议下载文件,但是TFTP Server的IP是那个,这个还得需要DHCP服务器指名告诉客户端那个是TFTP Server(注,所以我们在配置DHCP模板时指定next-server,同时指定了filename,这里的filename就是指定的pxelinux.0引导程序),而TFTP服务需要超级进程进行管理,此进程是xinetd,因此需要在Cobbler Server上安装xinet服务。
(4).然后通过distro找到安装的发行版,通过设置的profile找到kickstart文件,完成自动安装。
部署安装cobbler
一、系统环境
1、系统版本(最小化安装)
cat /etc/redhat-release
CentOS Linux release 7.2.1511 (Core)
uname -r
3.10.0-327.el7.x86_64
cat /etc/hosts
127.0.0.1 localhostlocalhost.localdomain localhost4 localhost4.localdomain4
::1 localhostlocalhost.localdomain localhost6 localhost6.localdomain6
192.168.56.11 linux.node1.expmale.com
2、防火墙等
systemctl stop firewalld.service
systemctl disable firewalld.service
2、关闭selinux
3、IP地址:inet 192.168.56.11
二、部署阶段
1、配置epel源
wget -O/etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-7.repo
yum clean all
yum makecache
2、安装所需软件包
yum -y install httpd dhcp tftp cobbler xinetd
3、启动 httpd cobbler
systemctl start httpd
systemctl start cobblerd.service
三、配置部分
/etc/cobbler/settings cobbler主配置文件
/etc/cobbler/iso/ iso模板配置文件
/etc/cobbler/pxe pxe模板文件
/etc/cobbler/power 电源的配置文件
/etc/cobbler/users.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模块配置文件
(命令部分全部加粗,特别注意的地方标红字)
1、检查是否满足启动cobbler条件
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 somethingother than localhost, or kickstarting features will not work. This should be a resolvable hostname or IPfor the boot server as reachable by all machines that will use it.
(请修改server标签的IP地址,配置文件是/etc/cobbler/settings,在384行,注意不要删除空格。)
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 shouldmatch the IP of the boot server on the PXE network.
(请修改next_server标签的IP地址为本机网卡地址,不可以使用127.0.0.1,配置文件是/etc/cobbler/settings,在272行)
3 : change ‘disable‘ to ‘no‘ in /etc/xinetd.d/tftp
(请开启tftp服务,更改/etc/xinetd.d/tftp disable改为 enable在14行,启动xinetd服务
systemctl start xinetd.service)
4 : 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 tohandle x86/x86_64 netbooting, you may ensure that you have installed a *recent*version of the syslinux package installed and can ignore this messageentirely. 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 theeasiest way to resolve these requirements.
(请下载这个组件,使用cobbler get-loaders下载)
5 : enable and start rsyncd.service with systemctl
(将rsync服务启动并添加为开机自动启动)
systemctl start rsyncd.service
systemctl enable rsyncd.service
6 : debmirror package is not installed, it will be required to managedebian deployments and repositories
(在debian系列的操作系统上部署,请安装这个包debmirror)
7 : ksvalidator was not found, install pykickstart
(没有找到这个软件包pykickstart,请安装)
8 : The default password used by the sample templates for newly installedmachines (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
(random-phrase-here这一段改为密码加密前段,your-password-here这里输入你的密码)
openssl passwd -1 -salt‘password‘ ‘123456‘
$1$password$7ZK8mMeLGXxbNPeJEFJOU0
将此字符串放到/etc/cobbler/settings配置文件中的default_password_cypted配置项中,删除之前的字符串在101行
default_password_crypted: "$1$password$7ZK8mMeLGXxbNPeJEFJOU0"
(请修改安装的操作系统密码,这个123456密码为安装之后的root密码)
9 : fencing tools were not found, and are required to use the (optional)power management features. install cman or fence-agents to use them
(这个fencing功能,很少用,不用处理)
Restart cobblerd and then run ‘cobbler sync‘ to apply changes.
systemctl restart cobblerd
(重新启动cobblerd并且运行 cobbler sync同步配置。)
把以上问题处理
重新启动cobbler并重新检查一下
cobbler check
检查结果不能多于两个,上面提到的可不需要处理的直接跳过即可。
之后进行同步
cobbler sync
2、配置开启dhcp
Cobbler自身带了管理dhcp的功能,所以不需要修改/etc/dhcp/dhcpd.conf文件,只需要修改/etc/cobbler/settings文件,将以下配置由0改为1即可。
vi /etc/cobbler/settings
242: manage_dhcp: 1
3、配置dhcp分配的地址
vi /etc/cobbler/dhcp.template
修改过的
subnet 192.168.56.0 netmask 255.255.255.0 {分配的地址段(固定格式)
option routers 192.168.56.2;网关地址
option domain-name-servers192.168.56.2;#dns服务器逗号分隔,可以写多个
option subnet-mask 255.255.255.0;#子网掩码
range dynamic-bootp 192.168.56.100 192.168.56.254;#分配的地址池
default-lease-time 21600;
max-lease-time 43200;
next-server $next_server;#这里掉用的就是配置文件中的变量,不要修改
4、重启cobbler服务
systemctl restart cobblerd.service
5、同步配置
cobbler sync
netstat -lunpt
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name
tcp 0 0 0.0.0.0:873 0.0.0.0:* LISTEN 3580/rsync
tcp 0 0 0.0.0.0:3306 0.0.0.0:* LISTEN 2788/mysqld
tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 1300/sshd
tcp 0 0 127.0.0.1:25 0.0.0.0:* LISTEN 2433/master
tcp 0 0 127.0.0.1:25151 0.0.0.0:* LISTEN 3986/python2
tcp6 0 0 :::873 :::* LISTEN 3580/rsync
tcp6 0 0 :::80 :::* LISTEN 3948/httpd
tcp6 0 0 :::22 :::* LISTEN 1300/sshd
tcp6 0 0 ::1:25 :::* LISTEN 2433/master
udp 0 0 0.0.0.0:69 0.0.0.0:* 4352/xinetd
上传需要安装的镜像,这里以centos7.2为例
6、挂载镜像(上传到本地的iso)
mount-o loop /opt/CentOS-7-x86_64-DVD-1511.iso /mnt/
7、导入镜像
cobbler import --path=/mnt--name=Centos7.2-x86-64 arch=x86_64
cobbler import 导入镜像命令
--path=镜像挂载的目录
--name=镜像的名字,可以随便起
arch 系统的架构版本
再导入的同时,后台会开启rsync进程
导入的路径,在下图中均有体现,
8、检查导入
cobbler list
准备应答文件
cd /var/lib/cobbler/kickstarts #默认的应答文件存放路径
9、上传或者自己生成文件(制作过程略)
rz
或者安装一个已准备批量部署的系统,安装图形化以及kickstart图形化工具进行应答文件生成。上传到/var/lib/cobbler/kickstarts目录下执行一下两条命令
cobbler profile list
Centos7.2-64-x86_64
10、查看系统默认配置
cobblersetting report
11、编辑profile镜像,在安装的时候,去哪里找应答文件以及指定他的name
cobblerprofile edit --name=Centos7.2-64-x86_64 --kickstart=/var/lib/cobbler/kickstarts/CentOS-7.1-x86_64_cobbler.cfg
修改内核参数,使其网卡变成默认的eth0的格式(可忽略,如不想改)
cobblerprofile edit --name=Centos7.2-64-x86_64 --kopts=‘net.ifnames=0 biosdevname=0‘
cobbler profile report
如果有多个系统,请重复执行6-11步
12、重新同步配置
cobbler sync
到了这一步,就可以新推机器了,将服务器设置为网卡启动,保证网络内只有一台dhcp服务器。
出现这一步,基本上就完成了,因为,如果一旦重启,一旦走网卡启动,则有可能会格式化,所以这里设计了等待原则时间,不动则就会从本地重启。
自定义界面
就是这个等待界面的自定义信息,没有什么用,生产环境下,我=我们都不用显示器 。
vi/etc/cobbler/pxe/pxedefault.template
四、后续部署
Cobbler提供了web界面进行管理配置,非常简单。安装以下组件,即可。
1、 安装cobbler_web组件
yum install cobbler-web
systemctl restart httpd
默认web界面的用户名和密码控制文件在/etc/cobbler/user*
用户文件有点类似于svn的权限管理,默认不需要改变
grep "^[a-Z]"/etc/cobbler/users.conf
admin = ""
cobbler = ""
2、设置用户密码
grep "^[a-Z]" /etc/cobbler/users.digest
cobbler:Cobbler:a2d6bae81669d707b72c0bd9806e01f3
以上信息是默认信息,不知道密码是多少,我们可以重新生成
htdigest/etc/cobbler/users.digest "Cobbler" cobbler
grep "^[a-Z]"/etc/cobbler/users.digest
cobbler:Cobbler:4af20912b96aba2b59fca3b8aa8aad74
打开界面https://192.168.56.11/cobbler_web
3、重新安装客户端系统
如果有需求进行重新安装操作系统,则直接在客户端装好软件,无需到机房即可安装。
在客户端安装工具koan(就是上一步安装的机器)
yum -y install koan
指定server地址
koan --server=192.168.56.11--list=profiles
指定镜像名以及操作的指令
koan --replace-self--server=192.168.56.11 --profile=Centos7.2-64-x86_64
执行完以上命令之后,会在/boot/grup2/grup.cfg中添加了一个启动项,如下图
之后进行重启
reboot
出现了这个启动项就表明,接下来会自动重新安装系统,完全自动化。
4、构建仓库
导入epel仓库
cobbler repo add --name=CentOS-7-x86_64-epel --mirror=https://mirrors.aliyun.com/epel/7Server/x86_64/ --arch=x86_64 --breed=yum
打开web界面,开始同步
构建openstack仓库
cobbler repo add --name=openstack-newton --mirror=https://mirrors.aliyun.com/centos/7.3.1611/cloud/x86_64/openstack-newton/ --arch=x86_64 --breed=yum
增加计划任务,每天进行增量同步
crontab–e
#每天一点一分进行同步,检查机制,这样可以增量同步
1 1 * * * cobbler reposync --tries=3 --no-fail
基于MAC地址继进行定制安装
如果,需求每一个mac地址绑定一个固定的IP地址,hostname提前定义好。
检查profile文件,从那个profile文件安装
cobbler profile list
Centos7.2-64-x86_64
cobblersystem add --name=linux-node3 --mac=00:50:56:35:75:16--profile=Centos7.2-64-x86_64 --ip-address=192.168.56.110--subnet=255.255.255.0 --static=1 --hostname=linux-node3.example.com--name-servers="192.168.56.2" --interface=eth0--kickstart=/var/lib/cobbler/kickstarts/CentOS-7.1-x86_64_cobbler.cfg
之后启动那个mac地址是00:50:56:35:75:16这个的服务器即可开机进行安装,整个过程不会出现选项。
Cobbler学习地址(手册)
http://www.ibm.com/developerworks/cn/linux/l-cobbler/index.html
官网地址:http://cobbler.github.io/manuals/2.8.0/
到此为止,cobbler就配置完成了,后面还有很多功能,请自行测试。Web界面,请自行测试,比较简单。