如何在Ubuntu14.04上安装和使用CFEngine社区版

来自菜鸟教程
跳转至:导航、​搜索

介绍

如果您正在为您的 IT 基础架构寻找一个快速且高度可扩展的配置管理工具,您应该尝试一下 CFEngine。 尽管它提供的功能与 Puppet 和 Chef 等其他流行工具提供的功能非常相似,但 CFEngine 在内存和 CPU 利用率方面的占用空间要小得多,并且通常更快,因为它是用 C 编写的,因此可以运行本机在操作系统上。

在本教程中,您将学习如何在 Ubuntu 14.04 上安装和使用 CFEngine Community Edition 3.6.5。

先决条件

在开始之前,您应该可以访问:

第 1 步 — 添加 CFEngine 的包存储库

要使用 apt-get 安装最新版本的 CFEngine,您应该将 CFEngine 的软件包存储库添加到服务器的存储库列表中。 使用 add-apt-repository 命令执行此操作:

sudo add-apt-repository 'deb http://cfengine.com/pub/apt/packages stable main'

第 2 步 — 添加 CFEngine 的公钥

在您将 CFEngine 的公钥添加到 APT 的受信任密钥列表之前,您在上一步中添加的存储库无法使用。

使用 wget 下载 CFEngine 的公钥。

wget http://cfengine.com/pub/gpg.key -O /tmp/gpg.key

使用 apt-key 将其添加到可信密钥列表中。

sudo apt-key add /tmp/gpg.key

第 3 步 — 安装 CFEngine

您现在可以使用apt-get安装CFEngine社区版。

sudo apt-get update && sudo apt-get install cfengine-community

在继续之前,请验证安装:

cf-agent --version

您应该看到以下输出:

cf-agent 的输出

CFEngine Core 3.6.5

第 4 步 — 启动策略中心

由于我们在本教程中使用单个 Ubuntu 服务器,因此我们将把它用作策略中心和客户端。 要启动 CFEngine 的策略中心,您必须使用服务器的 IP 地址引导它。

sudo cf-agent --bootstrap your_server_ip

一旦此命令成功完成,您将完全配置 CFEngine 并准备好在您的服务器上使用。

注意: 如果您想使用 Ubuntu 服务器管理多台机器,您必须在每台机器上重复步骤 1、2 和 3。 但是,在第 4 步中,要将机器配置为仅客户端,您应该使用当前 Ubuntu 服务器的 IP 地址(即策略中心的 IP 地址)引导它们。


第 5 步 — 创建您的第一个策略

要使用 CFEngine 自动执行系统管理任务,您应该为其创建一个策略文件。 策略文件是用 CFEngine 自己的 DSL(域特定语言)编写的。 该语言的学习曲线相当陡峭,但使用它执行基本任务很容易。

让我们从创建一个简单的“Hello World”策略开始。 使用 nano 或您喜欢的文本编辑器在 /tmp 目录中创建一个名为 myPolicy.cf 的新文件:

nano /tmp/myPolicy.cf

您想使用 CFEngine 执行的命令应该组合在一个 bundle 中。 捆绑包可以是不同的类型。 现在,您将创建一个 cf-agent 可以玩的捆绑包。 要将消息打印到控制台,应使用 reports 承诺。 因此,将以下代码添加到文件中:

myPolicy.cf

bundle agent SayHello {
    reports:
        "Hello!";
}

保存文件并退出。

您现在可以使用 cf-agent 命令运行您的策略。

sudo cf-agent -b SayHello /tmp/myPolicy.cf

您应该看到以下输出:

cf-agent 的输出

R: Hello!

第 6 步 — 将策略添加到策略服务器

在上一步中,您使用 cf-agent 命令手动运行了策略。 要自动运行策略——更重要的是,在多台机器上运行——您应该将它添加到策略服务器。 默认情况下,添加到服务器的策略每 5 分钟由 cf-agent 执行一次。

现在让我们编写一个稍微高级一点的策略,在 /tmp 目录中创建一个文件。

使用 nano 或您喜欢的文本编辑器创建一个名为 createFilePolicy.cf 的新文件:

nano /tmp/createFilePolicy.cf

在此策略中,您将使用 files 承诺创建文件,并使用 reports 承诺显示一条消息,说明文件已创建。

以下策略在 /tmp 目录中创建一个名为 hello.txt 的空文件。 将以下代码添加到策略中:

createFilePolicy.cf

bundle agent CreateHelloFile {
   files:
      "/tmp/hello.txt"
        create => "true";

   reports:
      "File created";
}

保存文件并退出 nano

通过键入以下命令运行策略:

sudo cf-agent -b CreateHelloFile /tmp/createFilePolicy.cf

完成后,可以运行ls命令查看/tmp中已经创建了hello.txt

ls /tmp

现在我们知道我们的策略没有任何错误并且正在做它应该做的事情,让我们将它添加到服务器。

策略服务器从 /var/cfengine/masterfiles/ 目录提供其策略。 因此,将 createFilePolicy.cf 复制到 masterfiles

sudo cp /tmp/createFilePolicy.cf /var/cfengine/masterfiles/

接下来,为了让 CFEngine 了解您的策略文件和其中的包,应将对它们的引用添加到 CFEngine 的主策略文件 promises.cf 中。 使用 nano 编辑 promises.cf

sudo nano /var/cfengine/masterfiles/promises.cf

inputs 列表的末尾添加您的策略文件的名称。 更改后,列表应如下所示:

promises.cf 摘录

inputs => {

    ...

  # List of services here
  "services/file_change.cf",

  "createFilePolicy.cf",
};

确保不要省略行尾的逗号。

此外,您的策略文件中的捆绑包名称应在文件顶部的 bundlesequence 列表中提及。 添加 CreateHelloFile 作为 bundlesequence 的最后一项:

promises.cf 摘录

bundlesequence => {
    
     ...

     # Agent bundle
      cfe_internal_management,   # See cfe_internal/CFE_cfengine.cf
      service_catalogue,
      @(cfengine_enterprise_hub_ha.management_bundles),

      CreateHelloFile,

};

确保您也不要省略行尾的逗号。 保存文件并退出。

您的策略现已添加到策略服务器,并将每五分钟运行一次。 这意味着即使你删除了/tmp/hello.txt,CFEngine也会在五分钟后自动重新创建。

如果要删除策略,应先从 promises.cf 中删除捆绑包的名称和策略文件的名称,然后将策略文件移出 masterfiles 目录。

结论

在本教程中,您学习了如何使用 CFEngine 的软件包存储库在 Ubuntu 14.04 服务器上安装最新版本的 CFEngine 社区版。 您还学习了如何手动和自动创建和运行简单的策略。 您现在可以使用 CFEngine 来管理您的服务器的配置。

更多关于 DSL 的信息,请参考【X42X】CFEngine 3.6 手册【X65X】。