在puppetlabs iptables模块中使用事实

时间:2016-08-13 12:29:49

标签: puppet

我想在清单中使用机器IP地址,但是木偶失败了:

  

错误:无法应用目录:参数目标失败   防火墙[004 accept ssh]:host_to_ip因$ {address}而异常,异常   在/ etc / puppetlabs /

没有$ {address}的地址
firewall { '004 accept ssh':
    proto => 'tcp',
    destination => '$::ipaddress',
    dport  => '22',
    action => 'accept',
  }

如何在此自动获取IP地址?

1 个答案:

答案 0 :(得分:2)

您将变量放在字符串文字''中,因此事实变量$::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',
}

您也可以直接在事实网络哈希中指定它,但这可能有点过分。