如何在Ubuntu14.04上安装和使用CFEngine社区版
介绍
如果您正在为您的 IT 基础架构寻找一个快速且高度可扩展的配置管理工具,您应该尝试一下 CFEngine。 尽管它提供的功能与 Puppet 和 Chef 等其他流行工具提供的功能非常相似,但 CFEngine 在内存和 CPU 利用率方面的占用空间要小得多,并且通常更快,因为它是用 C 编写的,因此可以运行本机在操作系统上。
在本教程中,您将学习如何在 Ubuntu 14.04 上安装和使用 CFEngine Community Edition 3.6.5。
先决条件
在开始之前,您应该可以访问:
- 运行 Ubuntu 14.04 的服务器
- 一个 非 root sudo 用户
第 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】。