在 Ansible 剧本中使用嵌套清单列表
Using nested inventory lists in Ansible playbooks
因为我在 Ansible 的帮助下自动化我们的一些网络环境,所以我想开始使用嵌套的 inventory/variable 文件。这最重要的是保持一切整洁有序。但是到目前为止,我无法让它正常工作,我也不知道是什么问题。
库存如下:(虚拟内容)
interfaces:
- name: "..."
port: "..."
description: "..."
parameters:
- speed: "..."
duplex: "..."
- name: "..."
port: "..."
description: "..."
parameters:
- speed: "..."
duplex: "..."
如您所见,我有一个 "interface" 列表,其中包含一个 "parameters" 列表,我想在我的剧本中解决这两个问题。
剧本如下:
- name: Configuring network ports
"Some network module":
name: '{{ item.0.name }}'
port: '{{ item.0.port }}'
description: '{{ item.0.description }}'
speed: '{{ item.1.speed }}'
duplex: '{{ item.1.duplex }}'
state: present
delegate_to: localhost
with_subelements:
- "{{ interfaces }}"
- "{{ parameters }}
在这个过程中,我尝试了不同的清单和剧本语法,并摆弄了一下,试图让事情正常进行,但没有结果。
以下是我在 运行 剧本中收到的一些错误消息。
fatal: [**.**.**.**]: FAILED! => {"msg": "'parameters' is undefined"}
ERROR! could not find 'parameter' key in iterated item '{u'speed': u'...', u'duplex': u'...'}'
fatal: [**.**.**.**]: FAILED! => {"msg": "'list object' has no attribute 'parameter'"}
我做错了什么?
以下是无效的 YAML 语法:
interfaces:
- name: "..."
port: "..."
description: "..."
parameters:
- speed: "..."
duplex: "..."
description
不能同时是标量 和 映射。
你可以选择
interfaces:
- name: "..."
port: "..."
description: "..."
或
interfaces:
- name: "..."
port: "..."
description:
parameters:
- speed: "..."
duplex: "..."
但不能两者兼得。
因为我在 Ansible 的帮助下自动化我们的一些网络环境,所以我想开始使用嵌套的 inventory/variable 文件。这最重要的是保持一切整洁有序。但是到目前为止,我无法让它正常工作,我也不知道是什么问题。
库存如下:(虚拟内容)
interfaces:
- name: "..."
port: "..."
description: "..."
parameters:
- speed: "..."
duplex: "..."
- name: "..."
port: "..."
description: "..."
parameters:
- speed: "..."
duplex: "..."
如您所见,我有一个 "interface" 列表,其中包含一个 "parameters" 列表,我想在我的剧本中解决这两个问题。
剧本如下:
- name: Configuring network ports
"Some network module":
name: '{{ item.0.name }}'
port: '{{ item.0.port }}'
description: '{{ item.0.description }}'
speed: '{{ item.1.speed }}'
duplex: '{{ item.1.duplex }}'
state: present
delegate_to: localhost
with_subelements:
- "{{ interfaces }}"
- "{{ parameters }}
在这个过程中,我尝试了不同的清单和剧本语法,并摆弄了一下,试图让事情正常进行,但没有结果。
以下是我在 运行 剧本中收到的一些错误消息。
fatal: [**.**.**.**]: FAILED! => {"msg": "'parameters' is undefined"}
ERROR! could not find 'parameter' key in iterated item '{u'speed': u'...', u'duplex': u'...'}'
fatal: [**.**.**.**]: FAILED! => {"msg": "'list object' has no attribute 'parameter'"}
我做错了什么?
以下是无效的 YAML 语法:
interfaces:
- name: "..."
port: "..."
description: "..."
parameters:
- speed: "..."
duplex: "..."
description
不能同时是标量 和 映射。
你可以选择
interfaces:
- name: "..."
port: "..."
description: "..."
或
interfaces:
- name: "..."
port: "..."
description:
parameters:
- speed: "..."
duplex: "..."
但不能两者兼得。