cfengine / 系统服务

cfengine学习笔记01[原创]

cfengine看了有几天了,试验也做了不少了,基本上可以说是入门了,这是一个集中管理的软件,内容分发性质的软件,可以单机使用,也可以多机使用

Cfengine 是一个令人恐怖的系统管理工具。它可自动对联网的计算机进行配置和维护,适用于所有基于UNIX或类UNIX的操作系统,并且它可以通过UNIX兼容的环境/库Cygwin 在较新版本的Windows操作系统中运行。

Cfengine目的是使简单的管理的任务自动化,使困难的任务变得较容易。它的目标是使系统从任何状态收敛到一种理想状态。依照它的作者 Mark Burgess 所说,cfengine 总是使您的系统更接近于您所定义的配置; 它决不会使系统变得更糟。

以上是cfengine网站对此软件的说明,接下来我们就开始吧

环境:vmvare模拟两个linux,hostname分别是linux01(192.168.220.128)和linux02(192.168.220.130)
http://www.cfengine.org下载cfengine的程序,目前稳定版最新的是2.2.8,
安装超级傻瓜,就三步
./configure
make
make install
执行文件被安装到了/usr/local/sbin目录下,都是cf开头的
配置文件模板被放在了/usr/local/share/cfengine目录下
接下来在/var下建立cfening文件夹,及相应的文件夹,目录结构如下

/var/cfengine/
| -inputs #用于放置相应的配置文件
| -outputs #程序执行后的输出,通常里面没内容
| -bin
#cfengine可执行文件放置的位置

文件夹建好后,就把cfengine的应用程序拷贝到bin文件夹下,当然做软连接也是可行的

cp /usr/local /sbin/cf * /var/cfengine/bin/

拷贝三个配置文件到inputs文件夹

cp /usr/local /share/cfengine/cfagent.conf.example /var/cfengine/cfagent.conf
cp /usr/local /share/cfengine/cfservd.conf.example /var/cfengine/cfservd.conf
cp /usr/local /share/cfengine/update.conf.example /var/cfengine/update.conf

先来说下几个应用程序的作用

cfagent 一个独立运行的程序(关键程序)
An autonomous configuration agent (required) .
cfservd cfengine的服务端
A file server and remote activation service (optional) .
cfexecd 计划任务和报告服务(可以替代crontab的东东)
A scheduling and report service (recommended) .
cfenvd
An anomaly detection service (strongly recommended) .
cfrun 远程控制的程序
A way of activating cfagent remotely (use this as you need to) .
cfshow
A way of examining the contents of helper databases (helper) .
cfenvgraph
Ancillary tool for cfenvd (helper) .
cfkey 生成key的程序,只需运行一次就可以了
Key generation tool (run once on every host) .

编辑inputs下的cfagent.conf文件内容如下

##################################################
#
# cfagent.conf
#
# This is a simple file for getting started with
# cfengine. It is harmless. If you get cfengine
# running with this file, you can build on it.
#
##################################################

###
#
# BEGIN cfagent.conf (Only hard classes in this file )
#
###

control:

actionsequence = ( shellcommands ) #定义要执行的动作,此处是执行一个shell命令

domain = ( test.com ) #定义域名

timezone = ( MET ) #定义时区

######################################################################
shellcommands: #需要执行的shell命令

"/bin/touch /tmp/2" #在/tmp目录下建立2这个文件
######################################################################

###
#
# END cfagent.conf
#
###

动作类型包含以下几种,这里举例只使用了shellcommands

groups, control, copy, homeservers, binservers, mailserver, mountables,import, broadcast, resolve, defaultroute, directories, miscmounts,files, ignore, tidy, required, links, disable, shellcommands,strategies,editfiles, processes

保存退出后,执行/var/cfengine/bin/cfagent -v,然后可以看到如下结果

********************************************************************* Main Tree Sched: shellcommands pass 1 @ Mon Sep 22 19:33:57 2008 ********************************************************************* cfengine:linux01: Executing script /bin/touch /tmp/2…(timeout=0,uid=-1,gid=-1) (Setting umask to 77) cfengine:linux01: Finished script /bin/touch /tmp/2 Performance(Exec(/bin/touch /tmp/2)): time=0.0187 secs, av=0.0187 +/- 0.0316 ———————————————————————

你可以在看到/tmp下有刚刚touch好的2文件,如此一个简单的cfengine就做好了,这样如果你需要删除什么目录下的文件,或者拷贝,再或者你自己的脚本,就都可以添加到cfagent.conf文件中,然后通过crontab定义cfagent的定期执行


参考文章:

Related Post

Leave a Reply

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.