自动化运维之Cobbler自动化部署安装操作系统
Cobbler概述:
Cobbler可以用来快速建立 Linux 网络安装环境,它已将 Linux 网络安装的技术门槛,从大专以上文化水平,成功降低到初中以下,连补鞋匠都能学会。
在生产环境中,经常批量部署几十甚至上百台服务器时,实现自动化安装操作系统尤为重要,按照传统的光盘引导安装工作量是不可预估的;此前我们通过pxe+kickstart简单实现了自动化安装,但只能实现单一版本安装,当需要部署不同版本或不同引导模式(BIOS、EFI)时,此种方式就不够灵活。而Cobbler正是为了解决此问题而设计的。
经过以上概述我了解到Cobbler操作使用没有想象中那么困难,接下来我们对Cobbler应用进行剖析如下:
Cobbler简介:
Cobbler是一个免费开源系统安装部署软件,用于自动化网络安装操作系统。Cobbler 集成了 DNS, DHCP, 软件包更新,带外管理以及配置管理,方便操作系统安装自动化。Cobbler 可以支持PXE启动, 操作系统重新安装,以及虚拟化客户机创建,包括Xen, KVM or VMware. Cobbler透过koan程序以支持虚拟化客户机安装。Cobbler可以支持管理复杂网路环境,如建立在链路聚合以太网的桥接环境。
Cobbler组件架构如下:
Cobbler服务集成以下:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
|
*1* PXE服务 *2* DHCP服务管理 *3* TFTP服务管理 *4* Rsync服务(系统镜像可导入发行版镜像,也可以从互联网中通过 rsync 工具导入) *5* HTTP服务管理 *6* DNS服务管理 *7* Kickstart服务 *8* IPMI电源管理 |
Cobbler设计模式:
1
2
3
4
5
6
7
8
9
10
11
|
*1* 发行版(distro) : 表示一个操作系统。它承载了内核和initrd的信息,以及内核参数等其他数据。 *2* 存储库(repository) : 保存一个yum或 rsync 存储库镜像信息。 *3* 配置文件(profile) : 包含一个发行版(distro)、一个kickstart文件以及可能的存储库(repository) 还包含更多特定的内核参数及其他数据。 *4* 系统(system) : 表示要配给的机器,它包含一个配置文件或一个镜像,还包含IP和MAC地址、 电源管理(地址、凭据、类型)以及更专业的数据等信息。 *5* 镜像(image) : 可替换一个包含不属于此类别的文件发行版对象,(例如: 无法分为内核和initrd的对象) |
Cobbler运行流程:
1
2
3
4
5
6
7
8
9
|
*1* DHCP服务分配IP地址 *2* Client(获取IP地址、Next_server IP地址) *3* Next_server(获取启动内核、initrd等文件) *4* tftp (PXE引导文件、启动Cobbler选择界面) *5* kickstart (确定加载项,根据NFS,httpd, ftp 等共享) |
Cobbler Units 软件包:
1
2
3
|
* cobbler * cobbler-web |
Cobbler Units 配置:
1
2
3
4
5
6
7
8
9
10
11
|
*1* 安装cobbler,依据cobbler check检查结果,对settings主配置文件,进行相关修正设置; *2* 启动依赖服务:httpd、cobbler服务,使用cobbler sync 同步配置; *3* 配置cobbler所依赖的服务: ** dhcp : ISC dhcpd dnsmasq(必需服务,选其中一种管理即可) ** dns : bind dnsmqsq(可选) ** rsync : rsync (必需服务) ** tftp : in .tftpd(tftp-server) cobbler自带的tftp(必需服务,选其中一种管理即可) *4* 配置cobbler组件 |
针对步骤3:
(1)确定要使用的程序,选其中一种管理即可;
(2)确定要独立管理这些服务,还是由cobbler代为管理。
确定以上要求,配置安装过程如下:
(1)安装EPEL源
1
2
3
|
# wget http://dl.fedoraproject.org/pub/epel/6/x86_64/epel-release-6-8.noarch.rpm # wget http://rpms.famillecollet.com/enterprise/remi-release-6.rpm # rpm -Uvh remi-release-6.rpm epel-release-6-8.noarch.rpm |
(2)安装cobbler及相关依赖包
1
2
3
4
5
|
# yum -y install httpd dhcp tftp-server xinetd rsync # yum -y groupinstall "Development Tools" # yum -y install syslinux python-simplejson python-cheetah PyYAML Django openssl-devel genisoimage createrepo mod_wsgi mod_ssl # yum -y install dnsmasq bind --保证后期cobbler管理dns环境通过检测 # yum -y install cobbler cobbler-web |
(3)配置启动httpd、cobbler等服务
1
2
3
4
5
6
7
|
# chkconfig --level 35 httpd on # chkconfig --level 35 cobblerd on # chkconfig --level 35 tftp on # chkconfig --level 35 rsync on # service xinetd start # service httpd start # service cobblerd start |
检查服务监听端口:
(4)Cobbler目录使用说明:
配置文件目录:/etc/cobbler
* * /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模块配置文件
数据目录:/var/lib/cobbler
* * /var/lib/cobbler/config : 用于存放distros systems profiles等信息配置文件
* * /var/lib/cobbler/triggers : 用于存放用户自定义的cobbler命令
* * /var/lib/cobbler/kickstarts : 默认存放kickstart文件
* * /var/lib/cobbler/loaders : 存放各种引导程序
镜像数据目录: /var/www/cobbler
* * /var/www/cobbler/ks_mirror : 导入的发行版系统的所有数据
* * /var/www/cobbler/images : 导入发行版的kernel和initrd镜像用于远程网络启动
* * /var/www/cobbler/repo_mirror/ :yum仓库存储目录
日志目录:/var/log/cobbler
* * /var/log/cobbler/install.log : 客户端系统安装日志
* * /var/log/cobbler/cobbler.log : cobbler日志
Cobbler Commands(常用使用命令参数)
* * Import
* * Sync
* * Reposync
* * Build ISO (使用发行版、配置文件、制作出系统镜像)
* * Command Line Search
* * Replication
* * Validata Kickstart
* * ACL Setup
(5)检查配置Cobbler
动态更新配置:
下面根据cobbler配置信息的检查结果,逐个修复相关问题项。从Cobbler 2.4开始,有一个重要的功能,就是让你不需要手工编辑配置setting配置文件,直接使用命令修改相关配置,默认这个功能是不启用,启用需要进行一下配置:
**建议采用修改/etc/cobbler/settings配置文件的方式修改配置选项。
**在采用命令方式动态更新配置时,Cobbler会将配置文件中带"#"注释的行全部删除
1
2
3
4
|
# cd /etc/cobbler/ # cp -af settings{,.default} # sed -i '/^allow_dynamic_settings:/ s/0/1/' settings # service cobblerd restart |
解决问题项1和2,设置cobbler服务器地址
1
2
|
# cobbler setting edit --name=server --value=172.16.100.7 # cobbler setting edit --name=next_server --value=172.16.100.7 |
如果selinux未禁用,也会提示报错,解决方法如下:
1
2
|
# setenforce 0 # sed -i '/\(^SELINUX=\).*/ s//\1disabled/' /etc/selinux/config |
解决问题项3,下载启动菜单(可以选择不修复,x86/x86_64平台上,如果本地有syslinux包的最新版本,直接拷贝引导所需文件即可)
1
2
|
---Cobbler引导文件目录为: /var/lib/cobbler/loaders # cobbler get-loaders |
PXE引导所需的引导文件:
--pxelinux.0、menu.c32、vesamenu.c32和memdisk四个文件有syslinux或者syslinux-nolinux RPM包提供
--其中menu.c32为文本模式背景,vesamenu.c32为图形模式背景
--memdisk文件,引导IMG映像,如果你要引导IMG/IMA的映像文件,必须加载此文件。
1
2
|
# rpm -qf /usr/share/syslinux/pxelinux.0 syslinux-4.02-8.el6.x86_64 |
1
|
# for file in `rpm -ql syslinux-nolinux | grep -E '/(pxelinux.0|menu.c32|vesamenu.c32)'`;do cp -af $file /var/lib/cobbler/loaders;done |
解决问题项4,配置rsync服务
1
2
|
# sed -i '/disable/ s/yes/no/' /etc/xinetd.d/rsync # chkconfig rsync on |
如果提示rsync文件不存在,可以不用理他,应该是程序bug,不影响cobbler使用
解决问题项5
1
2
3
4
5
6
7
8
|
# yum -y install debmirror --安装debmirror包后,会衍生出一下错误提示,根据提示,注释选项即可 2 : comment out 'dists' on /etc/debmirror .conf for proper debian support 3 : comment out 'arches' on /etc/debmirror .conf for proper debian support --处理如下: # sed -i '/^@dists="sid";/ s/^/#/' /etc/debmirror.conf # sed -i '/^@arches="i386";/ s/^/#/' /etc/debmirror.conf |
解决问题项6 安装ks文件验证支持包
1
|
# yum -y install pykickstart |
解决问题项7,修改cobbler用户的默认密码
1
2
3
|
# openssl passwd -1 -salt `openssl rand -hex 4` 'redhat' $1$fe4c277f$tbAmxXGSIA7cc /AXLsQVd . # cobbler setting edit --name=default_password_crypted --value='$1$fe4c277f$tbAmxXGSIA7cc/AXLsQVd.' |
解决问题项8,如果需要电源管理特性的话,则需要安装cman及fence-agents包
1
|
# yum -y install cman fence-agents |
如果cobbler服务器启用防火墙功能,需要开启以下端口:
1
2
|
# iptables -A INPUT -m state --state NEW -m tcp -p tcp -m multiport --dports 80,443,25151 -j ACCEPT # iptables -A INPUT -m state --state NEW -m udp -p udp -m multiport --dports 53,67:69,25151 -j ACCEPT |
重启依赖服务,同步cobbler数据
1
2
3
|
# service httpd restart # service cobblerd restart # cobbler sync |
配置cobbler依赖服务由cobbler进行管理:
--虽然cobbler可用于管理依赖的服务;
--默认情况下,若开机未将相关的服务设置成开启启动,即使cobblerd服务启动时,相关服务也是未启动状态。
--因此,需要确认dhcp、tftp、rsync等服务是否设置为开启自启动。
--tftp、rsync服务由xinetd管理
1
2
3
|
--配置dhcp\dns由cobbler管理 # cobbler setting edit --name=manage_dhcp --value=1 # cobbler setting edit --name=manage_dns --value=1 |
防止误重装系统,选项:pxe_just_once
1
|
# cobbler setting edit --name=pxe_just_once --value=1 |
该选项作用:
--防止机器循环安装配置始终从网络引导
--激活此选项,机器回传Cobbler安装完成
--Cobbler将系统对象的netboot标志更改为false,强制要求机器从本地磁盘引导。
配置rsync、tftp服务,由cobbler管理,选项:manage_rsync、manage_tftp 、managed_tftpd
--默认情况下,Cobbler安装完成后,会自己去管理tftp服务,因manage_tftp和managed_tftpd的值默认为1
--要想让Cobbler来管理rsync、tftp服务,只要保证各自服务已安装,并设置为开机自启动即可。
--此外,需要保证xinetd服务为开机自启动状态,因rsync、tftp服务由xinetd服务统一管理。
1
2
3
|
# sed -i '/diable/ s/yes/no/' /etc/xinetd.d/rsync # sed -i '/diable/ s/yes/no/' /etc/xinetd.d/tftp # chkconfig --level 35 xinetd on |
配置dhcp服务,模板文件/etc/cobbler/dhcp.template 选项:manage_dhcp
--使用dnsmasq来管理dhcp、dns 会更方便。对应的,你需要安装dnsmasq RPM包;
--由dnsmasq来管理dhcp dns 服务时,需要修改modules.conf配置文件,指定module设置值为manage_dnsmasq.
--相关的模板配置文件为/etc/cobbler/dnsmasq.template.
这里我们采用默认方式配置使用DHCP服务
1
|
# chkconfig --level 35 dhcpd on |
配置web管理认证:
添加、修改默认用户(cobbler)
1
2
3
4
5
|
# sed -i 's/^cobbler/admin/' /etc/cobbler/users.digest # htdigest /etc/cobbler/users.digest 'Cobbler' admin Changing password for user admin in realm Cobbler New password: Re- type new password |
重启Cobbler,同步cobbler数据:
1
2
|
# service cobblerd restart # cobbler sync |
Web相关访问地址:
1
2
|
* http: //172 .16.100.7 /cobbler_web * http: //172 .16.100.7 /cobbler |
配置cobbler组件
* distro:可使用distro命令或者import导入发行版镜像
Cobbler上,distro可以有多个;同一个distor之上可定义同个profile,每个profile使用不同的kicstart文件。
挂载发行版镜像源
1
2
|
# mkdir -p /mnt/CentOS/6.5 # mount -o loop /root/CentOS-6.5-x86_64-bin-DVD1.iso /mnt/CentOS/6.5/ |
导入发行版镜像源
1
|
# cobbler import --name=CentOS-6.5-x86_64 --path=/mnt/CentOS/6.5 |
Cobbler Web导入后的镜像地址为:http://172.16.100.7/cobbler/ks_mirror/CentOS-6.5-x86_64/
准备kisckstart文件
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
|
# vim /var/lib/cobbler/kickstarts/cetos6.x86_64.cfg #platform=x86,AMD64, or Intel EM64T #version=DEVEL #Firewall configuration firewall --disabled # Install OS instead of upgrade install # Use network installation url --url= "http://172.16.100.7/cobbler/ks_mirror/CentOS-6.5-x86_64/" # Root password rootpw --iscrypted $1$redhat$9yxjZID8FYVlQzHGhasqW/ # System authrization information auth --useshadow --passalgo=sha512 # Use text mode install text firstboot --disable # System keyboard keyboard us # System language lang en_US # SELinux configuration selinux --disabled # Installation logging level logging --level=info --host=172.16.0.1 # Reboot after installation reboot # System timezone timezone Asia /Shanghai # System bootloader configuration bootloader --append= "rhgb crashkernel=auto quiet" --location=mbr --driveorder= "sda" # Clear the Master Boot Record zerombr # Partition clearing information clearpart --all # Disk partitiong infomation part /boot --fstype= "ext4" --size=200 part pv.008 --size=61440 volgroup vg0 --pesize=8192 pv.008 logvol / --fstype=ext4 --name=root --vgname=vg0 --size=20480 logvol swap --name=swap --vgname=vg0 --size=2048 logvol /usr --fstype=ext4 --name=usr --vgname=vg0 --size=10240 logvol /var --fstype=ext4 --name=var --vgname=vg0 --size=20480 repo --name= "local repo" --baseurl=http: //172 .16.100.7 /cobbler/ks_mirror/CentOS-6 .5-x86_64/ --cost=1000 %post echo -e 'Samlee LTD Services\n http://gzsamlee.blog.51cto.com\n' >> /etc/issue sed -i '1,$s@id:[0-9]:initdefault:@id3:initdefault:@g' /etc/inittab [ ! -d /root/ . ssh ] && mkdir /root/ . ssh && chmod og=--- /root/ . ssh %end %packages @base @basic-desktop @client-mgmt-tools @core @desktop-platform @fonts @general-desktop @graphical-admin-tools @legacy-x @network- file -system-client @perl-runtime @remote-desktop-clients @x11 lftp %end |
添加profile
1
2
|
# cobbler profile add --name=CentOS-6.5-basic --distro=CentOS-6.5-x86_64 --kickstart=/var/lib/cobbler/kickstarts/cetos6.x86_64.cfg # cobbler profile list |
配置本地yum仓库
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
|
#配置本地yum仓库 # mkdir /tmp/rpms # createrepo /tmp/rpms #放入rpm包,执行此步骤 # cobbler repo add --mirror=/tmp/rpms --name=local # cobbler reposync #配置本地epel仓库 # cobbler repo add --mirror=http://mirrors.aliyun.com/epel/6/x86_64/ --name=epel # cobbler reposync --tries=3 --no-fail #同步epel仓库到本地,需要较长时间 #查看已添加的repo # cobbler repo list epel local #添加repo到profile # cobbler profile edit --name==CentOS-6.5-basic --repos="epel local" # cobbler sync |
客户端安装测试如下:
客户端验证,可以看到生成了一个repo文件,指向cobbler服务器
1
2
3
4
5
6
7
8
9
10
11
12
13
14
|
# cat /etc/yum.repos.d/cobbler-config.repo [core-0] name=core-0 baseurl=http: //172 .16.100.7 /cobbler/ks_mirror/CentOS-6 .5-x86_64/ enabled=1 gpgcheck=0 priority=1 [ local ] name= local baseurl=http: //172 .16.100.7 /cobbler/repo_mirror/local enabled=1 priority=99 gpgcheck=0 |
web管理访问:
0
本文出自 “Opensamlee” 博客,请务必保留此出处http://gzsamlee.blog.51cto.com/9976612/1865020