使用Chef/Puppet进行管理并处理手动修改

5

我正在运行一个复杂的服务器设置,为事实上的高可用性服务提供支持。到目前为止,设置所有内容大约需要两天,因此我希望自动化这一过程。

然而,我对(正在运行的)服务器进行了很多手动更改。一个典型的例子是更改防火墙配置以应对各种黑客攻击、数据包洪水等。能够快速处理活动节点对我来说非常重要。此外,服务器维护着许多活动的TCP连接,失去这些连接对于简单的配置更改是不可接受的。

我不知道Chef或Puppet是否设计用于处理这个问题。一旦我更改了一些系统配置,我希望将其存储在某个地方,并在下一次实例被创建时使用它。我应该坚持使用其中一个工具还是选择其他工具?

2个回答

4
手动更改和配置不需要手工完成。他们甚至不一起喝茶。
在工作中,我们使用Puppet来管理所有架构,就像你一样,由于性能瓶颈、攻击等原因,我们需要手动进行快速更改。
我们的做法是首先确保Puppet能够设置架构的每个部分,以便随时进行交付而不需要进行任何特定调整。
然后,当我们需要手动更改时,如果时间紧迫且不会干扰Puppet管理的文件,则没有风险;如果要更改Puppet管理的文件,则只需停止Puppet代理并进行所需更改即可。
忙碌结束后,我们按以下方式操作:
这些更改适用于具有相同症状的所有服务器吗?
如果是的话,您可以开发Puppet称之为“facts”的内容,这是一种在每次运行代理时运行的代码,并将结果保存在所有Puppet模块中可用的变量中,因此,例如,如果您更改了IP连接跟踪最大值,因为防火墙无法处理所有连接,您可以轻松地(十行代码)在每次运行Puppet时获得当前的conntrack计数值,从而告诉Puppet设置与当前使用相关的最大值。然后,所有其他服务器都将受益于此调优,您很可能永远不必再处理conntrack问题(只要保持使用短频率运行Puppet,这是默认设置)。
这些更改应该始终在紧急情况下手动应用吗?
如果配置由Puppet管理,请找到一种方法将配置包含在其他文件中,并告诉Puppet忽略它。这是最简单的方法,但并非总是可行(例如,/etc/network/interfaces不支持包含)。如果不可能,则必须在紧急情况下停止Puppet代理,以便能够更改Puppet文件而不会被下次Puppet运行删除的风险。
这些更改仅适用于此主机,其他主机永远不需要它们吗?
无论如何都要将其添加到Puppet中!如果$ fqdn == my.very.specific.host,则放置一个sweet,并在其中放置所需内容。即使仅适用于单个情况,也始终有益(且耗时),因为这将允许您完全恢复服务器设置,如果由于某种原因您的服务器崩溃到不可恢复的状态(例如硬件问题)。
总之:
对我来说,处理手工更改的诀窍在于花费大量精力来推理您决定进行更改的方式,并在紧急情况结束后将该逻辑移入Puppet。当然要非常小心,就像您想要针对您的架构测试的不同情况的数量一样耗时,但最终它非常、非常有益。

2
相似的情况也出现在Chef中。另外,你可以将其包含在/etc/network/interfaces中:)(请查看http://manpages.ubuntu.com/manpages/oneiric/man5/interfaces.5.html中的“source”),或将配置文件添加到/etc/network/if-(up|down).d/目录中:) - Draco Ater

2
我希望能够补充Valor的优秀回答。 puppet是一种强制配置的工具。因此你必须这样考虑:
在我运行puppet的机器上...
我请求puppet客户端...
确保当前机器的配置...
与puppet配置中指定的内容相同...
它们取自于puppet服务器或直接从一堆puppet文件中获取(后者更容易)。
因此,回答你的一个问题,puppet不需要重启机器或服务。但是如果您使用puppet设置的配置文件更改需要重新启动相应的服务/守护进程/应用程序,则无法避免。在puppet中有一些方法可以告诉服务在配置更改时需要重新启动。当然,如果puppet发现没有任何更改,它将不会重新启动该服务。
Valor假设您以客户端/服务器方式使用puppet,例如puppet客户端每小时轮询puppet服务器以获取配置。但是也可以将puppet文件从一台机器移动到另一台机器,例如使用git,并手动启动puppet。这种方式比客户端/服务器技术要简单得多(认证很棘手),只有当您明确请求更改时才会强制执行配置更改,从而避免覆盖手工更改。
如果您管理大量机器,则这显然不是使用puppet的最佳方法,但可能是一个不错的开始或过渡。
此外,puppet非常难以学习到一个有趣的水平。我花了两个星期的时间才能够从头开始自动安装AWS服务器,但我并不后悔,但是如果您需要说服老板为您分配时间,您可能需要知道这个事实。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接