Ansible and fact dependent variables

ansible

Can an inventory variable in Ansible be dependent on a fact?

Namely, I have a variable in group_vars/all/cars.yml that I would like to set to a value dependent on ansible_fqdn. Like:

link: "http://{{ ansible_fqdn }}:8070/api"

I have tried that and it sometimes seems to work and sometimes not, giving me the literal ansible_fqdn expression without substituting it.

Best Answer

Ansible group_vars files are designed to define variables with corresponding values that may be dependent of other variables defined previously. As such they act as constants that your playbook can use based on some conditions (OS distro, OS version, ...).
The facts are relative to the nodes your playbook is acting on, they can be used inside playbooks but are not available in the group_vars files.

Now, back to your use-case, it's possible to define fact dynamically in a playbook and use it in your tasks:

- name: define the link fact based on ansible_fqdn
  set_fact: link="http://{{ ansible_fqdn }}:8070/api"

- debug: msg="link = {{ link }}"

- debug: var=link

Please have a look here for more details.