位置:海鸟网 > IT > linux/Unix >

巧用cfengine管理linux服务器

cfengine(配置引擎)是一种UNIX管理工具,其目的是使简单的管理的任务自动化,使困难的任务变得较容易。Cfengine适用于管理各种环境,从一台主机到上万台主机的机群均可使用。到2.2版本为止,我们现在所知的用于一般性管理的最大安装机群约为20,000台。

图-1是Cfengine的组成部分的关系图。

 图-1Cfengine的组成部分的关系图

基本安装

 在任何一种情况下,你都需要两个库:BerkeleyDB,用于内部数据库的使用;和OpenSSL,用于加密方法。这些库都是开放资源,并且如同cfengine一样可以免费使用。没有这些库,你将无法使用cfengine,你也不能用其他的库来替代这两个库。本文使用的RHEL5.0已经包括这些库。

 #wgetftp://fr.rpmfind.net/linux/dag/redhat/el5/en/i386/dag/RPMS/cfengine-2.2.2-1.el5.rf.i386.rpm

 #rpm-ivhcfengine-2.2.2-1.el5.rf.i386.rpm

 接下来的一步是建立cfengine工作目录树的基本结构:

 手动建立Cfengine的工作目录

 #mkdir/var/cfengine

 #mkdir/var/cfengine/bin

 #mkdir/var/cfengine/inputs

 接下来,在工作目录bin的子目录下(例如:/var/cfengine/bin)建立cfengine可执行程序的本地副本。实际运行过程中,是这些副本被执行,因此当网络在执行任务期间断掉,也不会对系统产生风险。

 步骤3复制Cfengine二进制代码到工作目录

 #cp/usr/local/sbin/cfagent/var/cfengine/bin

 #cp/usr/local/sbin/cfexecd/var/cfengine/bin

 #cp/usr/local/sbin/cfservd/var/cfengine/bin

 #chown-Rroot:0/var/cfengine

 #chmod-R755/var/cfengine


3运行所需的进程

 在最简单的安装中,可以通过在每台主机上手动运行cfagent来使用cfengine。但是,如果运行一个或多个守护进程,则会获益良多。

 (1)cfexecd守护进程

 尽管在理论上可以按需随时运行cfagent,但最好定期自动运行cfagent。这是使用cfexecd

 的时间;cfexecd以守护进程的方式运行并按定义、预定义的计划执行cfagent。通过将时间类添加到cfagent.conf的control块的schedule设置中对此计划进行修改。默认设置是Min00_05,这意味着cfagent将在每个小时的前5分钟运行。要每小时运行两次,例如,可以将下面的代码放入cfagent.conf的control段中:

 schedule=(Min00_05Min30_35)

 cfexecd守护进程没有自己的配置文件,但它不在cfagent.conf之外使用此设置。

 还可以使用系统的cron守护进程定期运行cfexecd。下列条目可以添加到系统crontab(通常

 为/etc/crontab)中以便每小时执行(和报告)cfagent:

 0****root/usr/local/sbin/cfexecd-

 F-F选项告诉cfexecd不要进入守护进程模式,因为它正由cron运行。

 为获得可靠性,请以守护进程的方式运行cfexecd,还可以从cron运行(可能是每天一次)。

 然后,可以在cfagent.conf中检查crontab条目并检查cfexecd守护进程是否正在运行。如果将下面的代码放入cfagent.conf中,请执行这些检查并更正任何问题:

 editfiles:

 {/etc/crontab

 AppendIfNoSuchLine"0****root/var/cfengine/bin/cfexecd-F"

 }

 processes:

 "cfexecd"restart"/var/cfengine/bin/cfexecd"

 通过此技术,如果一种方法工作不正常,那么另一方法最后会修复它的问题。

 (2)cfservd守护进程

 cfservd守护进程在所有系统中并非是必需的。它需要运行cfengine文件服务器,对我们而言,它只是中心配置服务器。它还允许从其他系统远程执行cfagent。如果需要此功能,则需要在每个系统中运行cfservd。在任一情况下,都应始终进行检查,以确保它与cfagent.conf中的下列命令一起运行:

 processes:

 "cfservd"restart"/var/cfengine/bin/cfservd"

 3查看类标识系统

 类是cfengine的核心。每个系统都属于一个或多个类。或者,如果换一种视角思考,许多类都是在每次cfagent运行时基于各种不同种类信息进行创建。配置文件中的每个操作都仅限于特定的类。因此,任何给定的操作都可以只在一个主机上或运行特定操作系统的多个主机上执行,也可以在每个主机上执行。要在任意给定的系统中确定定义哪些标准类,请运行下面的命令:

 #cfagent-p-v如图-2。


图2查看类标识系统

 如您所见,我的系统存在相当数量的预定义类。它们可以划分为如下类别:

 操作系统:linux_i686_2_6_18_8_el5xen

 体系结构:linux_i686_2_6_18_8_el5xen__1_SMP

 主机名:kaybee_orgkaybeeorg

 IP地址:10_1_110_1_1_1ipv4_10ipv4_10_1ipv4_10_1_1ipv4_10_1_1_1

 日期/时间:MayMin15_20Min19Q2TuesdayYr2008

 可以以此使用ps-ef|grepcf命令和netstat-anlp|grepcfservd查看进程运行情况的服务占用的端口情况如图3、4

图3使用ps-ef|grepcf命令查看服务进程


使用netstat-anlp|grepcfservd命令查看服务占用的端口

 到此为止笔者在linux服务器安装了cfengine(配置引擎),下篇文章中笔者开始配置cfengine管理Linux服务器,敬请关注。

在前面,向大家介绍了在linux服务器如何安装cfengine(配置引擎),下面笔者开始配置cfengine管理Linux服务器。

 一、创建基本的配置文件

 这些配置文件需要放置在配置服务器上的主配置目录中。这些文件都是公共文件并以最初形式在网络中的每台服务器上使用。

 (1)cfservd.conf示例

 下面是cfservd守护进程的配置文件。它允许客户机传送主配置文件集合,还允许通过cfrun

 远程执行cfagent。显然,只有一个系统允许访问中心配置文件(服务器),但是,允许cfservd访问这些文件不会损害其他系统上的任何文件(因为它们不复制这些文件)。但是,所有系统都可以从远程执行cfagent中获益,因为它允许从远程系统中按需执行cfagent。因此,可以在所有系统中使用下列cfservd.conf,这正是我们所需要的功能: