2016-08-13 18 views
2

使用的事實,我想用清單裏面機器的IP地址,但木偶與失敗:在puppetlabs的iptables模塊

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地址嗎?

回答

2

您在字符串文字中放入了一個變量'',因此事實變量$::ipaddress不會內插或正確解析。它的字面解釋爲$::ipaddress。你應該將其更改爲:

firewall { '004 accept ssh': 
    proto => 'tcp', 
    destination => $::ipaddress, 
    dport => '22', 
    action => 'accept', 
} 

您還可以使用""插值,但沒有真正的理由這樣做的。

firewall { '004 accept ssh': 
    proto => 'tcp', 
    destination => $facts['ipaddress'], 
    dport => '22', 
    action => 'accept', 
} 

您也可以直接指定它:

雖然你做了正確的事情,並建立了事實作爲向後兼容的全局變量,你也可以,如果你使用的是Facter >= 3做面向未來它網絡哈希的事實,但這可能是矯枉過正。

+0

非常感謝! – jonasv