我在这里查找CFEngine、Puppet、Chef、bcfg2、AutomateIt以及其他任何可能存在的配置管理系统之间的一些比较,并且很惊讶我在 Server Fault 上发现的很少。例如,我只知道上面的前三个链接——另外两个是我在相关的谷歌搜索中找到的。
所以,我对人们认为最好的或者他们喜欢的不感兴趣。我想知道以下内容:
我有 2-3 个节点集群用于我们的负载均衡器和各种 Web 应用程序。我必须首先在 QA 中进行更改,然后在暂存(在 2-3 个服务器上),然后在生产(在 2-3 个)服务器上进行更改。像厨师或木偶这样的配置管理工具在这里合适吗?还是矫枉过正?如果它是矫枉过正,是否有任何提示可以使这更容易。
有没有人有使用 Puppet 或 cfengine 之类的 Windows 服务器环境设置经验?有这样的事情吗?
我希望跟踪一段时间内的配置文件和文件安全更改。我还想存储配置信息,以便在 DR 情况下快速部署服务器和应用程序。
Tripwire 很不错,但只提供快照并且不会像源代码控制系统那样存储随时间的变化。
我听说过很多关于将 Cobbler 与 Puppet/Cfengine 一起使用以进行快速部署和配置的信息。
你能指点我一些教程或分享你如何做的经验吗?
也很想知道您用于快速配置和部署的任何其他系统。谢谢。
我想列出目录内容并在其他地方使用结果:
bundle agent test
{
commands:
"ls /tmp/test/";
reports:
ubuntu::
"print output here for example";
# or add it to a variable which is how I really want to use it.
}
Run Code Online (Sandbox Code Playgroud) 我正在尝试为我的配置管理系统在使用 Puppet 还是 CFEngine 之间做出决定。
性能将是一个关键因素,互联网上的研究表明,与 puppet 相比,CFEngine 使用更少的内存和 CPU 周期。但是,puppet 似乎更易于使用。
我需要管理多个 Web 服务器,以及只能定期连接到某些中央控制服务器的手持平板电脑和机器。都是Linux机器。
我可以为此使用 Puppet 或 CFEngine 吗?如果是这样,Puppet 是否仍然没有充分利用资源?
我想使用 Puppet 的另一个原因是它看起来更简单,但我发现的很多文章都提到了 CFEngine 2 - CFEngine 3 更容易配置吗?
我的服务器存在于没有外部网络连接的环境中(这是必需的),因此当我部署更新时,所有包、二进制文件、配置文件等都必须包含在交付的媒体中。当然,我想要某种配置管理,这样我就可以知道哪些已经安装,哪些尚未安装。
所以我想知道人们是否有使用过厨师、木偶或其他配置管理类型工具来处理此类环境的经验。最坏的情况是我将更新部署为 RPM。
编辑:
我的设置有 Linux 服务器和 Windows 服务器。
手动管理 50 台服务器,并查看了 linux 的不同 cms(cfengine、puppet、chef 等)它主要用于 CM 的配置文件。
是否有从现有服务器收集信息的 cms?所以我不必为每台服务器编写类、recipies 等,而是自动从我的服务器获取配置文件,以便我以后可以集中编辑它们?
我使用的 cfengine 安装已经有机地增长并变得非常复杂。一些节使用许多类,例如,class1&(class2|class3)&!class4|class5
是否有一些工具可以采用 cfengine 配置并简化它,类似于使用布尔代数简化逻辑电路?
如果没有,是否有任何工具可以分析 cfengine 配置?例如,类和对象可视化工具可能会有所帮助。
这个问题与如何在 cfengine3 中使用命令的输出非常相似,但我认为答案不适用于我的情况。
我想通过“git pull”更新git存储库,并根据是否会导致更改触发一些后续操作。
简化,如果通过某个主体有类似“匹配输出和设置类”的if_output_matches东西,我想使用这样的东西:
bundle agent updateRepo {
commands:
"/usr/bin/git pull"
contain => setuidgiddir_sh("$(globals.user)","$(globals.group)","$(target)"),
classes => if_output_matches("Already up-to-date.","no_update");
reports:
no_update::
"nothing updated";
}
body contain setuidgiddir_sh(owner,group,folder) {
exec_owner => "$(owner)";
exec_group => "$(group)";
useshell => "true";
chdir => "$(folder)";
Run Code Online (Sandbox Code Playgroud)
}
那么,是否可以使用一个可能很昂贵的命令的输出并以此为基础做出一些决定?
该execresult功能对我来说不是一个好的选择,因为 a) 拉动有时可能会变得昂贵(不推荐遵循 cfengine3 参考)和 b) 不允许指定用户、组、工作目录 - 这对我来说很重要。存储库位于用户空间中,不属于 root 用户。
既然 cfengine 客户端可以根据其“inputs”目录中的文件自主运行,为什么必须让策略服务器运行 cf-serverd?
其他一些文件分发机制(NFS,从源控制中提取,从哑文件服务器传输)也能正常工作吗?
除了提供文件之外,策略服务器还可以执行 Community Edition 的其他操作吗?
我想在大约 20 个 Linux 服务器上更改 root 密码。主要是 CentOS 和 Ubuntu。
所以我看过 Puppet、chef 和 cfengine,但我真的不知道他们是否可以做到这一点,或者他们是否会为完成任务而过度杀戮?
有没有人建议如何/etc/shadow在许多 Linux 服务器上编辑配置文件等?
cfengine ×12
puppet ×7
chef ×4
linux ×2
cms ×1
cobbler ×1
deployment ×1
monitoring ×1
windows ×1