嗨,我在遍历我的 json 文件时遇到问题,但它遍历了所有 topicPermissions 而不仅仅是每个用户的主题。
理想情况下它会循环并创建这样的东西
用户:拉里
主题:TopicX
权限:阅读、描述
主题:主题Y
权限:写,描述
然后继续
用户:Tommy.......等等
- name: Create ACL for each user
vars:
my_json_data: "{{ lookup('file', 'test.json') }}"
shell: "rpk acl create --allow-principal {{ item.0.id }} --operation {{ item.1.permissions }} --topic {{ item.1.topic }}"
with_nested:
- "{{ my_json_data.user }}"
- "{{ my_json_data.user | json_query('[].topicPermissions[].{permissions: permissions, topic: topic}') }}"
when: item.1.permissions is defined and item.1.topic is defined
这是我的 Json 文件
{
"admin":[
{
"roleId": "placeholder",
"secretPath": "placeholder",
"vaultAddr": "placeholder",
"brokers": "placeholder",
"containerName": "placeholder"
}
],
"topicsToCreate":[
"TopicX", "TopicY", "TopicZ"
],
"user":[
{
"id":"Larry",
"userpassword":"placeholder",
"consumerGroupPermissions":[
{
"groupId":"Apple",
"groupPermissions":"read,describe"
}
],
"topicPermissions":[
{
"topic":"TopicX",
"permissions":"read,describe"
},
{
"topic":"TopicY",
"permissions":"write,describe"
}
]
},
{
"id":"Tommy",
"userpassword":"placeholder",
"consumerGroupPermissions":[
{
"groupId":"Apple",
"groupPermissions":"read,write,describe"
}
],
"topicPermissions":[
{
"topic":"TopicZ",
"permissions":"read,write,describe"
},
{
"topic":"TopicY",
"permissions":"write,describe"
},
{
"topic":"TopicX",
"permissions":"read,describe"
}
]
}
]
}
知道我做错了什么吗?
- name: Create ACL for each user
vars:
my_json_data: "{{ lookup('file', 'test.json') }}"
shell: "rpk acl create --allow-principal {{ item.0.id }} --operation {{ item.1.permissions }} --topic {{ item.1.topic }}"
with_nested:
- "{{ my_json_data.user }}"
- "{{ my_json_data.user | json_query('[].topicPermissions[].{permissions: permissions, topic: topic}') }}"
when: item.1.permissions is defined and item.1.topic is defined
知道我做错了什么吗?
使用子元素循环列表
- debug:
msg: "{{ item.0.id }} {{ item.1.topic }} {{ item.1.permissions }}"
with_subelements:
- "{{ my_json_data.user }}"
- topicPermissions
给(删节)
msg: Larry TopicX read,describe
msg: Larry TopicY write,describe
msg: Tommy TopicZ read,write,describe
msg: Tommy TopicY write,describe
msg: Tommy TopicX read,describe
完整的测试剧本示例
- hosts: localhost
tasks:
- include_vars:
file: test.json
name: my_json_data
- debug:
var: my_json_data
- debug:
msg: "{{ item.0.id }} {{ item.1.topic }} {{ item.1.permissions }}"
with_subelements:
- "{{ my_json_data.user }}"
- topicPermissions