像许多人一样(我希望),我正在通过将我的清单分成环境来为Puppet 4做准备.我打算有3个独立的环境:qa,staging,prod.在最初设置清单时,我已经为环境设置了一个自定义事实来指向特定环境(即创建了将环境设置为prod的/etc/facter/facts.d/environment).
当我使用打印出$environment变量的单个清单运行测试时,它会从我的自定义事实中获取值,但是当代理与Puppet Master进行对话时,它仍然使用默认环境“production”.
知道为什么会这样吗?是不是可以用作ENC?
$environment环境变量在技术上并不是事实 – 它是由代理从puppet.conf中设置的,而不是事实.您需要在代理程序的puppet.conf中编辑它而不是facts.d.
ENC可以设置节点的环境(覆盖代理选择的环境),但主机需要覆盖它,而不是代理.