自动化运维之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
自动化运维之Cobbler自动化部署安装操作系统的更多相关文章
- 自动化运维之cobbler安装centos7.3
自动化运维之cobbler安装centos7.3 一.cobbler简介和服务 Cobbler是一款自动化操作系统安装的实现,与PXE安装系统的区别就是可以同时部署多个版本的系统,而PXE只能选择一种 ...
- 自动化运维工具Ansible详细部署 (转载)
自动化运维工具Ansible详细部署 标签:ansible 原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 .作者信息和本声明.否则将追究法律责任.http://sofar.blog. ...
- 自动化运维工具SaltStack详细部署【转】
==========================================================================================一.基础介绍==== ...
- 自动化运维工具Ansible详细部署 - 人生理想在于坚持不懈 - 51CTO技术博客
自动化运维工具Ansible详细部署 - 人生理想在于坚持不懈 - 51CTO技术博客 自动化运维工具Ansible详细部署
- saltstack自动化运维系列⑧SaltStack实践配置管理安装nginx-1.10.3
saltstack自动化运维系列⑧SaltStack实践配置管理安装nginx-1.10.3 安装nginx-1.10.3.tar.gz # mkdir -p /srv/salt/prod/pkg / ...
- saltstack自动化运维系列⑦SaltStack实践配置管理安装zabbix
saltstack自动化运维系列⑥SaltStack实践配置管理安装zabbix 1.添加管理zabbix的sls文件# vim /srv/salt/base/init/zabbix_agent.sl ...
- 自动化运维工具Ansible详细部署
本文来源:http://sofar.blog.51cto.com/353572/1579894/ 前言 一个由 Python 编写的强大的配置管理解决方案.尽管市面上已经有很多可供选择的配置管理解决方 ...
- 自动化运维工具Ansible的部署步骤详解
本文来源于http://sofar.blog.51cto.com/353572/1579894,主要是看到这样一篇好文章,想留下来供各位同僚一起分享. 一.基础介绍 ================= ...
- 自动化运维工具SaltStack详细部署
==========================================================================================一.基础介绍==== ...
随机推荐
- 使用unbound在RHEL7上搭建DNS服务
1.概念:DNS (Domain Name Server)域名解析服务,使用TCP&UDP的53号端口(主从DNS之间用TCP,客户端查询使用UDP).它可以完成域名与IP地址的互换,可以通过 ...
- CareerCup Facebook Total number of substring palindrome
Write a function for retrieving the total number of substring palindromes. For example the input is ...
- Robotframework(4):创建变量的类型和使用
转载:http://www.cnblogs.com/CCGGAAG/p/7800321.html 实际的测试过程中,编写脚本时,我们需要创建一些变量来暂时或者永久性的存储数据,那么在Robotfram ...
- 浅谈压缩感知(六):TVAL3
这一节主要介绍一下压缩感知中的一种基于全变分正则化的重建算法——TVAL3. 主要内容: TVAL3概要 压缩感知方法 TVAL3算法 快速哈达玛变换 实验结果 总结 1.TVAL3概要 全称: To ...
- Android自己定义View之仪表盘
新建项目,新建DashBoardView继承自View实现OnGlobalLayoutListener接口,并重写OnDraw方法. 使用OnGlobalLayoutListener接口须要重写onG ...
- ListView显示不同布局
在使用不同布局的时候,getItemViewType和getViewType不能少,通常是不用这两个函数的重载的 listView.setAdapter(new BaseAdapter() { @Ov ...
- maven 打包以及上传
插件 ------------------------------------------------------------------------------------------------- ...
- C语言处理文件
C写入数据到文件 #include <stdio.h> #include <string.h> int main( ) { FILE* fd = fopen("txt ...
- Linux网络编程:基于TCP的程序开发回顾篇《转》
面向连接的TCP程序设计 基于TCP的程序开发分为服务器端和客户端两部分,常见的核心步骤和流程: 其实按照上面这个流程调用系统API确实可以完全实现应用层程序的开发,一点问题没有.可随着时间的推移,你 ...
- 是否缺少对 Microsoft.CSharp.dll 和 System.Core.dll 的引用?
错误提示 : 预定义的类型“Microsoft.CSharp.RuntimeBinder.Binder”未定义或未导入 是否缺少对 Microsoft.CSharp.dll 和 System.Core ...