ansible-playbook is not working with dictionary and a with_items loop!), here’s part of the role and dictionary:
global_groups:
production_ansible:
gid: 10001
staging_ansible:
gid: 20001
grafana:
gid: 10501
prometheus:
gid: 10502
zookeeper:
gid: 10503
rundeck:
gid: 10504
nginx:
gid: 10505
gnupgserver:
gid: 10506
sequoia:
gid: 10507
- name: user management set global groups macOS
tags:
- user_mgmt
- admin_accounts
group:
name: "{{ item }}"
# gid: "{{ custom_groups[item].gid if custom_groups[item] is defined else global_groups[item].gid | mandatory }}"
gid: "{{ global_groups[item].gid | mandatory }}"
state: "{{ global_groups[item].state | default('present') }}"
# gid: "{{ item.gid | mandatory }}"
# state: "{{ item.state | default('present') }}"
with_list: global_groups
when:
- (global_groups[item].state|default('present')) == 'present'
# - item not in skip_groups
Here is the output:
TASK [common : include_tasks] ******************************************************************************************************************************************************************************************************************
task path: /Users/chris/Projects/checkouts/capsule-cloud-ops/MacStadium_ansible/roles/common/tasks/main.yml:32
included: /Users/chris/Projects/checkouts/capsule-cloud-ops/MacStadium_ansible/roles/common/tasks/add_groups.yml for capsule-v-001-mm038
TASK [common : user management set global groups macOS] ****************************************************************************************************************************************************************************************
task path: /Users/chris/Projects/checkouts/capsule-cloud-ops/MacStadium_ansible/roles/common/tasks/add_groups.yml:20
[ERROR]: Task failed: Finalization of task args for 'ansible.builtin.group' failed: Error while resolving value for 'gid': The filter plugin 'ansible.builtin.mandatory' failed: Mandatory variable 'global_groups' not defined.
Task failed.
Origin: /Users/chris/Projects/checkouts/capsule-cloud-ops/MacStadium_ansible/roles/common/tasks/add_groups.yml:20:5
18 # - item not in skip_groups
19
20 - name: user management set global groups macOS
^ column 5
<<< caused by >>>
Finalization of task args for 'ansible.builtin.group' failed.
Origin: /Users/chris/Projects/checkouts/capsule-cloud-ops/MacStadium_ansible/roles/common/tasks/add_groups.yml:24:5
22 - user_mgmt
23 - admin_accounts
24 group:
^ column 5
<<< caused by >>>
Error while resolving value for 'gid': The filter plugin 'ansible.builtin.mandatory' failed: Mandatory variable 'global_groups' not defined.
Origin: /Users/chris/Projects/checkouts/capsule-cloud-ops/MacStadium_ansible/roles/common/tasks/add_groups.yml:27:17
25 name: "{{ item }}"
26 # gid: "{{ custom_groups[item].gid if custom_groups[item] is defined else global_groups[item].gid | mand...
27 gid: "{{ global_groups[item].gid | mandatory }}"
^ column 17
failed: [capsule-v-001-mm038] (item=global_groups) => {
"ansible_loop_var": "item",
"changed": false,
"item": "global_groups",
"msg": "Task failed: Finalization of task args for 'ansible.builtin.group' failed: Error while resolving value for 'gid': The filter plugin 'ansible.builtin.mandatory' failed: Mandatory variable 'global_groups' not defined."
}
Also, it works if I put it in a dedicated playbook:
---
- name: My First Play
hosts: all
tasks:
- name: debug global_groups
debug:
var: global_groups
tags:
- test
- name: debug user management set global groups macOS
tags:
- user_mgmt
- admin_accounts
debug:
var: "{{ item }}"
with_items: global_groups
when:
- (global_groups[item].state|default('present')) == 'present'
# - item not in skip_groups
...
# vim:ft=ansible
Output:
TASK [debug global_groups] *********************************************************************************************************************************************************************************************************************
task path: /Users/chris/Projects/checkouts/capsule-cloud-ops/MacStadium_ansible/playbooks/debug_global_groups.yml:7
ok: [capsule-v-001-mm038] => {
"global_groups": {
"gnupgserver": {
"gid": 10506
},
"grafana": {
"gid": 10501
},
"nginx": {
"gid": 10505
},
"production_ansible": {
"gid": 10001
},
"prometheus": {
"gid": 10502
},
"rundeck": {
"gid": 10504
},
"sequoia": {
"gid": 10507
},
"staging_ansible": {
"gid": 20001
},
"zookeeper": {
"gid": 10503
}
}
}
TASK [debug user management set global groups macOS] *******************************************************************************************************************************************************************************************
task path: /Users/chris/Projects/checkouts/capsule-cloud-ops/MacStadium_ansible/playbooks/debug_global_groups.yml:12
ok: [capsule-v-001-mm038] => (item=global_groups) => {
"global_groups": {
"gnupgserver": {
"gid": 10506
},
"grafana": {
"gid": 10501
},
"nginx": {
"gid": 10505
},
"production_ansible": {
"gid": 10001
},
"prometheus": {
"gid": 10502
},
"rundeck": {
"gid": 10504
},
"sequoia": {
"gid": 10507
},
"staging_ansible": {
"gid": 20001
},
"zookeeper": {
"gid": 10503
}
},
"item": "global_groups"
}