I have the following tasks in my ansible playbook to register the AZ for an AWS resource:
-
name: Get current AZ from AWS.
uri:
url: http://169.254.169.254/latest/meta-data/placement/availability-zone
return_content: yes
register: aws_current_az -
name: Ensure EFS volume is mounted.
mount:
name: “{{ efs_mount_dir }}”
src: “{{ aws_current_az.content }}.{{ efs_file_system_id }}.efs.{{ aws_region }}.amazonaws.com:/”
fstype: nfs4
opts: nfsvers=4.1
state: mounted
However, I am encountering the following error when I check the diff on the ansible playbook:
FAILED! => {“failed”: true, “msg”: "the field ‘args’ has an invalid value, which appears to include a variable that is undefined. The error was: ‘dict object’ has no attribute 'content
The ‘content’ being registered in the first task, does not register in the second.
This is causing my idempotency checks to fail. These tasks work fine when running, but only fail when checking the difference. Any idea why?
FYI: Using the following geerlingguy Ansible playbook: https://www.jeffgeerling.com/blog/2017/mount-aws-efs-filesystem-on-ec2-instance-ansible
Thanks in advance.