如果您正在为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 删除。