如何解决使用 Ansible 从起始值和结束值生成 IP 地址列表
有没有办法使用 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') }}"
解决方法
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') }}"
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。