You don't have a dictionary, you have a list with dictionaries.
Now I want a task that creates an entry in /etc/fstab
# The idea is the src value resolves to src=aws_mount_10_22_100_1 for a IP
of 10.22.100.1
- name: Add entry in /etc/fstab
mount: name=/mt/mount_path src="{{ aws_efs_mount.{{
ansible_default_ipv4.address }} }}"
I get
TASK [elasticsearch-elk : Add entry in /etc/fstab *****
fatal: [10.22.x.x]: FAILED! => {"failed": true, "msg": "plate error while
templating string: expected name or number. String: {{ aws_efs_mount.{{
ansible_default_ipv4.address }} }}"}
How can I achieve this? I can't use a template since there are values in
the /etc/fstab file.
You can't use curly brackets inside curly bracket.
To make it work you need to change aws_efs_mount to
aws_efs_mount:
10.22.100.1: aws_mount_10_22_100_1
10.22.100.2: aws_mount_10_22_100_2
And the src in mount to
src={{ aws_efs_mount[hostvars[inventory_hostname].ansible_default_ipv4.address] }}