如何在 Ansible 行动手册中验证服务器是否具有专用接口



如果服务器具有专用网络接口 10.x.x.x,则 Ansible-playbook 应该具有特定任务。

我想使用事实变量ansible_all_ipv4_addresses.它看起来像这样:

"ansible_all_ipv4_addresses": [
"10.1.2.3", 
"some.public.network.interface"
]

当我在条件中定义确切的 IP 地址时,它有效,即:

- name: foo
foo: bar
when: '"10.1.2.3" in ansible_all_ipv4_addresses'

但是当我尝试使用任何正则表达式时,它不起作用。我尝试了正则表达式,例如:

10.*
10.[0-9]{1,3}.[0-9]{1,3}.[0-9]{1,3}
10.[0-9]{1,3}.[0-9]{1,3}.[0-9]{1,3}

在每种情况下,我都会得到"skip_reason": "Conditional result was False"

如何编写正确的正则表达式,或者是否有任何其他方法可以确定服务器是否具有专用接口 10.x.x.x?

使用 ipaddr filter。

我猜你对公共/私人过滤器感兴趣。从文档中:

You can check if IP addresses or network ranges are 
accessible on a public Internet, or if they are in private 
networks:
# {{ test_list | ipaddr('public') }}
['192.24.2.1', '2001:db8:32c:faad::/64']
# {{ test_list | ipaddr('private') }}
['192.168.32.0/24', 'fe80::100/10']

相关内容

最新更新