RHEL6 下Cfengine V3 安装测试1

Cfengine 是一种 GNU 开源配置管理框架,用于计算机系统自动化。此框架是轻量的,可针对几乎所有平台构建。它能运行在所有常见平台上,其中包括 AIX、Linux、UNIX、Apple 和 Windows。

 

cf-promises 承诺的检验者和编译者,在试图执行一套配置承诺前预先检测。

cf-agent 变化的发动者,代理是Cfengine 操作系统资源的部分。

cf-serverd 服务器能够共享文件并且接受在一台个体计算机上执行当前策略的请求。它不可能从外部发送(推出)新信息给 Cfengine .

cf-execd 这是一个安排日程的后台程序(它能补充或取代cron)。它也可以作为包装器,执行和收集cf-agent的输出,并且发送邮件给有必要的系统用户。

cf-runagent 这是一个帮助者程序,它能够对话cf-serverd 并要求执行cf-agent上的当前策略。如果代理机上的策略包含了检验更新,它因此模拟为一个发动者,对cfengine 的主机产生变化。

cf-report 它能得出总结和其他报告,以多种格式输出或与其他系统整合。

cf-know 这个代理能够从大量关于系统知识的承诺中产生一个ISO 标准主题图。它可作为语义网显示文档。

Cfengine 安装

去Cfengine官网下载最新的Cfengine软件,https://cfengine.com/downloads 最新版本是V3.3

  
  
  
  
  1. # ls  
  2.  
  3. cfengine-3.2.4.tar.gz  
  4.  
  5. cfengine-community-3.3.0-1.i386.rpm  
  6.  
  7. cfengine-community-3.3.0-1.x86_64.rpm 

源码安装

安装cfengine前需要一下安装一下三种软件:

Ø Openssl (openssl openssl-devel)

Ø BerkeleyDB(db4、db4-devel)

Ø pcre(pcre pcre-devel)

为安装简便,以上3种软件直接使用yum安装即可

# yum install openssl* pcre* db4* -y

 

安装Cfengine

  
  
  
  
  1. # tar xf /cfengine-3.2.4.tar.gz -C /usr/src/  
  2.  
  3. # cd /usr/src/cfengine-3.2.4/  
  4.  
  5. # ./configure   
  6.  
  7. # make && make install  
  8.  
  9.    
  10.  
  11. # /usr/local/sbin/cf-key  //生成一对密钥,并且生成当前Cfengine的工作目录  
  12.  
  13. Making a key pair for cfengine,please wait, this could take a minute...  
  14.  
  15. [root@server ~]# tree /var/cfengine/   //查看此时目录结构  
  16.  
  17. /var/cfengine/  
  18.  
  19. ├── bin  
  20.  
  21. ├── inputs  
  22.  
  23. ├── lastseen  
  24.  
  25. ├── modules  
  26.  
  27. ├── outputs  
  28.  
  29. ├── ppkeys  
  30.  
  31. │   ├── localhost.priv  
  32.  
  33. │   └── localhost.pub  
  34.  
  35. ├── randseed  
  36.  
  37. ├── reports  
  38.  
  39. └── state  
  40.  
  41.     ├── cf_otherprocs  
  42.  
  43.     ├── cf_procs  
  44.  
  45.     ├── cf_rootprocs  
  46.  
  47.     └── cf_state.db  
  48.  
  49.    
  50.  
  51. 8 directories, 7 files 

Cfengine的相关目录:

Ø /var/cfengine/bin --> 具有Cfengine二进制文件的目录

Ø /var/cfengine/inputs --> 具有Cfengine配置文件的目录

Ø /var/cfengine/outputs --> 具有Cfengine运行报告的目录

Ø /var/cfengine/ppkeys --> 具有身份验证密钥的目录

Ø /var/cfmasterfiles --> 具有策略服务器上的主文件的目录

Ø /var/cfengine/repository --> 包含了重要Cfengine 文件备份以备恢复(name/location 可配置)的目录

  
  
  
  
  1. # mkdir -p /var/cfengine/masterfiles  
  2.  
  3. # cp /usr/local/sbin/cf-* /var/cfengine/bin/  //拷贝命令文件到/var/cfengine/bin/下  
  4.  
  5. # cp /usr/local/share/cfengine/masterfiles/*.cf/var/cfengine/masterfiles/  
  6.  
  7. # tree /var/cfengine/bin/  
  8.  
  9. /var/cfengine/bin/  
  10.  
  11. ├── cf-agent  
  12.  
  13. ├── cf-execd  
  14.  
  15. ├── cf-key  
  16.  
  17. ├── cf-know  
  18.  
  19. ├── cf-monitord  
  20.  
  21. ├── cf-promises  
  22.  
  23. ├── cf-report  
  24.  
  25. ├── cf-runagent  
  26.  
  27. └── cf-serverd  
  28.  
  29.    
  30.  
  31. 0 directories, 9 files 

二进制文件:

Ø /var/cfengine/bin/cf-promises --> 检查承诺语法的命令

Ø /var/cfengine/bin/cf-agent --> 维护共同做出的承诺及有关系统状态的代理包命令

Ø /var/cfengine/bin/cf-serverd --> 用来将策略或数据文件发布到客户端并就来自cf-runagent 的请求进行响应的服务器(守护进程)

Ø /var/cfengine/bin/cf-execd --> 负责运行cf-agent的调度守护进程

Ø /var/cfengine/bin/cf-runagent --> 在远端机器上运行cf-agent的命令

Ø /var/cfengine/bin/cf-monitord --> 负责收集有关系统状态信息的守护进程

Ø /var/cfengine/bin/cf-report --> 从 Cfengine 嵌入数据库生成摘要和其他报告的命令

Ø /var/cfengine/bin/cf-know --> 从大量承诺(知识建模代理)生成一个ISO标准的 Topic Map的命令

Ø /var/cfengine/bin/cf-key --> 在每个主机上运行一次来创建用于安全通信的公共/私有密钥对的密钥生成工具

配置文件:

Ø /var/cfengine/inputs/promises.cf --> cf-agent 所使用的主要配置文件

  
  
  
  
  1. # /var/cfengine/bin/cf-agent --bootstrap   //测试是否可以运行  
  2.  
  3. ** CFEngine BOOTSTRAP probe initiated  
  4.  
  5.    
  6.  
  7.    @@@       
  8.  
  9.    @@@     CFEngine  
  10.  
  11.               
  12.  
  13.  @ @@@ @   CFEngine Core 3.2.4  
  14.  
  15.  @ @@@ @     
  16.  
  17.  @ @@@ @     
  18.  
  19.  @    @      
  20.  
  21.    @@@       
  22.  
  23.    @ @       
  24.  
  25.    @ @       
  26.  
  27.    @ @       
  28.  
  29.    
  30.  
  31. Copyright (C) CFEngine AS2008-2012  
  32.  
  33. See Licensing athttp://cfengine.com/3rdpartylicenses  
  34.  
  35.    
  36.  
  37.  -> This host is: server.sxkj.com  
  38.  
  39.  -> Operating System Type is linux  
  40.  
  41.  -> Operating System Release is2.6.32-131.0.15.el6.i686  
  42.  
  43.  -> Architecture = i686 
  44.  
  45.  -> Internal soft-class is linux  
  46.  
  47.  -> An existing policy was cached on thishost in /var/cfengine/inputs  
  48.  
  49.  -> Assuming the policy distribution pointat: 10.1.1.187:/var/cfengine/masterfiles  
  50.  
  51.  -> Attempting to initiate promisedautonomous services...  
  52.  
  53.    
  54.  
  55.  ** This host recognizes itself as a CFEnginePolicy Hub, with policy distribution and knowledge base.  
  56.  
  57.  -> The system is now converging. Fullinitialisation and self-analysis could take up to 30 minutes  
  58.  
  59.    
  60.  
  61. -> Bootstrapto 10.1.1.187 completed successfully  
  62.  
  63. # ps -e | grep cf   //进一步检测cfengine的相关进程是否开启  
  64.  
  65. 12384 ?        00:00:00 cf-execd  
  66.  
  67. 12387 ?        00:00:00 cf-serverd  
  68.  
  69. 12398 ?        00:00:00 cf-monitord 

简单策略执行测试

root用户测试

Cfengine有一个可以使用的工作空间目录。当以root身份运行,它的默认位置在`/var/cfengine' ,而目录~/.cfagent 是留给其他用户使用的。

  
  
  
  
  1. # cat test.cf   //编辑一个策略文件  
  2.  
  3. bodycommon control   
  4.  
  5. {   
  6.  
  7. bundlesequence=> { "test" };  
  8.  
  9. }   
  10.  
  11. #   
  12.  
  13. bundleagent test   
  14.  
  15. {   
  16.  
  17. reports:                     #这个是承诺类型  Thisis a promise type   
  18.  
  19. cfengine_3::                  #这个是类环境(这个承诺只能在cfengine3系统实行)  
  20.  
  21. "Helloworld";                 #这是一个简单的承诺(它产生了一个写有"Hello world"的报告)  
  22.  
  23. }   
  24.  
  25. # /var/cfengine/bin/cf-promises  -f  /root/test.cf  
  26.  
  27. # /var/cfengine/bin/cf-agent  -f  /root/test.cf  
  28.  
  29. R: Hello world  
  30.  
  31. //这个‘R’:告诉你这是个来自于一个报告的输出  
  32.  
  33. //如果你立即重复相同的命令(/var/cfengine/bin/cf-agent -f  /root/test.cf),将什么也不会发生。但如果你等上1分钟,它将会再次的工作。cfengine认为重复指令的时间太短了而不需要再次保持承诺  
  34.  
  35. # /var/cfengine/bin/cf-agent -v -f /root/test.cf  | grep lock   
  36.  
  37. //-v或者--verbose以详细的模式列出运行过程  
  38.  
  39. cf3> Making sure that locksare private...  
  40.  
  41. cf3>  XX Nothing promised here [lock.test.reports.-server.Hello_world_10] (0/1 minuteselapsed)  
  42.  
  43. cf3>  -> No lock purging scheduled  
  44.  
  45. #  
  46.  
  47.    
  48.  
  49. # cat /root/test1.cf   
  50.  
  51. bodycommon control  
  52.  
  53. {  
  54.  
  55.          bundlesequence => {"edit_motd" };  
  56.  
  57. }  
  58.  
  59.    
  60.  
  61. bundleagent edit_motd  
  62.  
  63. {  
  64.  
  65. vars:     
  66.  
  67.       "motd" string =>"/etc/motd";  
  68.  
  69. files:     
  70.  
  71. "$(motd)"  
  72.  
  73. create=> "true",  
  74.  
  75. edit_line=> addmessage;  
  76.  
  77. reports:   
  78.  
  79. cfengine::  
  80.  
  81.          "Hello world!";  
  82.  
  83. }  
  84.  
  85.    
  86.  
  87. bundleedit_line addmessage  
  88.  
  89. {  
  90.  
  91. insert_lines:  
  92.  
  93.          "This system is managed byCFEngine 3";  
  94.  
  95. }  
  96.  
  97. # /var/cfengine/bin/cf-agent -KI -f ~/test1.cf   //-K忽略锁状态,-I选项是有变化就显示  
  98.  
  99.  -> Edited file /etc/motd  
  100.  
  101. R: Hello world!  
  102.  
  103. # cat /etc/motd  
  104.  
  105. This system is managed byCFEngine 3  
  106.  
  107. //如果文件中已经有编辑的信息存在了,就不再编辑了 

普通用户测试

你不需要超级用户的权限来使用cfengine。以普通用户可以安全地测试大多数的试验。你应该在准备开始配置系统以前花一些时间来试验小的例子。为了这么做你应该以常规无特权的用户登录到你的系统并开始配置:

  
  
  
  
  1. $ /usr/local/sbin/cf-key   
  2.  
  3. $ cp /usr/local/sbin/cf-* ~/.cfagent/bin  
  4.  
  5.    
  6.  
  7. $ cat test.cf   
  8.  
  9. body common control   
  10.  
  11. {   
  12.  
  13. bundlesequence=> { "test" };   
  14.  
  15. }   
  16.  
  17. #   
  18.  
  19. bundle agent test   
  20.  
  21. {   
  22.  
  23. reports:             #这个是承诺类型  This is a promise type  
  24.  
  25. cfengine_3::           #这个是类环境(这个承诺只能在cfengine3系统实行)  
  26.  
  27. "Helloworld";        #这是一个简单的承诺(它产生了一个写有"Hello world"的报告)  
  28.  
  29. }   
  30.  
  31. $ ~/.cfagent/bin/cf-promises  -f  ~/test.cf  
  32.  
  33. $ ~/.cfagent/bin/cf-agent  -f  ~/test.cf   
  34.  
  35. R: Hello world  
  36.  
  37.    
  38.  
  39. rpm安装  
  40. 这里以32位的rpm软件作为安装示例  
  41.  
  42. # rpm -ivh cfengine-community-3.3.0-1.i386.rpm  
  43.  
  44. Preparing...               ########################################### [100%]  
  45.  
  46.   1:cfengine-community     warning:user build does not exist - using root  
  47.  
  48. warning: group build does notexist - using root  
  49.  
  50. warning: user build does notexist - using root  
  51.  
  52. warning: group build does notexist - using root  
  53.  
  54. ###########################################[100%] 

本文档主要介绍Cfengine的源码安装配置,rpm不作过多介绍

你可能感兴趣的:(安装,测试,Cfengine)