当我在Ansible的帮助下自动化某些网络环境时,我想开始使用嵌套的清单/变量文件。最重要的是要保持一切整齐有序。但是到目前为止,我无法使其正常工作,也无法分辨出问题所在。
库存外观如下:(虚拟内容)
interfaces:
- name: "..."
port: "..."
description: "..."
parameters:
- speed: "..."
duplex: "..."
- name: "..."
port: "..."
description: "..."
parameters:
- speed: "..."
duplex: "..."
如您所见,我有一个“界面”列表,其中包含一个“参数”列表,我都想在我的剧本中进行寻址。
Playbook如下:
- 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'"}
我在做什么错了?
答案 0 :(得分:4)
以下是无效的YAML语法:
interfaces:
- name: "..."
port: "..."
description: "..."
parameters:
- speed: "..."
duplex: "..."
description
不能同时是标量和映射。
您可以拥有
interfaces:
- name: "..."
port: "..."
description: "..."
或
interfaces:
- name: "..."
port: "..."
description:
parameters:
- speed: "..."
duplex: "..."
但不能两者都