为什么我的 puppet 变量没有通过 Vagrant 的 puppet.facter 选项进行赋值?

为什么我的 puppet 变量没有通过 Vagrant 的 puppet.facter 选项进行赋值?

鉴于我的 Vagrantfile 中配置如下:

puppet.facter = {
  'variableOne' => 'one',
  'variableTwo' => 'two'
}

...清单中的内容如下:

notify{ "Got here with ${variableOne} and ${variableTwo}":}

什么时候我运行vagrant up(或者vagrant provision如果它已经启动)我在输出中看到以下行:

==> default: Notice: Got here with and

什么时候 我添加--debug到 vagrant 命令中,我也在输出中看到这一点:

==> default: Running Puppet with default.pp...
DEBUG ssh: Re-using SSH connection.
 INFO ssh: Execute: FACTER_variableOne='one' FACTER_variableTwo='two' puppet apply --verbose --debug --manifestdir /tmp/vagrant-puppet-3/manifests --detailed-exitcodes /tmp/vagrant-puppet-3/manifests/default.pp (sudo=true)

为什么变量没有在清单中填充?

要重现的示例 repo:https://github.com/ericsmalling/vagrantpuppet

答案1

感谢我的同事@SebastianWeigand,我发现变量名中使用驼峰式大小写导致了这个问题。将两边都改为“variableone”和“variabletwo”就解决了这个问题。

答案2

也许您的通知位于命名空间内。您可以尝试通过以下方式访问顶级范围内的 fact 变量:

notify{ "Got here with ${::variableOne} and ${::variableTwo}":}

相关内容