Configuration 使用厨师/木偶并管理手工更改
我正在为一个事实上的高可用性服务运行一个复杂的服务器设置。到目前为止,我花了大约两天的时间来设置所有内容,因此我希望能够自动化资源调配 然而,我对(正在运行的)服务器做了很多手动更改。一个典型的例子是改变防火墙配置以应对各种黑客企图、数据包泛滥等。能够在活动节点上快速工作非常重要。此外,服务器还维护大量活动的TCP连接,并且不必为简单的配置更改而丢失这些连接Configuration 使用厨师/木偶并管理手工更改,configuration,chef-infra,puppet,provisioning,Configuration,Chef Infra,Puppet,Provisioning,我正在为一个事实上的高可用性服务运行一个复杂的服务器设置。到目前为止,我花了大约两天的时间来设置所有内容,因此我希望能够自动化资源调配 然而,我对(正在运行的)服务器做了很多手动更改。一个典型的例子是改变防火墙配置以应对各种黑客企图、数据包泛滥等。能够在活动节点上快速工作非常重要。此外,服务器还维护大量活动的TCP连接,并且不必为简单的配置更改而丢失这些连接 我不明白是厨师还是木偶设计来处理这个问题。一旦我更改了一些系统配置,我想将它存储在某个地方,并在配置下一个实例时使用它。我应该坚持使用这些
我不明白是厨师还是木偶设计来处理这个问题。一旦我更改了一些系统配置,我想将它存储在某个地方,并在配置下一个实例时使用它。我应该坚持使用这些工具中的一种,还是选择另一种?手工更改和资源调配不会牵手。他们甚至不一起喝茶 在工作中,我们使用puppet来管理所有Arquit体系结构,由于性能瓶颈、攻击等原因,我们需要立即进行手动更改 我们首先要做的是确保puppet能够设置Arquit体系结构的每一个部分,以便在不进行任何特定调优的情况下交付 然后,当我们需要手动更改时,如果您不在匆忙中处理puppet管理的文件,就没有风险,如果它是puppet管理的文件,我们需要更改,那么我们只需停止puppet代理并执行我们需要的任何操作 匆忙结束后,我们继续进行如下工作: 这些更改是否应应用于具有相同症状的所有服务器 如果是这样,那么您可以开发puppet称之为“事实”的代码,即它在每次运行时在代理上运行的代码,并将结果保存在所有puppet模块中可用的变量中,因此,例如,如果您因为防火墙无法处理所有连接而更改了ip conntrack max值,您可以轻松地(十行代码)在puppet中,每次运行一个具有当前conntrack计数值的变量,然后告诉puppet设置一个与当前使用相关的最大值。然后,所有其他服务器都将受益于此tunning,并且您可能不再需要处理conntrack问题(只要您继续以默认的短频率运行puppet) 在特定的紧急情况下,应始终手动应用这些更改 若配置是由puppet管理的,那个么找到一种方法使配置包含其他文件,并告诉puppet忽略它。这是最简单的方法,但并不总是可行的(例如/etc/网络/接口不支持include)。如果这是不可能的,那么您必须在紧急情况下停止puppet代理,以便能够更改puppet文件,而不会在下次puppet运行时被删除 这些更改是否仅适用于此主机,而其他主机将永远不需要它 把它添加到木偶中!如果$fqdn==my.very.specific.host,则放置一个sweet,并放入所需内容。即使是在单一情况下,将您所做的所有更改迁移到服务器上也总是有益的(而且非常耗时),因为如果您的服务器因某种原因崩溃到不可恢复状态(例如硬件问题),您可以完全恢复服务器设置 总之:
对我来说,处理手工修改的诀窍就是花大量精力去推理你是如何决定做修改的,在紧急情况结束后,将这种逻辑转移到木偶中。如果您觉得有问题,因为对于给定的软件插槽,所有插槽都已使用,但服务器上仍有可用的可用内存,因此为了应对流量峰值,允许运行更多插槽是合理的,那么请花一些时间将该逻辑移到puppet中。当然,要非常小心,而且要花费大量的时间来测试您的体系结构上的不同场景,但最终它非常,非常值得。我想完成Valor的优秀答案 puppet是执行配置的工具。所以你必须这样想:
- 在我运行木偶的机器上
- 我问木偶客户
- 要确保当前计算机的配置
- 是在puppet配置中指定的
- 从puppet服务器或直接从一堆puppet文件中获取(更简单)
而且,木偶在有趣的层面上很难学习。我花了两周的时间才能够从头开始自动安装AWS服务器。我不后悔,但如果你必须说服老板给你分配时间,你可能想知道这个事实。厨师的情况也很类似另外,您可以将配置包含到/etc/network/interfaces:)(在中查找“源代码”)或将配置添加到/etc/network/if-(up | down).d/目录:)