您的位置:首页 > 运维架构

自动化运维之Cobbler自动化部署安装操作系统

2016-10-24 15:48 966 查看
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* PXE服务

*2* DHCP服务管理

*3* TFTP服务管理

*4* Rsync服务(系统镜像可导入发行版镜像,也可以从互联网中通过rsync工具导入)

*5* HTTP服务管理

*6* DNS服务管理

*7* Kickstart服务

*8* IPMI电源管理

Cobbler设计模式:

*1* 发行版(distro) : 表示一个操作系统。它承载了内核和initrd的信息,以及内核参数等其他数据。

*2* 存储库(repository) : 保存一个yum或rsync存储库镜像信息。

*3* 配置文件(profile) : 包含一个发行版(distro)、一个kickstart文件以及可能的存储库(repository)
还包含更多特定的内核参数及其他数据。

*4* 系统(system) : 表示要配给的机器,它包含一个配置文件或一个镜像,还包含IP和MAC地址、
电源管理(地址、凭据、类型)以及更专业的数据等信息。

*5* 镜像(image) : 可替换一个包含不属于此类别的文件发行版对象,(例如: 无法分为内核和initrd的对象)


Cobbler运行流程:
*1* DHCP服务分配IP地址

*2* Client(获取IP地址、Next_server IP地址)

*3* Next_server(获取启动内核、initrd等文件)

*4* tftp (PXE引导文件、启动Cobbler选择界面)

*5* kickstart (确定加载项,根据NFS,httpd,ftp等共享)


Cobbler Units 软件包:
* cobbler

* cobbler-web


Cobbler Units 配置:
*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源
# 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及相关依赖包
# 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等服务
# 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模块配置文件


[b] 数据目录:/var/lib/cobbler[/b]
[b] * * /var/lib/cobbler/config : 用于存放distros systems profiles等信息配置文件
[/b]
[b] * * /var/lib/cobbler/triggers : 用于存放用户自定义的cobbler命令[/b]
[b] * * /var/lib/cobbler/kickstarts : 默认存放kickstart文件[/b]
[b] * * /var/lib/cobbler/loaders : 存放各种引导程序
[/b]

[b] 镜像数据目录: /var/www/cobbler
[/b]
[b] * * /var/www/cobbler/ks_mirror : 导入的发行版系统的所有数据
[/b]
[b] * * /var/www/cobbler/images : 导入发行版的kernel和initrd镜像用于远程网络启动[/b]
[b] * * /var/www/cobbler/repo_mirror/ :yum仓库存储目录[/b]

[b] 日志目录:/var/log/cobbler[/b]
[b] * * /var/log/cobbler/install.log : 客户端系统安装日志[/b]
[b] * * /var/log/cobbler/cobbler.log : cobbler日志
[/b]

[b]Cobbler Commands(常用使用命令参数)
[/b]
[b] * * Import
[/b]
[b] * * Sync[/b]
[b] * * Reposync
[/b]
[b] * * Build ISO (使用发行版、配置文件、制作出系统镜像)[/b]
[b] * * Command Line Search[/b]
[b] * * Replication[/b]
[b] * * Validata Kickstart[/b]
[b] * * ACL Setup
[/b]
[b]

[/b]

(5)检查配置Cobbler




动态更新配置:
下面根据cobbler配置信息的检查结果,逐个修复相关问题项。从Cobbler 2.4开始,有一个重要的功能,就是让你不需要手工编辑配置setting配置文件,直接使用命令修改相关配置,默认这个功能是不启用,启用需要进行一下配置:
**建议采用修改/etc/cobbler/settings配置文件的方式修改配置选项。
**在采用命令方式动态更新配置时,Cobbler会将配置文件中带"#"注释的行全部删除
# cd /etc/cobbler/
# cp -af settings{,.default}
# sed -i '/^allow_dynamic_settings:/ s/0/1/' settings
# service cobblerd restart
解决问题项1和2,设置cobbler服务器地址
# cobbler setting edit --name=server --value=172.16.100.7
# cobbler setting edit --name=next_server --value=172.16.100.7
如果selinux未禁用,也会提示报错,解决方法如下:
# setenforce 0
# sed -i '/\(^SELINUX=\).*/ s//\1disabled/' /etc/selinux/config
解决问题项3,下载启动菜单(可以选择不修复,x86/x86_64平台上,如果本地有syslinux包的最新版本,直接拷贝引导所需文件即可)
---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的映像文件,必须加载此文件。
# rpm -qf /usr/share/syslinux/pxelinux.0
syslinux-4.02-8.el6.x86_64
# 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服务
# sed -i '/disable/ s/yes/no/' /etc/xinetd.d/rsync
# chkconfig rsync on
如果提示rsync文件不存在,可以不用理他,应该是程序bug,不影响cobbler使用
解决问题项5

# 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文件验证支持包
# yum -y install pykickstart
解决问题项7,修改cobbler用户的默认密码
# 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包
# yum -y install cman fence-agents
如果cobbler服务器启用防火墙功能,需要开启以下端口:
# 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数据
# service httpd restart
# service cobblerd restart
# cobbler sync





配置cobbler依赖服务由cobbler进行管理:
--虽然cobbler可用于管理依赖的服务;
--默认情况下,若开机未将相关的服务设置成开启启动,即使cobblerd服务启动时,相关服务也是未启动状态。
--因此,需要确认dhcp、tftp、rsync等服务是否设置为开启自启动。
--tftp、rsync服务由xinetd管理




--配置dhcp\dns由cobbler管理
# cobbler setting edit --name=manage_dhcp --value=1
# cobbler setting edit --name=manage_dns --value=1


防止误重装系统,选项:pxe_just_once
# 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服务统一管理。
# 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服务



# chkconfig --level 35 dhcpd on


配置web管理认证:
添加、修改默认用户(cobbler)
# 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数据:
# service cobblerd restart
# cobbler sync



Web相关访问地址:
* http://172.16.100.7/cobbler_web * http://172.16.100.7/cobbler[/code] 
配置cobbler组件
* distro:可使用distro命令或者import导入发行版镜像
Cobbler上,distro可以有多个;同一个distor之上可定义同个profile,每个profile使用不同的kicstart文件。

挂载发行版镜像源

# mkdir -p /mnt/CentOS/6.5
# mount -o loop /root/CentOS-6.5-x86_64-bin-DVD1.iso /mnt/CentOS/6.5/


导入发行版镜像源



# 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文件
# 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
# 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仓库

#配置本地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服务器

# 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

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息