Error mounting EFS volume to EC2 instance using ansible facts

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.

Did you debug the var: aws_current_az?
A possible problem could be, that is a list or not set correctly.

Yeah, I tried that as well but still encountering the same error. I have a Jenkins job that checks idempotency with the Ansible playbook that is still failing even with the following:

  • 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
    changed_when: False
    ignore_errors: True
  • debug: var=aws_current_az

There is a PR for an az facts module open at the moment which is able to return the available AZ’s
https://github.com/ansible/ansible/pull/20690