So, I have a dictionary variable containing information about all of my users, like this:
user_dictionary:
bjones:
realname: Bob Jones
uniqueid: 1007
status: active
notes: Database consultant
Part of my playbook changes users’ UIDs to make sure they’re consistent across all of our systems. After that happens I want to make sure that the correct user owns things like their mail spool. However, not every user HAS a mail spool, and I’d like that to be handled gracefully without spitting out any red failure text on playbook run - just skip the task if no mail spool exists. So, I was thinking I could do something like this:
tasks:
- name: Check if mail spools exist
stat:
path: “{{ ‘/var/spool/mail/’ ~ item.key }}”
register: user_dictionary[item.key][“mailspool”]
with_dict: user_dictionary - name: Set ownership and permissions of user mail spools
file:
path: “{{ ‘/var/spool/mail/’ ~ item.key }}”
owner: “{{ item.key | lower }}”
group: “mail”
mode: “0660”
state: file
with_dict: user_dictionary
when: item.key in getent_passwd and item.key.mailspool.stat.exists
But, that register statement isn’t working. There are no mailspool attributes in user_dictionary after running the first task. Anyone know how to register to a dictionary attribute like that?