介绍
如果您正在寻找一个快速,高度可扩展的配置管理工具为您的IT基础设施,您应该给CFEngine一试。 虽然它提供的功能与其他流行工具(如Puppet和Chef)提供的功能非常相似,但是CFEngine在内存和CPU利用率方面具有小得多的空间,并且通常更快,因为它用C编写,因此运行本机在操作系统上。
在本教程中,您将学习如何在Ubuntu 14.04上安装和使用CFEngine Community Edition 3.6.5。
先决条件
在开始之前,您应该有权访问:
- 运行Ubuntu 14.04的服务器
- 一个非root sudo的用户
第1步 - 添加CFEngine的软件包存储库
要使用安装最新版本的cfengine的apt-get
,你应该添加cfengine的封装库到您的服务器的存储库列表中。 使用add-apt-repository
命令这样做:
sudo add-apt-repository 'deb http://cfengine.com/pub/apt/packages stable main'
第2步 - 添加CFEngine的公共密钥
在您还将CFEngine的公钥添加到APT的信任密钥列表之前,您无法使用上一步中添加的存储库。
使用Cfengine的下载的公钥wget
。
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
您应该看到以下输出:
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
或你喜欢的文本编辑器创建一个名为新文件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!
第6步 - 向策略服务器添加策略
在前面的步骤中,您运行政策使用手动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
命令来查看hello.txt
已创建/tmp
。
ls /tmp
现在我们知道我们的策略没有任何错误,并正在做它应该做的,让我们将它添加到服务器。
策略服务器从供应的政策/var/cfengine/masterfiles/
目录下。 因此,复制createFilePolicy.cf
到masterfiles
:
sudo cp /tmp/createFilePolicy.cf /var/cfengine/masterfiles/
接下来,Cfengine的了解你的政策文件,它里面的捆绑,对它们的引用应加promises.cf
,cfengine的主要政策文件。 使用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来管理服务器的配置。
要了解更多关于DSL,请参阅Cfengine的3.6手册 。