包含动态返回列表 Ansible

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

我正在尝试将 ip 与端口匹配。 我收到的 var 是这样的,可以有几个源端口块:

vars:
    networks: 
      - source: 10.135.4.23/25
        ports:  
          - 80
          - 25

我需要循环每个网络块的每个端口,并在该循环内循环源(ip 范围),以将每个端口与每个 ip 匹配。

这是我试过的:

- name: Show network info
      set_fact:
        network_item: "{{ network_item|default([]) + [network | ansible.utils.nthhost(item)] }}"
      loop: "{{ query('sequence', 'start=0 end='+(network|ansible.utils.ipaddr('net')|ansible.utils.ipaddr('size')|string)) }}"

此块返回 ips 列表,但我没有端口,因此无法匹配。

所以,我尝试了这个任务:

- name: Show network info
      set_fact:
        network_item: "{{ network_item|default([]) + [{'source': item.source | ansible.utils.nthhost(item), 'ports': item.ports}] }}"
      with_subelements:
        -"{{ networks }}"
        -"{{ query('sequence', 'start=0 end='+(source|ansible.utils.ipaddr('net')|ansible.utils.ipaddr('size')|string)) }}"

为了创建一个名为 network_item 的 var 来存储 ips 和端口列表以在另一个任务中进行配对,但返回错误 Unrecognized type <> for ipaddr filter

此外,我尝试了这段代码,但将范围与每个端口相匹配。

- name: Loop over networks and ports
      debug:
        msg: "IP: {{ item.0 }} - Port: {{ item.1 }}"
      with_subelements:
        - "{{ networks }}"
        - ports

暂无解决方案。 我要实现的就像在最后一个代码块中一样,一种在 with_subelements 中添加循环的方法,其中循环来自第一个代码块,它获取范围并在每个循环中返回 ip。

这有可能用 Ansible 完成吗?

loops ansible ansible-2.x
最新问题
© www.soinside.com 2019 - 2024. All rights reserved.