测试木偶中未定义的事实

Test for undefined fact in 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']:}

那么,调用一个不存在的事实是不可能的?

当然可以。您将使用标准库函数 has_key,例如

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

文档是 here