测试木偶中未定义的事实

时间:2018-04-25 07:06:00

标签: puppet

用木偶5.3.3。在我当地的环境中。

$ facts [' ec2_metadata'] [' instance-id'] 不会退出。

我试过这个......

$instance_id = pick($facts['ec2_metadata']['instance-id'], $facts['ipaddress'])

这就是......

  if defined($facts['ec2_metadata']['instance-id']) {
    $instance_id = $facts['ec2_metadata']['instance-id']
  } else {
    $instance_id = $facts['ipaddress']
  }

这就是......

  if getvar($facts['ec2_metadata']['instance-id']) {

    $instance_id = $facts['ec2_metadata']['instance-id']
  } else {

    $instance_id = $facts['ipaddress']
  }

这就是......

  if $facts['ec2_metadata']['instance-id'] != undef {

    $instance_id = $facts['ec2_metadata']['instance-id']
  } else {

    $instance_id = $facts['ipaddress']
  }

正如所料,我总是得到......

==> default: Error: Evaluation Error: Operator '[]' is not applicable to an Undef Value. at ...

有什么想法吗?

感谢。

更新

即使这样也会启动错误。

notify{$facts['ec2_metadata']['instance-id']:}

那么,不可能召唤一个未解决的事实?

1 个答案:

答案 0 :(得分:1)

不确定。您可以使用stdlib函数has_key,例如

include stdlib
if has_key($facts['ec2_metadata'], 'instance-id') {
  notice("All OK")
}

文档为here