在我的站点清单中引用来自 Puppet 仪表板的组/类

在我的站点清单中引用来自 Puppet 仪表板的组/类

我正在使用 Puppet Dashboard 作为我的 ENC,但我不确定如何引用或使用来自的类和组分类/etc/puppet/manifests/site.pp

我在仪表板中定义了两个组:CentOS6SLES11。如果我想在组中包含特定的模块列表CentOS6,并在组中包含特定的模块列表,我的 site.pp 应该是什么样子SLES11

我正在尝试做这样的事情:

# /etc/puppet/manifests/site.pp

node basenode {
  include hosts
  include ssh::server
  include ssh::client
  include authentication
  include sudo
  include syslog
  include mail
}

node 'CentOS6' inherits basenode {
  include profile
}

node 'SLES11' inherits basenode {
  include usrmounts
}

我的模块中有特定于操作系统的案例语句,但有些模块仅适用于某个发行版。所以我想我有两个问题:

  1. 这是以特定于操作系统的方式应用模块/资源的最佳方法吗?还是上述内容让您想吐?
  2. 无论 #1 是什么,我仍然很好奇如何在清单中引用仪表板中的类、组和节点。我已阅读外部节点doc,但我没有看到它们与清单如何对应。

谢谢大家。

答案1

您在使用外部节点分类器方面走在正确的道路上。虽然有点难以理解,但一旦您让它工作起来,您就永远不会后悔,我强烈建议您这样做。当我遇到问题时,我去了 Puppet IRC 房间,他们帮助我让它工作起来。

  1. 根据操作系统应用不同的模块是可以的。我使用 BSD 和 RHEL 运行 300 多个节点环境,我们做到了。我们没有将操作系统作为节点,而是将其作为自己的类,因为。因此,我们让 ENC 传回类似以下内容的内容,而不是“节点操作系统继承基节点”:

    node web-prod-007 {
      $node_environment="production"
      include web_server_class # this then inherits basenode
      include centos6::server # 
      include logging::rsyslog 
    }
    

    ...ETC

如何做取决于你希望继承如何工作,如果你想根据操作系统修改 basenode 中的内容,那么让 OS 继承 basenode 是正确的方法。

TLDR,你所做的是正确的,并且研​​究一下 ENC,因为它们让生活变得更轻松。

编辑:2.我不使用仪表板,所以我不知道。

答案2

好的,我明白这是怎么回事了。Puppet Dashboard 会替换site.pp,如果你将仪表板设置为你的外部节点分类器 (ENC)。嗯,这并不完全正确,因为您可以同时使用两者:

ENC 可以与 site.pp 中的标准节点定义共存,并且每个源中声明的类都可以有效合并。

据我了解,仪表板课程= 您的 puppet 模块的名称。您可以创建群组将类组合在一起以应用于一组节点。我已经为所有 CentOS 6 服务器设置了一个 CentOS6 组,根据我原始问题中的旧 site.pp,它具有所有课程(模块)我希望我的 CentOS 6 服务器已在其目录中应用。将节点和类添加到组都可以通过仪表板完成。

另一个例子:

site.pp

node default {
  include iptables
  include selinux 
  include dns 
  include test
}

将 site.pp 转换为 Puppet Dashboard(屏幕截图):

Puppet 仪表板

相关内容