【问题标题】:Generate list of IP addresses from start and end values with Ansible使用 Ansible 从开始值和结束值生成 IP 地址列表
【发布时间】:2021-01-15 19:03:11
【问题描述】:

有没有办法使用 Ansible (v2.9) 生成两个任意 IP(不是来自子网/范围)之间的 IP 地址列表?

我已经搜索过,ipaddr 过滤器看起来是一个不错的候选者,但从文档中我无法确定它是否支持这一点。

我正在寻找一种解决方案,可以让我获得类似的列表

[ '10.0.0.123', '10.0.0.124', ... , '10.0.1.23' ]

来自类似的任务

- name: generate IP list
  set_fact:
    ip_list: "{{ '10.0.0.123' | ipaddr_something('10.0.1.23') }}"

【问题讨论】:

标签: ansible ip-address


【解决方案1】:

Create a filter plugin。例如

shell> cat filter_plugins/netaddr.py
import netaddr

def netaddr_iter_iprange(ip_start, ip_end):
    return [str(ip) for ip in netaddr.iter_iprange(ip_start, ip_end)]

class FilterModule(object):
        ''' Ansible filters. Interface to netaddr methods.
            https://pypi.org/project/netaddr/
        '''

        def filters(self):
            return {
                'netaddr_iter_iprange' : netaddr_iter_iprange,
                }

然后,下面的任务将创建列表

    - set_fact:
        ip_list: "{{ '10.0.0.123'|netaddr_iter_iprange('10.0.1.23') }}"

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-12-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多