Ansible在CIDR中获取网络掩码

问题描述 投票:1回答:1

为了获得对应于IP地址/网络掩码的值“24”,我有这段代码:

- set_fact:
    ip: "{{ ansible_default_ipv4.address }}/{{ansible_default_ipv4.netmask }}"

- set_fact:
    mask_cidr: "{{ ip | ipaddr('prefix') }}"

根据ansible_default_ipv4.address172.16.1.67模块,ansible_default_ipv4.netmask = 255.255.255.0gather_factssetup

我尝试了不同的东西来使这段代码“更聪明”所以我只需要设置1个事实而不是2个,但我的过滤能力并不强。

如何将这两个事实转化为更聪明的事实,同时做这两件事的任何想法?

ansible jinja2
1个回答
3
投票

最简单,最干净的方法是通过辅助变量:

- 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') }}"

0
投票

我正在使用这个:

mynetwork = {{ (ansible_default_ipv4.network + '/' + ansible_default_ipv4.netmask) | ipaddr('network/prefix') }}
© www.soinside.com 2019 - 2024. All rights reserved.