使用 Ansible 从开始值和结束值生成 IP 地址列表
Generate list of IP addresses from start and end values with Ansible
有没有办法使用 Ansible (v2.9) 在两个任意 IP(不是来自 subnet/range)之间生成 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') }}"
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') }}"
有没有办法使用 Ansible (v2.9) 在两个任意 IP(不是来自 subnet/range)之间生成 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') }}"
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') }}"