Puppet 木偶操作员

Puppet 木偶操作员,puppet,Puppet,我正在Puppet 3.7中编写一个条件语句,测试主机名是否位于已定义的主机名数组中。如果为true,则该类继续运行,如果不是,则它将以 失效函数 if $::hostname in $approved_hosts != str2bool("true") { fail("This module is for approved reposync hosts only") 其中$approved_hosts是主机名数组。此方法不起作用,但如果我将$approved_hosts更改为['host

我正在Puppet 3.7中编写一个条件语句,测试主机名是否位于已定义的主机名数组中。如果为true,则该类继续运行,如果不是,则它将以 失效函数

if $::hostname in $approved_hosts != str2bool("true") {
  fail("This module is for approved reposync hosts only")
其中$approved_hosts是主机名数组。此方法不起作用,但如果我将$approved_hosts更改为['hostname1','hostname2'],它确实起作用:

if $::hostname in ['hostname1', 'hostname2'] != str2bool("true") {
  fail("This module is for approved reposync hosts only")
有人能解释为什么当我将主机名数组转换为变量时,条件失败,但在其他情况下有效吗


谢谢:

调整代码失败通知,在test.pp文件中进行了测试,运行正常

  $approved_hosts = ['hostname1', 'hostname2']
  if $::hostname in $approved_hosts != str2bool("true")
   { notify {"This module is for approved reposync hosts only":} }

这意味着您的代码在数组定义时没有问题,它应该是其他东西。

为什么要执行str2booltrue舞蹈?为什么不只是条件{…}呢?这不是必需的,如果in运算符的左边的值与右边的值相同,那么in运算符应该返回booleon true。我刚才使用的st2bool函数是stdlib,更像是一个santy检查。从那以后我就把它去掉了。谢谢:谢谢。这确实有效,我已经有几天没有测试过了,但当$approved_hosts的值在不同的文件中定义时,问题似乎出现了。params.pp Puppet在查找引用时没有问题,Geppetto显示它已得到正确解决。只有一个运行时问题我还没有花时间调试。谢谢: