0

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

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

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

1 回答 1

1

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

知道你不需要为了偶人的缘故那样做,对吧?如果您(正确地;见下文)使用 ENC 来控制节点的环境,那么这会覆盖节点 self-report 的任何内容,因此您可以在不将节点本地配置为完全了解自己的环境的情况下进行操作。

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

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

ENC 为 Puppet 指定节点环境的正确方法是在其输出中为该节点设置密钥。environment这就是 ENC 直接将节点放入指定环境的方式。但是,与 ENC 发出的任何其他顶级参数一样,您可以将其值作为顶级范围变量引用。因此,如果您想更新节点的 Puppet 配置以显式指定(事后)ENC 分配给节点的环境,那么您可以使用它,就像您建议的那样:

ini_setting { 'set local enviornment':
  ...
  value   => $::environment,
}
于 2017-12-04T14:30:47.770 回答