我正在编写一本有趣的剧本,以测试ip地址是否为有效的ipv4地址。
我写了一本剧本来检查IP地址是否是有效的IP。但是对于测试,当我提供的IP地址为10.10.10时,仍将其匹配为有效的ipv4地址。
- name: IP validation example
hosts: 127.0.0.1
gather_facts: False
vars:
single_ipv4: 10.10.10
tasks:
- name: check ip
set_fact:
single_ipv4_val: "{{ single_ipv4 | ipv4 }}"
预期结果:确定:[127.0.0.1] => {“ ansible_facts”: {“ single_ipv4_val”:假},“更改”:假}
实际结果:确定:[127.0.0.1] => {“ ansible_facts”: {“ single_ipv4_val”:“ 10.10.10.0”},“更改”:false}
答案 0 :(得分:1)
据我所知,您遇到ipaddr
的“帮助”,因为您提供的内容几乎是一个IP地址,但是ipaddr
却处理它不仅可以探测IP地址,还可以探测子网和各种事物
因此,您需要进行更严格的测试,说输入的内容必须是"address" subcomponent等于自己的IP:
- debug:
msg: '{{ maybe_ip == (maybe_ip | ipv4("address")) }}'
vars:
maybe_ip: '10.10.10'
- debug:
msg: '{{ maybe_ip == (maybe_ip | ipv4("address")) }}'
vars:
maybe_ip: '10.10.10.1'