如果您正在为IT基础架构寻找快速且高度可扩展的配置管理工具,那么您应该尝试使用CFEngine。虽然它提供的功能与其他流行工具(如Puppet和Chef)提供的功能非常相似,但CFEngine在内存和CPU利用率方面的占用空间要小得多,并且通常更快,因为它是用C语言编写的,因此在操作系统上的运行时原生的。
在本教程中,您将学习如何在Ubuntu 14.04上安装和使用CFEngine Community Edition 3.6.5。
在开始之前,您应该有权访问:
要使用 apt-get来安装最新版本的CFEngine,您应该将CFEngine的软件包存储库添加到服务器的存储库列表中。使用add-apt-repository命令执行此操作:
sudo add-apt-repository 'deb http://cfengine.com/pub/apt/packages stable main'在您还将CFEngine的公钥添加到APT的可信密钥列表之前,无法使用您在上一步中添加的存储库。
使用wget来下载CFEngine的公钥。
wget http://cfengine.com/pub/gpg.key -O /tmp/gpg.key使用apt-key来将其添加到可信任的密钥列表。
sudo apt-key add /tmp/gpg.key您现在可以使用apt-get来安装CFEngine Community Edition。
sudo apt-get update && sudo apt-get install cfengine-community在继续之前,请验证安装:
cf-agent --version您应该看到以下输出:
CFEngine Core 3.6.5由于我们在本教程中使用单个Ubuntu服务器,因此我们将其用作策略中心和客户端。要启动CFEngine的策略中心,必须使用服务器的IP地址进行引导。
sudo cf-agent --bootstrap your_server_ip一旦此命令成功完成,您将完全配置CFEngine并准备在您的服务器上使用。
注意:如果要使用Ubuntu服务器管理多台计算机,则必须在每台计算机上重复步骤1,2和3。但是,在步骤4中,要将计算机配置为仅客户端,您应该使用当前Ubuntu服务器的IP地址(即策略集线器的IP地址)来引导它们。
要使用CFEngine自动执行系统管理任务,您应该为其创建策略文件。策略文件使用CFEngine自己的DSL(域特定语言)编写。该语言具有相当陡峭的学习曲线,但使用它执行基本任务很容易。
让我们首先创建一个简单的“Hello World”策略。使用nano或者你喜欢的文本编辑器创建一个名为myPolicy.cf的新文件并存储在/tmp目录中:
nano /tmp/myPolicy.cf你想使用Cfengine来执行的命令应在被组合在一起成为一个捆绑包。捆绑包可以是不同类型的。现在,您将创建一个可以使cf-agent充满乐趣的捆绑包。要将消息打印到控制台,应使用reports承诺。因此,将以下代码添加到文件中:
bundle agent SayHello {
reports:
"Hello!";
}保存文件并退出。
您现在可以使用该cf-agent命令运行策略。
sudo cf-agent -b SayHello /tmp/myPolicy.cf您应该看到以下输出:
R: Hello!在上一步中,您使用该cf-agent命令手动运行策略。如果要自动运行策略 - 更重要的是,要在在多台计算机上自动运行 - 您应该将其添加到策略服务器。默认情况下,添加到服务器的策略每5分钟由cf-agent执行一次。
现在让我们编写一个稍微更高级的策略,在/tmp目录中创建一个文件。
使用nano或您喜欢的文本编辑器创建一个名为createFilePolicy.cf的新文件:
nano /tmp/createFilePolicy.cf在此策略中,您将使用files来创建文件,并且reports会显示一条消息,声明该文件已创建。
以下策略将创建一个名为hello.txt的/tmp的空文件目录。将以下代码添加到策略:
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列表末尾添加策略文件的名称。更改后,列表应如下所示:
inputs => {
...
# List of services here
"services/file_change.cf",
"createFilePolicy.cf",
};确保不要在行尾省略逗号。
此外,应在文件顶部的bundlesequence列表中提及策略文件中的包的名称。添加CreateHelloFile作为bundlesequence最后一项:
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 Community Edition。您还学习了如何手动和自动创建和运行简单策略。您现在可以使用CFEngine来管理服务器的配置。
更多Ubuntu教程请前往腾讯云+社区学习更多知识。
参考文献:《How to Install and Use CFEngine Community Edition on Ubuntu 14.04》
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。