Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/joomla/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ansible:如何修改目录列表_Ansible_Jinja2 - Fatal编程技术网

Ansible:如何修改目录列表

Ansible:如何修改目录列表,ansible,jinja2,Ansible,Jinja2,我想使用从IPAM获取的IP地址的新条目修改hostvars中列表中的DICT { "vm_guest_networks": [ { "device_type": "vmxnet3", "state": "present", "subnet": "10.91.1.0/24" }, { "device_type": "vmxnet3", "state": "present", "subnet": "

我想使用从IPAM获取的IP地址的新条目修改hostvars中列表中的DICT

{
  "vm_guest_networks": [
    {
      "device_type": "vmxnet3",
      "state": "present",
      "subnet": "10.91.1.0/24"
    },
    {
      "device_type": "vmxnet3",
      "state": "present",
      "subnet": "10.91.0.0/24"
    }
  ]
}
在一个循环中,我有子网来标识正确的dict和我想用ipv4\u地址键添加的IP地址,因此结果应该如下所示:

{
  "vm_guest_networks": [
    {
      "device_type": "vmxnet3",
      "state": "present",
      "subnet": "10.91.1.0/24",
      "ipv4_address": "10.91.1.216"
    },
    {
      "device_type": "vmxnet3",
      "state": "present",
      "subnet": "10.91.0.0/24",
      "ipv4_address": "10.91.0.21"
    }
  ]
}

当前WIP ansible代码位于

让我们假设IP列表可用。比如说

ip4: [10.91.1.216, 10.91.0.21]
    - set_fact:
        mydata: "{{ mydata|default([]) +
                    [item|combine({'ipv4_address': ip4[ansible_loop.index0]})] }}"
      loop: "{{ vm_guest_networks }}"
      loop_control:
        extended: yes

    - set_fact:
        vm_guest_networks: "{{ mydata }}"
    - debug:
        var: vm_guest_networks
让我们使用filter和来创建一个新列表,其中每个字典都将被更新。比如说

ip4: [10.91.1.216, 10.91.0.21]
    - set_fact:
        mydata: "{{ mydata|default([]) +
                    [item|combine({'ipv4_address': ip4[ansible_loop.index0]})] }}"
      loop: "{{ vm_guest_networks }}"
      loop_control:
        extended: yes

    - set_fact:
        vm_guest_networks: "{{ mydata }}"
    - debug:
        var: vm_guest_networks
给予


假设IP列表可用。比如说

ip4: [10.91.1.216, 10.91.0.21]
    - set_fact:
        mydata: "{{ mydata|default([]) +
                    [item|combine({'ipv4_address': ip4[ansible_loop.index0]})] }}"
      loop: "{{ vm_guest_networks }}"
      loop_control:
        extended: yes

    - set_fact:
        vm_guest_networks: "{{ mydata }}"
    - debug:
        var: vm_guest_networks
让我们使用filter和来创建一个新列表,其中每个字典都将被更新。比如说

ip4: [10.91.1.216, 10.91.0.21]
    - set_fact:
        mydata: "{{ mydata|default([]) +
                    [item|combine({'ipv4_address': ip4[ansible_loop.index0]})] }}"
      loop: "{{ vm_guest_networks }}"
      loop_control:
        extended: yes

    - set_fact:
        vm_guest_networks: "{{ mydata }}"
    - debug:
        var: vm_guest_networks
给予