Reputation: 33
I have the following Ansible structure in my role.
At the moment, when I run my task to create queues, the default queues settings are applied to all queues.
However, I want to be able to override the default queue settings for any specific queue. I have defined queue setting overrides in my vars file below.
How can I apply this override in my queues.yml task?
roles/x/tasks/queues/queues.yml:
---
- include_vars:
file: roles/x/vars/queues.vars.yml
name: q
- name: create queues
some.module.app_queue:
name: "{{ item.name }}"
settings: "{{ queues.settings }}"
state: present
loop: "{{ q.queues }}"
roles/x/defaults/main.yml:
---
queues:
settings:
accessType: exclusive
egressEnabled: true
ingressEnabled: true
maxMsgSpoolUsage: 101
permission: delete
roles/x/vars/queues.vars.yml:
---
---
queues:
- name: queue-one
state: present
subscriptions:
- projects/{{ project_id }}/topics/*/topix-1
- projects/{{ project_id }}/topics/*/topix-2
- name: queue-two
state: present
subscriptions:
- projects/{{ project_id }}/topics/*/topix-3
- projects/{{ project_id }}/topics/*/topix-ab
- name: queue-three
settings:
accessType: exclusive
egressEnabled: false
ingressEnabled: false
maxMsgSpoolUsage: 112
permission: delete
state: present
subscriptions:
- projects/{{ project_id }}/topics/*/topix-xy
- name: queue-four
state: present
subscriptions:
- projects/{{ project_id }}/topics/*/topix-xyz
- name: queue-five
state: present
subscriptions:
- projects/{{ project_id }}/topics/*/topix-123
Upvotes: 1
Views: 83
Reputation: 68294
settings: "{{ item.settings|default(queues.settings) }}"
- include_vars:
file: queues.yml
name: q
- set_fact:
queues: "{{ [queues]|product(q.queues)|map('combine') }}"
Upvotes: 2