手动更改和配置不需要手动操作。他们甚至不一起喝茶。
在工作中,我们使用 puppet 来管理所有架构,并且由于性能瓶颈、攻击等,我们需要快速手动进行更改。
我们要做的是首先确保 puppet 能够设置架构的每个部分,准备好交付,而无需任何特定的调整。
然后当我们需要进行手动更改时,如果您很着急,只要您不弄乱由 puppet 管理的文件就没有风险,如果它是 puppet 管理的文件,我们需要更改什么,那么我们只需停止 puppet 代理并做任何事情我们需要。
匆忙结束后,我们进行如下操作:
这些更改应该应用于具有相同症状的所有服务器?
如果是这样,那么您可以开发 puppet 调用的“事实”,它是每次运行时在代理上运行的代码,并将结果保存在所有 puppet 模块中可用的变量中,例如,如果您更改了 ip conntrack max 值,因为防火墙无法处理所有连接,您可以轻松地(十行代码)在 puppet 中每次运行一个具有当前 conntrack 计数值的变量,因此告诉 puppet 设置与当前使用情况相关的最大值。然后所有其他服务器都将受益于此调整,并且您可能不再需要处理 conntrack 问题(只要您继续以短频率运行 puppet,这是默认设置)
在给定的紧急情况下,这些更改应该始终手动应用吗?
如果配置是由 puppet 管理的,想办法让配置包含其他文件,并告诉 puppet 忽略它。这是最简单的方法,但并不总是可行(例如 /etc/network/interfaces 不支持包含)。如果不可能,那么您将不得不在紧急情况下停止 puppet 代理,以便能够更改 puppet 文件,而不会有在下次 puppet 运行时被删除的风险。
是否仅针对此主机进行此更改,而其他主机都不需要它?
无论如何将其添加到人偶中!如果 $fqdn == my.very.specific.host 放一个甜食,然后放入您需要的任何东西。即使对于单个案例,将您所做的所有更改迁移到服务器总是有益的(并且耗时),如果由于某种原因您的服务器崩溃到不可恢复的状态(例如硬件),这将允许您完全恢复服务器设置问题)
总之:
对我来说,处理手工更改的技巧是在推理您决定如何进行更改以及在紧急情况结束后将该逻辑转移到傀儡上时付出了很多努力。如果您因为给定的软件插槽都已使用但服务器上仍有可用内存而感到有问题,那么处理流量峰值是合理的,允许运行更多插槽,然后花一些时间将该逻辑移入 puppet . 当然要非常小心,并且与您要测试它的架构上不同场景的数量一样耗时,但最终它非常非常有益。