【发布时间】:2017-01-15 01:47:14
【问题描述】:
我正在处理 RabbitMQ Ansible 角色,我必须编写专门用于用户创建和配置的任务。
我在剧本中定义了以下变量:
vars:
- rabbitmq_resources:
- type_resource: "vhost"
name: "/test"
node: "rabbit@host1ansible"
- type_resource: "vhost"
name: "/other"
node: "rabbit@host1ansible"
- type_resource: "user"
name: "rabbitmqadmin"
password: "rabbitmqadmin"
permissions:
- vhost: "/test"
configure_priv: ".*"
read_priv: ".*"
write_priv: ".*"
- vhost: "/other"
configure_priv: ".*"
read_priv: ".*"
write_priv: ".*"
tags: "administrator"
state: present
那我想写专门用于用户处理的任务代码:
- name: Creating RabbitMQ users
rabbitmq_user:
name: "{{ item.name|mandatory }}"
permissions:
vhost: "{{ item.value.vhost }}"
configure_priv: "{{ item.value.configure_priv }}"
read_priv: "{{ item.value.read_priv }}"
write_priv: "{{ item.value.write_priv }}"
tags: "{{ item.tags }}"
state: present
with_subelements:
- "{{ rabbitmq_resources }}"
- type_resource
- permissions
when: item.type_resource == "user"
上面的语法会生成一条消息“子元素查找需要两个或三个项目的列表,可选的第三个项目必须是带有标志 skip_missing 的字典”。
我测试了各种循环语法(with_items、with_subelements、with_dict),但还是找不到合适的。
我们将不胜感激。
【问题讨论】:
标签: ansible