为了获得对应于IP地址/网络掩码的值“24”,我有这段代码:
- set_fact:
ip: "{{ ansible_default_ipv4.address }}/{{ansible_default_ipv4.netmask }}"
- set_fact:
mask_cidr: "{{ ip | ipaddr('prefix') }}"
根据ansible_default_ipv4.address
或172.16.1.67
模块,ansible_default_ipv4.netmask
= 255.255.255.0
和gather_facts
是setup
。
我尝试了不同的东西来使这段代码“更聪明”所以我只需要设置1个事实而不是2个,但我的过滤能力并不强。
如何将这两个事实转化为更聪明的事实,同时做这两件事的任何想法?
最简单,最干净的方法是通过辅助变量:
- set_fact:
mask_cidr: "{{ ip | ipaddr('prefix') }}"
vars:
ip: "{{ ansible_default_ipv4.address }}/{{ansible_default_ipv4.netmask }}"
如果你坚持写一个模板:
- sef_fact:
ip: "{{ (ansible_default_ipv4.address + '/' + ansible_default_ipv4.netmask) | ipaddr('prefix') }}"
我正在使用这个:
mynetwork = {{ (ansible_default_ipv4.network + '/' + ansible_default_ipv4.netmask) | ipaddr('network/prefix') }}