cfengine自动化配置系统原理与实践

上传人:博****1 文档编号:477241661 上传时间:2023-07-28 格式:DOC 页数:13 大小:241.50KB
返回 下载 相关 举报
cfengine自动化配置系统原理与实践_第1页
第1页 / 共13页
cfengine自动化配置系统原理与实践_第2页
第2页 / 共13页
cfengine自动化配置系统原理与实践_第3页
第3页 / 共13页
cfengine自动化配置系统原理与实践_第4页
第4页 / 共13页
cfengine自动化配置系统原理与实践_第5页
第5页 / 共13页
点击查看更多>>
资源描述

《cfengine自动化配置系统原理与实践》由会员分享,可在线阅读,更多相关《cfengine自动化配置系统原理与实践(13页珍藏版)》请在金锄头文库上搜索。

1、在日常系统管理工作中 , 管理上千台服务器 , 需要临时的改变其一个配置 , 例如删掉某个帐号停掉某个服务一般我们只能不厌其烦的登到每一台机器上重复的完成这些动作 , 或者写脚本循环登录及其执行操作如果有了 cfengine, 一个命令就可以搞定了 . 是不是很看效率,请看如下实践之体会 . 以下的所提到的 cfengine 是 2.2 版本的 .1. cfengine概述cfengine 是一个功能强大的自动化系统管理工具. 引用其官网的说法 cfengine 是一种 UNIX 管理工具,其目的是使简单的管理的任务自动化,使困难的任务变得较容易.它的目标是使系统从任何状态收敛到一种理想状态.

2、 使用 cfengine ,它可以保证你的系统总是维持你所希望的那个状态 ., 也会被 cfengine 自动修复!如果说有黑客进来了修改了某个重要的配置文件的内容或者权限1.1. cfengine功能概述? 检查和配置网络接口? 编辑系统和用户的文本文件? 维护符号链接? 检查和设置文件的权限? 删除垃圾文件? 检查重要文件和文件系统的存在? 控制用户脚本和 shell 命令的执行? 基于类的判定结构? 进程管理其他细节功能 , 大家可以访问它的官方网站 , 里面的文档十分丰富1.2.使用 cfengine的益处当你切换使用 cfengine来管理系统配置时,你可以得到以下好处:? 可以保证

3、所有被管理服务器使用统一标准化的系统配置?可以针对不同的系统进行配置的变更( 如 linux,freebsd.)? 可以记录系统变更,如果需要还可以在执行一次 , 将系统保持在正确的状态1.3. cfengine组件说明Cfengine 是一个用于设置和维护计算机系统的工具,包含了以下几个组件:cfagent自动配置代理 , 其配置文件为 update.conf 和 cfagent.conf cfservd文件服务和远程激活服务, 其配置文件为 cfservd.conf1cfexecd计划执行 cfagent命令cfenvd异常检测服务cfrun远程通过 cfservd调用 cfagent 的

4、方法 , 其配置文件为 cfrun.hostscfshow检查有帮助的数据库的内容的方法(辅助)cfenvgraph异常检测服务 cfenvd 的附属工具 ( 辅助 ) cfkey密匙生成工具 ( 每台服务器运行一次 ) 。1.4. cfengine配置文件每个系统必须要有最少的配置文件. 默认情况下 , 你需要将配置文件放到 /var/cfengine/inputs目录中. 可以集中化管理配置文件,通过拉的方式更新到所有客户端系统update.conf此配置文件要保持简单 ,cfengine 每次更新 , 它总是被首先解析和执行 , 此配置的主要任务就是从服务端拷贝一组配置文件 .如果其他配

5、置文件有误 , 此配置文件也能够继续更新配置文件,在下次运行的时,就可以运行成功 .对大部分网站来说,这个文件在 cfengine 系统初初始运行后,不需要去变变更的 . cfagent.conf此配置文件是 cfengine 的核心文件,它包含了所有功能操作配置 . 可以使用文件导入功能 (import 功能 ), 使配置文件易读 , 参考上图cfservd.conf此配置文件是 cfservd 守护进程的配置文件 . 文件定义了那些主机可以远程执行 cfagent 和那些主机可以传输特定的文件 .2cfengine 使用到配置文件,我们需要集中化版本控制 ( 比如 Subversion).

6、 这样就可以记录所有变更,以便在需要时,可以会滚到某个特定的版本配置 .2.使用 Classes( 与 group 相同 ) 标识系统cfengine中最重要的概念就是Classes .每种系统都属于一个或者多个classes.cfagent 每次运行的时,会根据很多各种不同信息来定义 classes. 可以在特定的 classes 执行特定的操作 .因此 , 任何操作都可以在一台主机上执行,也可以在运行特定操作系统的主机上运行,也可以在所有的主机上运行 .Cfengine使用内置的和用户定义的classes.2.1.预定义 Classes 的分类主机本生根据其架构决定很多classes比如主

7、机名称 , 主机 ip, 操作系统等 .很多 classes根据当前的日期和时间定义的.为了确定在给定系统上定义了那些标准classes, 可以运行如下命令 :rootlinux# /var/cfengine/bin/cfagent -p -v | grep DefinedDefined Classes = ( 172_22_5 172_22_5_90 172_22_5_91 64_bit Day17 Hr11 Hr11_Q1 March Min10_15 Min11 Q1 Redhat_AS5 Wednesday Yr2010 addr_alidc_net alidc_net_hzidc_c

8、om any cfengine_01 cfengine_01_hst_xyi_cn_alidc_net cfengine_01_hst_xyi_cn_alidc_net_hzidc_com cfengine_2cfengine_2_2 cfengine_2_2_3 cfengine_server cn_alidc_net cn_alidc_net_hzidc_com com compiled_on_linux_gnu fe80_216_3eff_fe16_55bhst_xyi_cn_alidc_net hst_xyi_cn_alidc_net_hzidc_comhzidc_com ipv4_1

9、72 ipv4_172_22 ipv4_172_22_5 ipv4_172_22_5_90 ipv4_172_22_5_91 linuxlinux_2_6_18_131_el5_customxen linux_x86_64 linux_x86_64_2_6_18_131_el5_customxen linux_x86_64_2_6_18_131_el5_customxen_1_SMP_Tue_Sep_15_15_46_11_CST_2009lsb_compliant net net_hzidc_comnet_iface_bond0 net_iface_lo redhat redhat_s re

10、dhat_s_5 redhat_s_5_3 redhatenterpriseserver redhatenterpriseserver_5redhatenterpriseserver_5_3 redhatenterpriseserver_tikanga x86_64 xyi_cn_alidc_net xyi_cn_alidc_net_hzidc_com )正如你所看到的 , 这个系统中包含了很多预定义classes, 他们属于几个分类 :? Operating System: redhat redhat_s redhat_s_5 redhat_s_5_3 redhatenterpriseser

11、ver redhatenterpriseserver_5 redhatenterpriseserver_5_3? Kernel: linux linux_2_6_18_131_el5_customxen linux_x86_64 linux_x86_64_2_6_18_131_el5_customxen? Architecture:64_bit linux_x86_64 x86_64? Hostname: cfengine_01 cfengine_01_hst_xyi_cn_alidc_net cfengine_01_hst_xyi_cn_alidc_net_hzidc_com3? IP Ad

12、dress: 172_22_5 172_22_5_90 172_22_5_91 ipv4_172 ipv4_172_22 ipv4_172_22_5 ipv4_172_22_5_90 ipv4_172_22_5_91? Date/Time: Day17 Hr11 Hr11_Q1 March Min10_15 Min11 Q1每个系统都属于 any 这个 class, 当你需要对 未定义或者不能使用 classes 标识的系统进行操作时候,可以使用 any 这个 class.2.2.自定义 Classes自定义 classes配置都是在 cfagent.conf中的 groups 区域中 , 请

13、看如下例子 :groups:ntp_server= ( nagios1 nagios2 nagios3 monitor_xy7 monitor_xy8 monitor_xy9 )# 通过配置文件 判断是否属于某一类型的主机 dns = ( /usr/bin/test -f /etc/named.conf )web_normal = ( /usr/bin/test -f /etc/httpd/conf/httpd.conf )# 通过 cfengine 内部命令来判断first_ten_server = ( RegCmp(webserver0-9i,$host) )# all serverall

14、_server= ( dns web_app1 )copy:any:# 根据拷贝结果,定义新的 classes$(clientconf)/syslog.confdest=$(etcdir)/syslog.confowner=$(fowner) group=$(fgroup)mode=644server=$(cfserver) trustkey=truedefine=new_syslogshellcommands:new_syslog:/etc/init.d/syslog restart /dev/null 2&1以上配置只是 cfagent.conf中的一段而已 , 从上面可以看出 :? 可以根据执行命令程序的返回结果来定义 class, 如果命令返回结果为 0, 此系统属于此定义的 class.? class 的定义可以是包含已有或者已定义的 class? 可以根据执行操作的结果来定义新的

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 办公文档 > 演讲稿/致辞

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号