【发布时间】:2017-10-30 14:58:29
【问题描述】:
在我的有效载荷中,我有一个变量,它实际上是一个字典列表,例如这个:
myvar:
- name: name1
ip_addresses:
- 10.10.10.10
- 11.11.11.11
nat_destination_addresses:
- host: 12.12.12.12
destination: 13.13.13.13
- host: 14.14.14.14
destination: 15.15.15.15
nat_source_address: 16.16.16.16
applications:
- protocol: tcp
port: 8302
- protocol: udp
port: 2000
- protocol: tcp
port: 2000-5600
- name: name2
ip_addresses:
- 17.17.17.17
- name: name3
ip_addresses:
- 18.18.18.18
- 19.19.19.19
myvar 中每个元素的所有值都是可选的,名称除外,这是必需的。
我正在尝试填充 IP 地址(ip_addresses、nat_destination_addresses 和 nat_source_address)和端口。端口的长度应为五个字符,开头为 0(2000 变为 02000 和 2000-5600 变为 02000-05600),IP 地址的每个小节应包含三个字符(18.18.18.18 变为 018.018.018.018 )。
我遇到的问题是我无法仅更改 myvar 的子部分。
我在这里阅读了其他问题,例如:
merging dictionaries in ansible
Using set_facts and with_items together in Ansible
但无济于事。无论我做什么,我都无法保留原始字典,如果我使用第二个 StackOverflow 链接中的 combine 过滤器,我最终会得到一个 ip_addresses 列表。
预期的结果是带有更新的 IP 地址和端口的原始 myvar 变量。
【问题讨论】:
标签: ansible