Hi everyone,
one simple question and sry for my english skills
I have a playbook with some templates, in one template I added a condition to write a specific IP Address in my template.
(My servers have several network ports and unfortunately they have sometimes different names. Ok, i could use different templates but i wanted to use a single file)
The code:
{% if ansible_mgt.ipv4.address is defined %}
server_address={{ansible_mgt.ipv4.address}}
{% else %}
server_address={{ansible_eth0.ipv4.address}}
{% endif %}
If I run the playbook against a server which has not the network port ansible_mgt the playbook fails because the variable ansible_mgt.ipv4.address is not defined.
What I am doing wrong? Or it is not possible to check in a template if a variable is not defined?
Thanks for your help!
Regards,
Jost
Hi,
I guess, in that case not even ansible_mgt will be defined? What is exact error message (try ansible-playbook with -vvv) ?
David
Hi David,
the error message is:
fatal: [testserver.xxx] => {āmsgā: āAnsibleUndefinedVariable: One or more undefined variables: āansible_mgtā is undefinedā, āfailedā: True}
fatal: [testserver.xxx] => {āmsgā: āAnsibleUndefinedVariable: One or more undefined variables: āansible_mgtā is undefinedā, āfailedā: True}
FATAL: all hosts have already failed ā aborting
Well, that is true. On this machine I have only ansible_eth0:
āansible_eth0ā: {
āactiveā: true,
ādeviceā: āeth0ā,
āipv4ā: {
āaddressā: ā10.101.10.133ā,
ānetmaskā: ā255.255.255.0ā,
ānetworkā: ā10.101.10.0ā
},
My idea was to use the condition, if ansible_mgt is defined ā use ansible_mgt and if not ā ansible_eth0
Regards,
Jost
Hi Josh,
your idea is right:
{% if ansible_mgt is defined and ansible_mgt.ipv4.address is defined %}
server_address={{ansible_mgt.ipv4.address}}
{% else %}
server_address={{ansible_eth0.ipv4.address}}
{% endif %}
you have to check ansible_mgt first.
Hi David,
of course! thank you very much!
I didnāt recognized that the error message was only saying āansible_mgtā and not āansible_mgt.ipv4.addressāā¦facepalm
Regards,
Jost