怎样实现Cobbler运维自动化部署

69次阅读
没有评论

共计 7901 个字符,预计需要花费 20 分钟才能阅读完成。

怎样实现 Cobbler 运维自动化部署,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。

一、参数说明

相关配置参数:

二、概要

总体来说,在 RHT/Centos 系列版本下,Cobbler 的使用上不会遇到很大问题。Cobbler 主要的作用是,把 DHCP、Kickstart 的修改都集成在一个平台下做了管理,Cobbler 的精华其实是它启用了 Kickstart 配置模板,其中可以内嵌 python 代码。

这部分技术,Cobbler 叫做:snippets

在 RHT/Centos 系列中,官方已经提供了不少这些代码,基本上调用一下就可以了,而 Ubuntu 下就非常的痛苦,必须自己开发。

以下是相关配置路径 (默认安装) :

Cobbler 配置   主要位置:/var/lib/cobbler/(实际操作和配置的目录 )

snippets 代码   位置:/var/lib/cobbler/snippets/

Kickstart 模板   位置 : /var/lib/cobbler/kickstarts/

安装源镜像       位置 : /var/www/cobbler/ks_mirror/(把它 link 到 apache 的发布目录,方便 kickstart 工作时通过 http 下载安装镜像文件 )

三、具体使用流程

1)导入安装源

a)   准备好安装光盘 (ISO)

暂时放在:  /www/os/CentOS-6.3-x86_64-bin-DVD1.iso

b) 挂载 ISO

mount -o loop /www/os/CentOS-6.3-x86_64-bin-DVD1.iso /mnt/centos63-1

c) 导入安装源 到 Cobbler 中

通过这个环节,Cobbler 会把安装的镜像 ISO 拷贝到 源安装镜像目录下: /var/www/cobbler/ks_mirror/

操作命令如下:

cobbler import --path=/mnt/centos63-1 --name=centos6.3 --arch=x86_64

参数说明:

–name   为安装源定义一个名字

–arch     指定安装源是 32 位还是 64 位、ia64, 目前支持的选项有: x86│x86_64│ia64

注意:这个安装源的 *** 标示 就是根据这两个参数来定义

本例导入成功后,安装源的 *** 标示就是:centos6.3-x86_64,如果重复,系统会提示导入失败

更多用法,可以查看官方文档: man cobbler , 然后查找 import 的配置,如果需要更多的参数定制  ,可以使用另外一个命令: cobbler distro。

相关管理命令:

// 查看导入源库列表

cobbler distro list

// 查看导入安装源的详细资料

cobbler distro report --name centos6.3-x86_64

2) 定义 Profile

Profile 的概念,我理解为配置分组,这样可以对一组服务器 指定他们都需要安装的服务和配置。

比如:指定磁盘的分区策略,指定需要安装的服务, 键盘布局, 默认语言等等,这些操作,其实都是通过在 Profile 中 指派不同的 kickstart 配置文件来实现。在 *** 次导入时,系统给安装源指定一个默认 Profile, 它定义了一个 KS 文件:/var/lib/cobbler/kickstarts/sample.ks,为达到自定义服务的需求,我们需要定义自己的 Profile,并指定自己的 KS 文件。当然也可以需要自定义多个 KS 文件。

接着上面例子,我已经导入了一个安装源:centos6.3-x86_64,因此需要定义一个 Profile

操作命令如下:

cobbler profile add --name=centos6.3-x86_64 --distro=centos6.3-x86_64 --kickstart=/var/lib/cobbler/kickstarts/centos6.3-x86_64.ks

如果此 profile 已经存在,则需要修改一下:

cobbler profile edit --name=centos6.3-x86_64 --distro=centos6.3-x86_64 --kickstart=/var/lib/cobbler/kickstarts/centos6.3-x86_64.ks

参数说明:

–name       Profile 的名字 (同样也不能重复),在此例中, 我们新定义的 Profile 叫:centos6.3-x86_64

–distro       Profile 相关联的安装源 ID(通过 cobbler distro list 可查到)

–kickstart  Profile 相关联的 kickstart 配置文件(此文件必须预先准备好 )

相关管理命令:

// 查看 profile 详情

cobbler profile report --name centos6.3-x86_64

// 通过 profile 找到 对应的 KS 文件

ksfile=$( cobbler profile report --name centos6.3-x86_64|grep -E  ^Kickstart  |head -n 1|cut -d  :  -f 2 );cat $ksfile;

3) 准备自定义的 kickstart 配置文件(For Centos/RHEL)

注意:这是 关键步骤之一

由于需要安装的操作系统发行厂商不同,因此 KS 文件的写法要求,也不一而足。

本文只讨论 CentOs/RHEL 系列的 KS 配置

另外:操作系统 版本不同,在 KS 也存在一定的差异,比如 CentOS5 , 和 CentOS6 下就有不同,切记!

官网的文档在此:

CentOS5 的 (网上大多是这个系列的) : http://www.centos.org/docs/5/html/Installation_Guide-en-US/s1-kickstart2-options.html

CentOS6 的 (能看到的配置案例很少) : https://access.redhat.com/knowledge/docs/en-US/Red_Hat_Enterprise_Linux/6/html/Installation_Guide/s1-kickstart2-options.html

另外我自己测试的 KS 文件也上传了。可供大家下载:

centos6.3 64 位 KS

centos5.8 64 位 KS

另外 Cobbler 对 RHEL 和 CentOS 支持非常好,因此很多需要特殊定义的选项,都有相应的 snippets 脚本

建议使用前 可以先在 snippets 目录下查一下,没准已经有了,否则才考虑自己开发 snippets 脚本

在 KS 文件的调用方法如下:

%post 
$SNIPPET(post_install_network_config)

此行配置 调用了 对网络配置的相关 操作 (里面是一个模板,支持嵌入 python 代码)

在 ks 文件里面 有一个重要配置参数,它用来 定义系统安装的源文件下载方式:

例如 CentOS6 配置文件有这么一行:url –url=http://192.168.100.1/cobbler/ks_mirror/centos6.3

这其实就是前面 导入的安装源中的 各种安装包, 现在指定了对他们的访问方式

4) 对需要 安装系统的服务器做定制化

说明:服务器网卡必须支持 PXE 功能

定制化 至少有这么几个:网络配置,Hostname 这些

注意:如果不定制化,网卡通过 PXE 启动后,会出现一个菜单供人选择用哪个配置(其实就是 Profile 的名字)

而且每个安装源 都有自己的默认 KS 文件,超过时间后,会指定使用默认的 KS 文件 进行安装

本文主要讨论 自动化一键部署,所以必须要做定制化

这部分的操作 主要通过 cobbler system 来实现

操作命令如下:

cobbler system add –name=WebCache-3.167 –mac=00:24:E8:64:24:59 –ip-address=192.168.3.167 –subnet=255.255.255.0 –gateway=192.168.3.1 –interface=eth0 –static=1 –profile=centos6.3-x86_64 –dns-name=ywtest-3-167.test.com –hostname=ywtest-3-167.test.com –netboot-enabled=true –name-servers= 192.168.3.1 202.106.196.115

以上的命令,对一台服务器做了以下定义:

a) 服务器名(不能重复即可 ) : WebCache-3.167

因为这个服务器打算要用于 Web 服务,ip 地址是 192.168.3.167,这样的格式是方便记忆

b) 网络分配的网卡设备 : eth0  MAC 地址 : 00:24:E8:64:24:59

注意,这是必填项,主要是依据它来区别不同的配置

同样的,这个参数也不允许重复(同一个 MAC 只能跟 一个自定义配置匹配 )

c) 分配的 IP : 192.168.3.167 子网掩码 : 255.255.255.0 默认网关 : 192.168.3.1 设备名: eth0 分配的是静态 IP

d) 本机使用的 DNS 服务 IP :  192.168.3.1 202.106.196.115  (根据实际情况来配置)

支持添加多个 DNSIP, 用空格做间隔

e) 指定一个 Profile:centos6.3-x86_64

这个选项能自动为这台机器 定义了安装的系统,安装的服务等等

具体配置 可以查看 profile 的 实际定义的 KS 文件来获取

f) 指定 hostname : ywtest-3-167.test.com

cobbler 可以根据 这个参数 修改 CentOS 系统的 hostname 配置

g) Cobbler 可以设置成一个新服务器的安装过后,第二次 PXE 启动的时候 能自动选择跳过(避免重复安装)

但如果需要强制安装,就需要用到这个参数:–netboot-enabled=true

相关操作命令:

// 查看定制化列表

cobbler system list

// 查看某项定制化 详情

cobbler system --name WebCache-3.167

更多的定制化技巧 :

a)   对多块网卡的定制

一般默认对 eth0 做配置,当然 Cobbler 也支持多块网卡的定制

需要注意的是,这个功能 在 CentOS/RHEL 下没有问题,Cobbler 可以把这些具体设置 通过 snippets 脚本 完成了对 KS 的修改

但相同的配置在 Ubuntu 下还没有相应的 snippets 脚本 (理论上可以自己编写), 所以只能用别的方法来实现

操作命令如下:

cobbler system edit --name WebCache-3.167 --interface=eth0.10 --static=1 --ip=192.168.10.5 --subnet=255.255.255.0 
cobbler system edit --name WebCache-3.167 --interface=eth2 --static=1 --ip=192.168.20.5 --subnet=255.255.255.0

通过以上 2 句话,可以 添加 网卡 eth0 的别名:eth0:10,和 另外一块网卡 eth2 的配置

b) 删除网卡的自定义配置

system edit --name= WebCache-3.167 --interface=eth2 --delete-interface

c) 支持网卡 bonding 配置

cobbler system edit --name=WebCache-3.167 --interface=eth0 --mac=AA:BB:CC:DD:EE:00 --interface-type=bond_slave --interface-master=bond0 
cobbler system edit --name=WebCache-3.167 --interface=eth2 --mac=AA:BB:CC:DD:EE:01 --interface-type=bond_slave --interface-master=bond0 
cobbler system edit --name=WebCache-3.167 --interface=bond0 --interface-type=bond --bonding-opts= mode=active-backup miimon=100  --ip=192.168.3.167 --subnet=255.255.255.0 --gateway=192.168.3.1 --static=1

以上命令,配置了一个 bonding,它的成员是: eth0,eth2

d) 配置 Bridge 类型的网卡

cobbler system edit --name=WebCache-3.167 --interface=eth3 --mac=AA:BB:CC:DD:EE:00 --interface-type=bridge_slave --interface-master=br0 --static=1 
cobbler system edit --name=WebCache-3.167 --interface=br0 --mac=AA:BB:CC:DD:EE:00 --interface-type= bridge  --static=1

以上语句 是配置一个 Bridge: br0, 它的成员是 eth3

因为这个 bridge 我不想配置 IP 地址, 所以要加上参数 :  –static=1,否则该 Bridge 在实际配置中 Cobbler 会配置成 DHCP 模式

更多技巧,请参考官网 WIKI。

也可以多 参考 软件自带的 MAN :  man cobbler

5) 同步以上步骤 所做的修改

因为以上步骤需要修改的组件比较多 (根据 cobbler 配置文件来),大概会有:

a) Cobbler 自己内部配置

以上几个环节的配置信息, 都会自动记录下来

b) Dhcp 配置(需要在主配置文件中 开启对 Dhcp 功能的管理 )

需要注意的是,如果是 Centos5 下,会遇到问题 ; 而 Centos6 却不会有问题

默认 Cobbler 修改的是 /etc/dhcp/dhcpd.conf,而 Centos5 下 配置文件却在 /etc/ 下

因此 可能需要修改 dhcp 的 系统启动脚本 /etc/init.d/dhcpd

c) Tftp 配置  (需要在主配置文件中 开启对 Tftp 功能的管理 )

因为有定制化配置,所以 Cobbler 会在 tftp 的主配置文件夹中生成对应的配置:

假设:ftft 的 root 目录是  /tftpboot/

Cobbler 生成的配置文件会 放在 /tftpboot/pxelinux.cfg/ 下

d) Bind 配置(需要在主配置文件中 开启对 DNS 功能的管理 )

这部分配置 我的测试中没有打开,因此没有测试

估计会 修改 Bind 的主配置文件 /etc/named.conf

操作命令如下:

cobbler sync

6) 打开电源,BOOT 需要自动化安装的服务器

一般接上电源,通过 PXE 即可完成自动化安装,基本上经过 20-30 分钟,就可以完成一次安装。

四、补遗

1)关于 Apache 和 Cobbler

在上一篇文章 (Cobbler- 服务安装) 中,我已说过 Apache 和 Cobbler 有深度整合

主要是 Cobbler 是用 python 写的,它利用 Apache 的 wsgi 模块 实现了 http 的接口

利用这个接口,可以做这么几件事:

a 提供安装源的 http 下载

b Cobbler 的 web 管理平台,提供图形化的操作界面(此部分我没有深入测试, 请自行查看相关文档 )

//Cobbler web 界面访问地址:

http://192.168.100.1/cobbler_web/ (192.168.100.1  为 apache  监听的 IP 地址)

c 提供接口查询相关配置

比如:

// 查询 profile 详情

http://192.168.100.1/cblr/svc/op/ks/profile/centos6.3-x86_64

// 查询定制化配置的 KS 文件

http://192.168.100.1/cblr/svc/op/ks/system/WebCache-3.167

2) 关于 wsgi

安装方法: yum -y install mod_wsgi

相关配置文件:

a) wsgi.conf : 可以让 apache 启动 wsgi 模块

其内容就是一行配置命令:

LoadModule wsgi_module modules/mod_wsgi.so

b) mod_wsgi.so   模块核心,按 apache 组件开发

此文件需要放到 apache 的模块组件目录中

c) cobbler.conf

此配置文件 是主要核心配置

假设 apache 和 cobbler 都是默认安装

那文件会存在于: /etc/httpd/conf.d/cobbler.conf

3) 配置检查

//kickstart 配置检查

cobbler validateks

// 单个 kickstart profile 检查

/usr/bin/ksvalidator  http://192.168.100.1/cblr/svc/op/ks/profile/centos6.3-x86_64  
/usr/bin/ksvalidator  http://192.168.100.1/cblr/svc/op/ks/system/WebCache-3.167 

4) 设置并同步特定源

a) 增加特定源

cobbler repo add --mirror=http://mirrors.ustc.edu.cn/epel/6/x86_64/ --name=ustc-epel6-x86_64 --arch=x86_64 --breed=yum 
cobbler repo add --mirror=http://mirrors.ustc.edu.cn/epel/testing/6/x86_64/ --name=ustc-epel6-x86_64-testing --arch=x86_64 --breed=yum

b) 把特定源指定到 profile 上

cobbler profile edit --name= centos6.3-x86_64 --repos= epel6-x86_64 epel6-x86_64-testing

c) 需要同步 epel 的源到本地,考验你的网络速度

cobbler reposync 
cobbler reposync --tries=3 --no-fail

6) 修改内核启动参数,可以保证在安装开始以后,不会有选择 国家,语言,键盘布局 的提示

cobbler profile edit –name=centos6.3-x86_64 –distro=centos6.3-x86_64 –kickstart=/var/lib/cobbler/kickstarts/centos6.3-x86_64.ks –kopts= locale=en_US netcfg/choose_interface=auto console-setup/ask_detect=false keyboard-configuration/layoutcode=us

关于怎样实现 Cobbler 运维自动化部署问题的解答就分享到这里了,希望以上内容可以对大家有一定的帮助,如果你还有很多疑惑没有解开,可以关注丸趣 TV 行业资讯频道了解更多相关知识。

正文完
 
丸趣
版权声明:本站原创文章,由 丸趣 2023-08-25发表,共计7901字。
转载说明:除特殊说明外本站除技术相关以外文章皆由网络搜集发布,转载请注明出处。
评论(没有评论)