下载:
<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" />
[root@mail cfengine-2.2.10]# tar -zxvf cfengine-2.2.10.tar.gz
[root@mail cfengine-2.2.10]# cd cfengine-2.2.10
[root@mail cfengine-2.2.10]# ./configure
[root@mail cfengine-2.2.10]# make
[root@mail cfengine-2.2.10]#make install
[root@mail cfengine-2.2.10]# cp /usr/local/share/cfengine/cfagent.conf.example /var/cfengine/inputs/cfagent.conf
[root@mail cfengine-2.2.10]# cp /usr/local/share/cfengine/cfservd.conf.example /var/cfengine/inputs/cfservd.conf
#comment…. 这是注释,以“#”开头,检查和创建/bin到/usr/bin 的链接
control: 定义一个动作类型
actionsequence = ( links ) 注意括号两边必须有空格,将links动作假如到actionsequence,必须有actionsequence,否则cfengine什么都不会做,actionsequence告诉cfengine该做什么,以什么顺序去做
links:告诉cfengine下面的是需要创建的链接,可以有多个,按顺序执行,但links必须加到actionsequence否则将什么不会做
/bin -> /usr/bin
其中动作类型为下面之一: groups, control, homeservers, binservers, mailserver, mountables, import, broadcast, resolve, defaultroute, directories, miscmounts,files, ignore, tidy, required, links, disable, shellcommands, editfiles, processes
#comment
control:
actionsequence = ( links )
links:
sun4:: 以“::”结尾,这个代表classes(分类),用来部署针对该classes的动作,只有属于该classes,才执行下面的动作,classes是cfengine内定义的
/bin -> /usr/bin
osf::
………
上面例子就可以实现只针对Sunos生效,其他类型的系统有另外的操作。
增加另外的action到actionsequence:
#comment …
control:
actionsequence = ( tidy links ) 增加了新的动作tidy,用来删除文件,先执行tidy,后执行links
links:
/bin -> /usr/bin
tidy: 要使下面动作生效,必须将tidy加入到actionsequence
/tmp pattern=* age=7 recurse=inf 在目录/tmp下查找匹配pattern的文件,并且该文件有超过7天没有被访问,包括其子目录
1.
在所有站点上使用cron 运行cfagent
2.
在所有站点上配置cfservd服务,这样可以远程使用cfrun进行激活,使得配置生效,记得将cfservd加入系统自动启动项目,且将所有站点加入到 cfrun.hosts文件中
复合classes :是以“.”或者”|”连接起来的,如myclass.sun4.Monday:: 只有当host属于myclass且属于sun4且属于Monday的时候才执行下面动作; sun4|ultrix|osf:: 当host属于sun4 或 Ultrix 或osf 的时候执行下面动作
action
!myhost:: 匹配所有的host除了myhost
command
mygroup.!myhost:: 匹配mygroup中所有host除了myhost
预定义classes:ultrix, sun4, sun3, hpux, hpux10, aix, solaris, osf, irix4, irix, irix64sco, freebsd, netbsd, openbsd, bsd4_3, newsos, solarisx86, aos,nextstep, bsdos, linux, debian, cray, unix_sv, GnU, NT
变量的使用:control:
myvar = ( /usr/local/…. ) 定义了变量myvar
links:
$(myvar) -> /another/directory 使用变量myvar值
将其他变量值赋值给变量: myvar = ( “$(othervar)” )
将命令输出赋值给变量: listing = ( “exec /bin/ls” ) 之前要加上exec
内部变量: arch 当前host详细结构说明
binserver 默认存放二进制的host
class 当前系统类型
date 当前日期
domain 当前host的域
fqhost host的fully qualified hostname
host 当前host的hostname
ipaddress IP地址
ostype $(arch)的简称
split 对字串进行分割
sysadm 管理员的邮箱地址或名字
timezone 当前的时区
year 当前的年份