来自 .pp 文件的 Puppet 参考环境名称?

Puppet reference enviornment name from .pp file?

我有一个外部节点分类器来管理我的人偶舰队中每个设备的环境。

当设备签入时,我正在更新它的配置文件,以便它知道它所处的环境:

ini_setting { 'set local enviornment':
  ensure  => present,
  path    => '/etc/puppetlabs/puppet/puppet.conf',
  section => 'agent',
  setting => 'environment',
  value   => 'environment_name',
}

我目前有每个 r10k 分支硬编码名称。

相反,我希望能够在所有环境中使用相同的代码块,例如:

ini_setting { 'set local enviornment':
  ...
  value   => $environment_name,
}

When a device checks-in I'm updating it's configuration file so it knows what environment it's in:

知道你不需要为了 Puppet 而这样做,对吧?如果您(正确地;见下文)使用 ENC 来控制节点的环境,那么 that overrides anything the nodes self-report,这样您就可以在没有本地配置节点的情况下完全了解它们自己的环境。

Instead I'd like to be able to use the same code block on all environments, something like:

ini_setting { 'set local enviornment':
  ...
  value   => $environment_name,
}

ENC 为 Puppet 指定节点环境的正确方法是 setting the environment key in its output 该节点。 ENC就是这样直接把节点放到指定的环境中的。然而,与 ENC 发出的任何其他顶级参数一样,您可以将其值引用为顶级范围变量。因此,如果您想更新节点的 Puppet 配置以明确指定(事后)ENC 分配给节点的环境,那么您可以使用它,就像您建议的那样:

ini_setting { 'set local enviornment':
  ...
  value   => $::environment,
}