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

.pp文件中的Puppet引用环境名称?,puppet,r10k,Puppet,R10k,我有一个外部节点分类器,用于管理puppet fleet中每个设备的环境 当设备签入时,我正在更新它的配置文件,以便它知道它所处的环境: ini_setting { 'set local enviornment': ensure => present, path => '/etc/puppetlabs/puppet/puppet.conf', section => 'agent', setting => 'environment', value

我有一个外部节点分类器,用于管理puppet fleet中每个设备的环境

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

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,
}
ini_setting { 'set local enviornment':
  ...
  value   => $environment_name,
}
当设备签入时,我正在更新它的配置文件,以便它知道它所处的环境:

ini_setting { 'set local enviornment':
  ensure  => present,
  path    => '/etc/puppetlabs/puppet/puppet.conf',
  section => 'agent',
  setting => 'environment',
  value   => 'environment_name',
}
你知道你不需要为了木偶而这么做,对吧?如果您(正确地;请参见下文)使用ENC来控制节点的环境,那么您就可以不用在本地配置节点来了解自己的环境

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

ini_setting { 'set local enviornment':
  ...
  value   => $environment_name,
}
ini_setting { 'set local enviornment':
  ...
  value   => $environment_name,
}
ENC将节点的环境指定给Puppet的正确方法是使用该节点。这是ENC直接将节点放入指定环境的方式。但是,与ENC发出的任何其他顶级参数一样,您可以将其值作为顶级范围变量引用。因此,如果您希望更新节点的Puppet配置,以明确指定(事后)ENC分配给节点的环境,则可以使用该环境,正如您所建议的:

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

我知道它仍然可以在没有本地设置的情况下工作,但每次它都会首先尝试使用本地环境。我认为额外的消息意味着它会稍微减慢进程。@PhilipKirkbride,如果节点指定的环境与ENC指定的环境不同,我认为不会有任何特别的减慢。但是如果您想删除该消息,然后,我认为您可以通过在节点的
puppet.conf
文件中避免任何显式的
环境设置来做到这一点。很高兴知道,这样我就不会浪费时间在每次签入时运行代码块了。