来自.pp文件的Puppet引用环境名称?

时间:2017-12-01 16:59:10

标签: puppet r10k

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

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

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,
}

1 个答案:

答案 0 :(得分:1)

  

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

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

  

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

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,
}