我有外部节点分类器来管理我的木偶舰队中每个设备的环境。
当设备签入时,我会更新它的配置文件,以便它知道它所处的环境:
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,
}
答案 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,
}