问题
I am trying to compare some variables so here is my case:
pg_master_ip
is an ip obviously.
ansible doesn't parse pg_master_ip
.
bond0.stdout
is a result of an earlier register task.
If I could use {{ hostvars[inventory_hostname]['ansible_bond0'].ipv4.address }}
I'd be happier but I don't know how.
- name: pgsql and pgpool initiate master
include: master.yml
when: bond0.stdout == '{{pg_master_ip}}'
Thank you for the advice in advance.
回答1:
Using {{ hostvars[inventory_hostname][some_variable] }}
is redundant. You can just use {{ some_variable }}
instead. In this case it would be {{ ansible_bond0.ipv4.address }}
. If you want a full list of your default facts check out the setup module.
ansible $SERVER -m setup
Here's how your conditional task should look
- name: pgsql and pgpool initiate master
include: master.yml
when: ansible_bond0.ipv4.address == pg_master_ip
来源:https://stackoverflow.com/questions/45594233/ansible-compare-variables