【发布时间】:2016-05-27 20:57:36
【问题描述】:
我正在配置 rackspace/digitalocean/aws/google cloud 中的节点,需要在 ansible 的模板中访问 ec2 实例的外部 IP。
我想像这样在主机文件中定义我的机器:
taps_1 ansible_host=54.123.456.789 dc=aws-richmond provider=aws
然后在模板中(如 iptables 模板):
-A FWR -ieth0 -p tcp -s {{ hostvars[host].ansible_host }} --dport 80 -j ACCEPT
但该值不存在:/如果我使用ansible_fqdn 或ansible_default_ipv4 上提供的IP,我只会获得内部IP(例如172.31.50.181)
我们一直这样定义我们的基础设施:
54.123.456.789 name=taps_1 dc=aws-richmond provider=aws
并通过hostvars[host].inventory_name 访问,但我不想这样做。
想法?
【问题讨论】:
-
您使用的是静态库存文件而不是 the provided dynamic inventory scripts? Amazon 提供了一整套变量供使用。
-
我们在 aws/digitalocean/rackspace 中有东西 - 我们不想只使用 ec2 变量进行配置
-
您可以通过指定目录而不是文件来使用多个动态库存文件,并将组合并到一个角色中。从长远来看,这肯定是一个更具可扩展性的解决方案。
标签: amazon-web-services ansible infrastructure