参数组的类型为“dict”,我们无法转换为列表

时间:2016-02-03 06:34:03

标签: ansible ansible-playbook

我正在尝试将一些常用的AWS任务分解为角色,这样我就可以在剧本中更灵活地使用它们,并且遇到了意想不到的障碍。我无法想出这个:

这个游戏可以直接使用“group”直接在任务中定义为列表:

ec2:
 image: "{{image}}"
 region: "{{region}}"
 group: [ "ssh", "outbound" ]
 [... other stuff]

但是如果我把游戏放在角色中并在'defaults / main.yml'文件中定义'groups',Ansible就会失败:

groups: ["ssh", "outbound"]

现在看起来像这样:

ec2:
 image: "{{image}}"
 region: "{{region}}"
 group: "{{groups}}"
 [... other stuff]

Ansible失败了这条消息,似乎认为我的变量是一个字典,而不是列表:

fatal: [localhost]: FAILED! => {"changed": false, "failed": true, "msg": "argument group is of type <type 'dict'> and we were unable to convert to list"}

我要么缺少明显的东西,要么遇到Ansible变量解析的限制。有人对此有任何了解吗?

1 个答案:

答案 0 :(得分:6)

groups是一个保留变量,magic variable将所有广告资源组保存在一个字典中,每个组项目都包含该组的所有主机。

您的方法应该通过选择任何其他变量名称来工作。