什么是cfengine  

    cfengine(配置引擎)是一种 UNIX分布式系统管理实用程序,其目的是使简单的管理的任务自动化,使困难的任务变得较容易。它的目标是使系统任何状态收敛到一种理想状态。它适用于所有基于UNIX或类UNIX的操作系统,并且它可以通过UNIX兼容的环境/库 Cygwin 在较新版本的Windows操作系统中运行。它的主要作用是配置统一标准化、用户统一管理、软件安装。 

 

cfengine社区版能做什么

♦ 提取系统的状态和配置信息

♦ 检查和修改文件的内容。

♦ 检验、更正文件许可及所有权。

♦ 用户管理。

♦ 同步目录。

♦ 删除无用文件。

♦ 压缩被选文件。

♦ 在网络中分发文件。

♦ 自动挂载NFS文件系统。

♦ 检查重要文件和文件系统是否存在及其完整性。

♦ 执行命令及脚本。

♦ 软件包处理。

♦ 管理系统服务器进程。

 

 承诺理论   

    cfengine是基于承诺理论工作的,每条承诺控制着客户端的行为。在cfengine中,每个系统自主合作, 客户端从策略中心拉取策略,然后执行相应的操作。在cfengine中,策略是由许多承诺组成的,而每条语句都是承诺。 

 

架构   

    cfengine遵循BDMA(Build-Deploy-Manage-Audit)生命周期管理架构,首先是Build:对我们所要做 的事情进行规划、建立策略,这些策略决定操作怎样去实现;接着是Deploy:策略制定后,接着就是去落实这 些策略来达到目地;接着就是管理:策略落实后,难免会有意外的事情发生,这时我们就要对整个cfengine 系统进行管理,很幸运的是cfengine自动管理着整个系统,只需要人去做一些不能自动化的任务;最后就是 Audit:对整个cfengine系统进行审计,需要查看系统到底进行了什么操作,做了哪些修改,管理员只需要查 看有客户端产生的报告即可。架构如图  

 

 工作流程(如图)   

   在策略中心(policy hub)一般会有三个进程:cf-serverd、cf-execd、cf-monitord。cf-serverd 对客户端进行监听,响应客户端的请求并发送策略文件;cf-execd是调度器,默认每5分钟启动cf-agent来 同步策略文件。cf-monitord收集系统资源信息,如内存、cpu、进程、文件等。   

   在客户端会启动cf-execd进程来启动cf-agent进程,然后cf-agent进程会对服务器请求来同步策略文件, cf-agent是真正落实策略的进程。   

   即使网络出现问题或服务出现问题,每个系统也能够自动维护自己的系统。

工具

cf-promises:承诺的验证工具和编译工具,在落实策略前使用这个工具来检查策略文件的正确性。

cf-agent:对policies进行评估、落实policies、修改系统的状态、产生输出结果。 可通过cf-execd启动或者通过cf-runagent远程启动(客户端必须开启cf-serverd)。

cf-serverd:服务进程(端口是5308),监听客户端的请求并发送策略文件,另外cf-serverd能够 监听cf-runagent的请求来启动本地cf-agent,默认cf-runagent没有开启。

cf-execd:调度器,默认每5分钟启动cf-agent,收集cf-agent的输出并以邮件的形式发送给管理员。

cf-runagent:远程启动cf-agent,前提是客户端启动了cf-serverd进程,cf-runagent--> cf-serverd-->cf-agent。 

cf-key:产生一对密钥,用于分布式环境中提供验证。 

cf-monitord:收集系统不同方面的统计信息,cf-agent通过mon.*访问这些信息。 

cf-report:获取cfengine的行为信息。