在部署期间需要设置ufw防火墙规则:启用对来自库存的主机组servers
的访问。目标主机是anazon ec2实例,但可能放置在其他提供者处。如何知道负责客户端的外部IP地址
我想:
- name: Ufw rules
ufw: rule=allow from_ip={{ hostvars[item]['ansible_eth0']['ipv4']['address'] }}
with_items: groups['servers']
notify:
- Restart ufw
文件hosts
:
..
[servers]
server1.site.com
server2.site.com
server3.site.com
..
但主机server1.site.com
,居然有host_vars:
"ansible_eth0": {
"active": true,
"device": "eth0",
"ipv4": {
"address": "10.x.x.x",
...
ip地址10.xxx,据我所知,是内部的亚马逊网络ip地址。
如果从外部EC2执行ping server1.site.com
,我得到:
64 bytes from server1.site.com (46.x.x.x): icmp_seq=1 ttl=56 time=49.5 ms
...
执行ansible server1.site.com -m setup -i hosts | grep 46.x.x.x
一无所获。
如何使用ansible从库存组中知道主机的外部ip地址? 或者如何使用库存中的主机名称设置ufw防火墙?