在 puppetlabs iptables 模块中使用事实
Using facts in puppetlabs iptables module
我想在清单中使用机器 ip 地址,但是 puppet 失败了:
Error: Failed to apply catalog: Parameter destination failed on
Firewall[004 accept ssh]: host_to_ip failed for ${address}, exception
no address for ${address} at /etc/puppetlabs/
firewall { '004 accept ssh':
proto => 'tcp',
destination => '$::ipaddress',
dport => '22',
action => 'accept',
}
这里如何自动获取IP地址?
您将变量放在字符串文字 ''
中,因此事实变量 $::ipaddress
将无法正确插入或解析。它按字面解释为 $::ipaddress
。您应该将其更改为:
firewall { '004 accept ssh':
proto => 'tcp',
destination => $::ipaddress,
dport => '22',
action => 'accept',
}
您也可以用 ""
对其进行插值,但没有真正的理由这样做。
尽管您做了正确的事情并将事实建立为向后兼容的全局变量,但如果您正在使用 Facter >= 3
,您也可以通过以下方式对其进行未来验证:
firewall { '004 accept ssh':
proto => 'tcp',
destination => $facts['ipaddress'],
dport => '22',
action => 'accept',
}
您也可以直接在 facts 网络哈希中指定它,但这可能有点矫枉过正。
我想在清单中使用机器 ip 地址,但是 puppet 失败了:
Error: Failed to apply catalog: Parameter destination failed on Firewall[004 accept ssh]: host_to_ip failed for ${address}, exception no address for ${address} at /etc/puppetlabs/
firewall { '004 accept ssh':
proto => 'tcp',
destination => '$::ipaddress',
dport => '22',
action => 'accept',
}
这里如何自动获取IP地址?
您将变量放在字符串文字 ''
中,因此事实变量 $::ipaddress
将无法正确插入或解析。它按字面解释为 $::ipaddress
。您应该将其更改为:
firewall { '004 accept ssh':
proto => 'tcp',
destination => $::ipaddress,
dport => '22',
action => 'accept',
}
您也可以用 ""
对其进行插值,但没有真正的理由这样做。
尽管您做了正确的事情并将事实建立为向后兼容的全局变量,但如果您正在使用 Facter >= 3
,您也可以通过以下方式对其进行未来验证:
firewall { '004 accept ssh':
proto => 'tcp',
destination => $facts['ipaddress'],
dport => '22',
action => 'accept',
}
您也可以直接在 facts 网络哈希中指定它,但这可能有点矫枉过正。