【问题标题】:Puppet Servers of same type相同类型的 Puppet 服务器
【发布时间】:2014-02-01 03:05:07
【问题描述】:

当工作是服务器/代理模式时,我有一个关于 Puppet 的最佳实践问题。

我使用 manifest/sites.pp 配置创建了一个有效的解决方案,该配置使用代理的主机名标识配置。

例如:

node 'puppetagent.somedomain.com' {

        include my_module

        notify { 'agent configuration applied':
        }
}

这对于配置单个节点非常有效,但是如果我有多个应用程序服务器都具有不同的主机名但所有这些都需要相同的配置,该怎么办。

添加多个节点条目、逗号分隔的主机名列表或正则表达式感觉不是这样做的“正确”方法。

还有其他方法吗?你能定义节点“类型”吗?社区认为这方面的最佳做法是什么?

非常感谢

【问题讨论】:

    标签: puppet sysadmin


    【解决方案1】:

    如果所有服务器都具有相同的配置、继承或层次结构,层次结构是实现这一点的最简单方法。

    一旦您需要维护一组更大的系统,其中某些节点具有诸如“网络服务器”或“数据库服务器”之类的类型,那么配置就会出现差异,并且单一继承模型并不完全足够。

    您可以在这些地方使用合成。更多详情请访问this article。

    【讨论】:

      【解决方案2】:

      正则表达式可能没那么糟糕,但我想目前的趋势是使用hiera_include。

      你可以这样做:

      $roles = { 'webserver' => [ 'server1', 'server2', 'server3' ]
               , 'smtp'      => [ 'gw1', 'gw2' ]
               }
      node default {
          $roles . filter |$k,$v| { $hostname in $v }
                 . each |$k,$v| { hiera_include($k) }
      }
      

      【讨论】:

        【解决方案3】:

        我建议在这里查看“角色和配置文件”的概念:http://www.craigdunn.org/2012/05/239/

        您可以拥有多个节点,所有这些节点都包含相同的配置,并且“配置文件”包含一个或多个“角色”。

        至于定义具有相同配置的多个节点或包含“角色”的“配置文件”,我建议使用hiera_include,就像提到的@bartavelle 一样。除了使用通用环境变量来识别节点而不是使用正则表达式。

        【讨论】:

        • 链接很好,但你的解释倒过来了。在“角色和配置文件”范例中,每个角色都包含一个或多个配置文件。每个节点只分配一个角色。
        猜你喜欢
        • 1970-01-01
        • 2023-03-03
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-04-06
        • 2012-01-25
        • 2019-01-18
        相关资源
        最近更新 更多