因此,测试清单代码的第一部分工作并使用“解析器验证”成功验证:
$display = @("END")
Family ${facts['os']['name']}
Name ${facts['os']['family']}
Family ${facts['os']['name']}
Version ${facts['os']['release']['full']}
END
notify { $display : }
但是,清单代码的下一部分由于以下错误而失败:
Error: Could not parse for environment production: Syntax error at '['
(file: /home/vagrant/puppet/facts.pp, line: 4, column: 21)
此清单未通过上述错误验证:
$display = @("END")
Family ${facts['os']['name']}
Name ${facts['os']['family']}
Family ${facts['os']['family']}
Version ${facts['os']['release']['full']}
END
notify { $display : }
据我所知,由于这都是变量,所以只要事实的语法正确,就不会有问题。 “ Family”,“ Version”,“ Name”字符串均不起作用。我已经尝试了这些行的任意数量的不同组合,并看到了看起来仅是不确定性行为。在这种情况下,我无法弄清为什么有时验证而不是为什么。
我真的很困惑这里使用的是什么奥秘验证逻辑。
另一个示例(此示例有效且有效),唯一的更改是更改了要测试的每行开始,事实部分并未更改。
$display = @("END")
Test ${facts['os']['name']}
Test ${facts['os']['family']}
Test ${facts['os']['family']}
Test ${facts['os']['release']['full']}
END
notify { $display : }
如果这很重要,它将在VirtualBox虚拟机(Centos 7)中的Mac上运行。