• 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

    # ls

    cfengine-3.2.4.tar.gz

    cfengine-community-3.3.0-1.i386.rpm

    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

    # tar xf /cfengine-3.2.4.tar.gz -C /usr/src/

    # cd /usr/src/cfengine-3.2.4/

    # ./configure

    # make && make install

    # /usr/local/sbin/cf-key  //生成一对密钥,并且生成当前Cfengine的工作目录

    Making a key pair for cfengine,please wait, this could take a minute...

    [root@server ~]# tree /var/cfengine/   //查看此时目录结构

    /var/cfengine/

    ├── bin

    ├── inputs

    ├── lastseen

    ├── modules

    ├── outputs

    ├── ppkeys

    │   ├── localhost.priv

    │   └── localhost.pub

    ├── randseed

    ├── reports

    └── state

        ├── cf_otherprocs

        ├── cf_procs

        ├── cf_rootprocs

        └── cf_state.db

     

    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 可配置)的目录

    # mkdir -p /var/cfengine/masterfiles

    # cp /usr/local/sbin/cf-* /var/cfengine/bin/  //拷贝命令文件到/var/cfengine/bin/下

    # cp /usr/local/share/cfengine/masterfiles/*.cf/var/cfengine/masterfiles/

    # tree /var/cfengine/bin/

    /var/cfengine/bin/

    ├── cf-agent

    ├── cf-execd

    ├── cf-key

    ├── cf-know

    ├── cf-monitord

    ├── cf-promises

    ├── cf-report

    ├── cf-runagent

    └── cf-serverd

     

    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 所使用的主要配置文件

    # /var/cfengine/bin/cf-agent --bootstrap   //测试是否可以运行

    ** CFEngine BOOTSTRAP probe initiated

     

       @@@     

       @@@     CFEngine

               

     @ @@@ @   CFEngine Core 3.2.4

     @ @@@ @   

     @ @@@ @   

     @    @   

       @@@     

       @ @     

       @ @     

       @ @     

     

    Copyright (C) CFEngine AS2008-2012

    See Licensing athttp://cfengine.com/3rdpartylicenses

     

     -> This host is: server.sxkj.com

     -> Operating System Type is linux

     -> Operating System Release is2.6.32-131.0.15.el6.i686

     -> Architecture = i686

     -> Internal soft-class is linux

     -> An existing policy was cached on thishost in /var/cfengine/inputs

     -> Assuming the policy distribution pointat: 10.1.1.187:/var/cfengine/masterfiles

     -> Attempting to initiate promisedautonomous services...

     

     ** This host recognizes itself as a CFEnginePolicy Hub, with policy distribution and knowledge base.

     -> The system is now converging. Fullinitialisation and self-analysis could take up to 30 minutes

     

    -> Bootstrapto 10.1.1.187 completed successfully

    # ps -e | grep cf   //进一步检测cfengine的相关进程是否开启

    12384 ?        00:00:00 cf-execd

    12387 ?        00:00:00 cf-serverd

    12398 ?        00:00:00 cf-monitord

    简单策略执行测试

    root用户测试

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

    # cat test.cf   //编辑一个策略文件

    bodycommon control

    {

    bundlesequence=> { "test" };

    }

    #

    bundleagent test

    {

    reports:                     #这个是承诺类型  Thisis a promise type

    cfengine_3::                  #这个是类环境(这个承诺只能在cfengine3系统实行)

    "Helloworld";                 #这是一个简单的承诺(它产生了一个写有"Hello world"的报告)

    }

    # /var/cfengine/bin/cf-promises  -f  /root/test.cf

    # /var/cfengine/bin/cf-agent  -f  /root/test.cf

    R: Hello world

    //这个‘R’:告诉你这是个来自于一个报告的输出

    //如果你立即重复相同的命令(/var/cfengine/bin/cf-agent -f  /root/test.cf),将什么也不会发生。但如果你等上1分钟,它将会再次的工作。cfengine认为重复指令的时间太短了而不需要再次保持承诺

    # /var/cfengine/bin/cf-agent -v -f /root/test.cf  | grep lock 

    //-v或者--verbose以详细的模式列出运行过程

    cf3> Making sure that locksare private...

    cf3>  XX Nothing promised here [lock.test.reports.-server.Hello_world_10] (0/1 minuteselapsed)

    cf3>  -> No lock purging scheduled

    #

    # cat /root/test1.cf

    bodycommon control

    {

             bundlesequence => {"edit_motd" };

    }

     

    bundleagent edit_motd

    {

    vars:  

          "motd" string =>"/etc/motd";

    files:  

    "$(motd)"

    create=> "true",

    edit_line=> addmessage;

    reports:

    cfengine::

             "Hello world!";

    }

     

    bundleedit_line addmessage

    {

    insert_lines:

             "This system is managed byCFEngine 3";

    }

    # /var/cfengine/bin/cf-agent -KI -f ~/test1.cf   //-K忽略锁状态,-I选项是有变化就显示

     -> Edited file /etc/motd

    R: Hello world!

    # cat /etc/motd

    This system is managed byCFEngine 3

    //如果文件中已经有编辑的信息存在了,就不再编辑了

    普通用户测试

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

    $ /usr/local/sbin/cf-key

    $ cp /usr/local/sbin/cf-* ~/.cfagent/bin

    $ cat test.cf

    body common control

    {

    bundlesequence=> { "test" };

    }

    #

    bundle agent test

    {

    reports:             #这个是承诺类型  This is a promise type

    cfengine_3::           #这个是类环境(这个承诺只能在cfengine3系统实行)

    "Helloworld";        #这是一个简单的承诺(它产生了一个写有"Hello world"的报告)

    }

    $ ~/.cfagent/bin/cf-promises  -f  ~/test.cf

    $ ~/.cfagent/bin/cf-agent  -f  ~/test.cf

    R: Hello world

    rpm安装

    这里以32位的rpm软件作为安装示例

    # rpm -ivh cfengine-community-3.3.0-1.i386.rpm

    Preparing...               ########################################### [100%]

      1:cfengine-community     warning:user build does not exist - using root

    warning: group build does notexist - using root

    warning: user build does notexist - using root

    warning: group build does notexist - using root

    ###########################################[100%]

    #

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

  • 相关阅读:
    poi隐藏列
    凯西太太的果园
    java中不可变对象深入理解
    excel添加空白行的快捷键
    如何在多个页面中,引入一个公共组件
    对后端返回的数据进行适配
    我与时间管理的故事
    在前端团队的那些日子(初见)
    我是这样做时间管理的(下)
    我是这样做时间管理的(上)
  • 原文地址:https://www.cnblogs.com/kumulinux/p/2808758.html
Copyright © 2020-2023  润新知