在完成了对工作方式二的配置之后,它的基础上我们来配置工作方式一,这种工作方式是由服务器运行cfrun连接远程客户端的cfservd,激活远程主机的cfagent程序。相比第二种方式而言,这种做法实现了集中控制.例如现在有个配置需要立刻更改,而现在还没到客户端定时运行的时间,如果我们一台台的登录到客户机来执行cfagent,显然是十分麻烦的,而且很费时间。有了cfrun就可以在中央机上对所有的客户发出指令让他们立即运行cfagent。
在之前的update.conf里面,我们可以看到我们已经在远程客户端上开启了cfservd进程.只是并没有为它们写配置文件,要做也其实很简单,将服务器的cfservd.conf复制过来,然后做适当修改就可以了
# cfservd.conf # yahoon 2007.11.1 control: cfrunCommand = ( "/var/cfengine/bin/cfagent" ) 只需要加入这一句就可以了 domain = ( yahoon.org ) AllowConnectionsFrom = ( 192.168.0.0/24 ) TrustKeysFrom = ( 192.168.0.0/24 ) AllowUsers = ( root ) MaxConnections = ( 150 ) MultipleConnections = ( true ) #AllowMultipleConnectionsFrom = ( 192.168.0 ) ############################################ admit: #/var/cfengine/rpc_out *.$(domain) 128.39.73 #/file *.$(domain) 128.39.73 /masterfile/inputs 192.168.0. /var/cfengine 192.168.0. |
然后重启客户机的cfservd进程
在服务器上写配置文件cfrun.host,只需要把客户机的ip加进去,这里我们先只把115加进去
# This is the host list for cfrun 192.168.0.115 |
现在就可以在服务器上运行cfrun –v
…(部分略)… Loaded /var/cfengine/ppkeys/localhost.priv Loaded /var/cfengine/ppkeys/localhost.pub Looking for a source of entropy in /var/cfengine/randseed cfrun(0): .......... [ Hailing 192.168.0.115 ] .......... Connecting to server 192.168.0.115 to port 0 with options Loaded /var/cfengine/ppkeys/root-192.168.0.115.pub Connect to 192.168.0.115 = 192.168.0.115 on port 5308 Loaded /var/cfengine/ppkeys/root-192.168.0.115.pub ............................................................... cfrun:yahoon.org: Strong authentication of server=192.168.0.115 connection confirmed 192.168.0.115 replies.. Connection with 192.168.0.115 completed |
到客户机115上查看cfagent的日志文件cfengine.centos2.runlog
Sat Nov 3 07:06:37 2007:Lock removed normally :pid=24784:lock.cfagent_conf.centos2.copy._masterfile_inputs__var_cfengine_inp uts_192_168_0_114_4831: Sat Nov 3 07:06:39 2007:Lock removed normally :pid=24784:lock.cfagent_conf.centos2.processes.proc_cfservd__var_cfengine_bin_ cfservd_1704: Sat Nov 3 07:06:39 2007:Lock removed normally :pid=24784:lock.cfagent_conf.centos2.processes.proc_cfenvd__var_cfengine_bin_c fenvd__H_4223: Sat Nov 3 07:06:39 2007:Lock removed normally :pid=24784:lock.cfagent_conf.centos2.tidy._var_cfengine_outputs_3686: Sat Nov 3 07:06:39 2007:Lock removed normally :pid=24784:lock.cfagent_conf.centos2.shellcommand._bin_echo_Danger__Will_hello _____Robison______2889: Sat Nov 3 07:06:39 2007:Lock removed normally :pid=24784:no_active_lock: |
按照115的方法将另外一台客户机116也配置好,并加入到cfrun.hosts文件里面,同样执行cfrun –v就可以看到两台主机都运行了.
1)cfrun是读取cfrun.hosts里面的主机列表,一个主机完成之后再连接下一台主机
2)如果现在有多台主机,我现在有紧急情况要运行其中一台的cfagent,例如115这台机,当然你可以ssh到这台主机上直接执行cfagent –v,但是有了cfrun,你只需要在服务器上执行cfrun 192.168.0.115 –v,注意输出的第一行显示Skipping host 192.168.0.116,很明显,它会跳过116来执行。
3)如果客户机的cfservd.conf从服务器拷贝过来后未增加cfrunCommand = ( "/var/cfengine/bin/cfagent" ),那么在服务器执行cfrun –v的时候会报错,同样以115为例,那么cfrun –v的输出会有:
Loaded /var/cfengine/ppkeys/root-192.168.0.115.pub ............................................................... cfrun:yahoon.org: Strong authentication of server=192.168.0.115 connection confirmed 192.168.0.115 replies.. Host authentication failed. Did you forget the domain name or IP/DNS address registration (for ipv4 or ipv6)?cfrun:yahoon.org: Couldn't recv cfrun:yahoon.org: recv Connection with 192.168.0.115 completed |
1、通过客户机本身的cfexecd 和 服务器的cfrun如果是同时执行cfagent会不会出现冲突?答案是不会,cfengine有很好的锁的机制来避免这种情况的发生.通常来说,客户机定时执行cfexecd来单独激活自己的cfagent和服务器执行cfrun集中激活客户机这两种方式在实际中都会使用,只是场合不同:
定时执行:作为客户机的一种例行的工作安排进行设置,属于日常任务。
集中执行:一般用于特殊情况,要临时激活某些或者所有的客户机执行cfagent,例如临时更改某个主机的配置等。
2、cfengine本身并没有客户机服务器的严格区分,每一台主机同时可以是服务器,也可以当作客户机.这与windows域的概念有些相似,只要客户端上安装了域管理工具,就可以进行域管理的工作.cfengine也是这种概念.当然,一般来讲方便于集中控制,我们会选定一台机作为服务器,例如本文的centos1,其余的机都用作客户机。
3、cfengine的日志系统:cfengine 的日志是相当丰富的,例如在centos1上,在/var/cfengine目录里面cfengine.centos1.runlog,这是cfagent进程的运行日志, cfengine.localhost.runlog这是cfenvd进程的日志.特别注意的是outputs这个目录下面,有很多文件,每次cfexecd运行一次,就会写入一个文件,文件的内容就是cfagent执行的结果.outputs这个目录包括下面的文件都是由cfexecd程序所产生的。
4、 inputs outputs 目录,这两个目录十分容易搞混,上面已经说了 outputs 目录的作用,inputs相对而言就重要得多,它是 cfengine 默认的当前有效配置文件所在的目录.我们之前创建的 *.conf 之类的文件都是在这个目录下。
5、cfengine 的所有程序都带有-v参数,用于详细的输出,这对我们排错调试带来了很大方便.而且对于cfagent程序,-n参数是十分有用的.对于一个刚刚建立的策略文件直接执行是十分危险的,-n参数是模拟执行,所以带上它来运行cfagent就给我们带来很大的安全性,特别是调试的时候.所以首先应该使用
cfagent –n –v
6、cfengine的文档是十分丰富的,我这里也只是仅仅安装上去,告诉大家基本的使用方法,更详细的使用说明可以查阅其官方网站的文档。
共5页: 上一页 [1] [2] [3] [4] 5 | |||||||
|
或是邮件反馈可也:
askdama[AT]googlegroups.com
订阅 substack 体验古早写作:
关注公众号, 持续获得相关各种嗯哼: