一、创建基本的配置文件
这些配置文件需要放置在配置服务器上的主配置目录中。这些文件都是公共文件并以最初形式在网络中的每台服务器上使用。
(1) cfservd.conf示例
下面是cfservd守护进程的配置文件。它允许客户机传送主配置文件集合,还允许通过cfrun
远程执行cfagent。显然,只有一个系统允许访问中心配置文件(服务器),但是,允许cfservd访问这些文件不会损害其他系统上的任何文件(因为它们不复制这些文件)。但是,所有系统都可以从远程执行cfagent中获益,因为它允许从远程系统中按需执行cfagent。因此,可以在所有系统中使用下列cfservd.conf,这正是我们所需要的功能:
control:
domain=(mydomain.com)
AllowUsers=(root)
cfrunCommand=("/var/cfagent/bin/cfagent")
admit:
/usr/local/var/cfengine/inputs*.mydomain.com
/var/cfagent/bin/cfagent*.mydomain.com
Cfrun Command设置指定在接收到来自cfrun的连接时,要执行的cfagent二进制文件的位
置。admit段非常重要,因为它指定哪个主机访问哪个文件。您必须授予对中心配置目录和cfagent二进制文件的访问权。您还需要对客户机需要从此服务器传送的任何其他文件授予访问权。
(2)基本update.conf
update.conf文件必须尽可能地简单并应进行较少的更改。此文件在cfagent.conf之前由
cfagent分析和执行。如果cfagent.conf文件已受损,则在下次客户机执行cfagent时,它们会获得新版本,因为其update.conf文件仍然有效。损坏的update.conf文件会带来麻烦,因此建议在将文件放入中心配置目录时,对任何更改都要进行彻底的测试。另外,此文件在每台主机(包括服务器)上运行。cfagent命令很巧妙,在配置服务器上运行时在本地复制文件(而非通过网络)。control段定义一些变量,然后在copy段使用。可以通过$(var)或${var}序列来完成变量替代。
1 control:
2 actionsequence = ( copy tidy )
3 domain = ( mydomain.com )
4 workdir = ( /var/cfengine )
5 policyhost = ( server.mydomain.com )
6 master_cfinput = ( /usr/local/var/cfengine/inputs )
7 cf_install_dir = ( /usr/local/sbin )
8
9 copy:
10 $(cf_install_dir)/cfagent dest=$(workdir)/bin/cfagent
11 mode=755
12 type=checksum
13
14 $(cf_install_dir)/cfservd dest=$(workdir)/bin/cfservd
15 mode=755
16 type=checksum
17
18 $(cf_install_dir)/cfexecd dest=$(workdir)/bin/cfexecd
19 mode=755
20 type=checksum
21
22 $(master_cfinput) dest=$(workdir)/inputs
23 r=inf
24 mode=644
25 type=binary
26 exclude=*.lst
27 exclude=*~
28 exclude=#*
29 server=$(policyhost)
30 tidy:
31 $(workdir)/outputs pattern=* age=7
注意行号是笔者添加的便于解释参数:
第5行:字符串server.mydomain.com应替换为配置你自己服务器的主机名。
第6行:包含主配置文件的主配置服务器目录。
第7行:每个服务器保存cfengine二进制文件的位置。
第11行:指定了源目录应递归复制到目标目录,递归深度无限制。
第13行:此选项最初会令人误解。它指定任何本地文件应与主副本进行字节比较,以确定
是否需要更新。
第17行:此选项指出从指定的服务器中检索文件。
第31行:位于tidy段的此命令删除outputs/目录中在最后7天尚未访问的所有文件。
每个文件的权限(模式)在每次运行时都要进行检查,即使文件已经存在也是如此。
(3)cfagent.conf的框架
这是cfengine配置的实质。对系统执行的任何更改都有希望通过此文件来完成。这里的示例cfagent.conf非常简单,只用于测试。如果从cfengine调用脚本并且这些脚本生成任何输出,则输出结果将显示出来(交互式执行时),被记录或通过电子邮件发送(从cfexecd执行时)。因为通常情况下每个小时执行cfagent,所以如果出现问题或有些内容被更改且需要向管理员发送通知,则任何脚本都应产生输出。
1. control:
2. actionsequence=(filesdirectoriestidydisableprocesses)98
3. domain=(mydomain.com)
4. timezone=(EDTEST)
5. access=(root)
6. #Wherecfexecdsendsreports
7. smtpserver=(mail.mydomain.com)
8. sysadm=(root@mydomain.com)
9. files:
10. /etc/passwdmode=644owner=rootaction=fixall
11. /etc/shadowmode=600owner=rootaction=fixall
12. /etc/groupmode=644owner=rootaction=fixall
13. directories:
14. /tmpmode=1777owner=rootgroup=root
15. tidy:
16. /tmprecurse=infage=7rmdirs=sub
17. disable:
18. /root/.rhosts
19. /etc/hosts.equiv
20. processes:
21. "cfservd"restart"/var/cfengine/bin/cfservd"
22. "cfexecd"restart"/var/cfengine/bin/cfexecd"
第2行:actionsequence命令非常重要,但容易忽略。必须在此变量中列出要处理的每个代码段。如果编写了一个新的代码段,但忘记将其添加到此列表中,则命令不会执行。
第4行:cfengine将确保系统使用此列表中的一个时区进行配置。
第10行:此代码段检查一些重要文件的所有权和权限并更正它发现的任何问题。
第14行:此代码段检查/tmp/目录中的权限并在需要时更正这些权限。如果需要,它还创
建目录。
第16行:此代码段从/tmp/目录中删除过去7天中尚未访问的所有文件。还删除/tmp/的子
目录而非此目录本身。
第17行:出于安全原因,禁用这些文件。如果发现这些文件,则这些文件被重命名。如果
这些文件是可执行文件,则可执行的位被取消设置。
第20行:本段验证cfservd和cfexecd守护进程是否正在运行,如果没有运行,则启动它们。
最新相关文章
发表评论