Ansible: compare variables

本小妞迷上赌 提交于 2019-12-01 09:47:18

问题


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

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!