测试木偶中未定义的事实
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。
使用木偶 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。