Ansible 如何根据变量获取其他主机IP?
我希望根据清单中给定主机的变量获取其IP 主机Ansible 如何根据变量获取其他主机IP?,ansible,Ansible,我希望根据清单中给定主机的变量获取其IP 主机 [pgsql_servers] psql-01 ansible_host=10.11.12.13 pg_master=True pg_slave=False psql-02 ansible_host=10.11.12.14 pg_master=False pg_slave=True psql-03 ansible_host=10.11.12.15 pg_master=False pg_slave=True [pgsql_servers:v
[pgsql_servers]
psql-01 ansible_host=10.11.12.13 pg_master=True pg_slave=False
psql-02 ansible_host=10.11.12.14 pg_master=False pg_slave=True
psql-03 ansible_host=10.11.12.15 pg_master=False pg_slave=True
[pgsql_servers:vars]
ansible_python_interpreter=/usr/bin/python3
因此,在我的从属任务(只为从属任务运行)中,我希望获得给定的唯一主任务的IP
从任务。yml
- name: Replicate data from Master
command: repmgr -h HOW_TO_GET_MASTER-IP_HERE -U repmgr -d repmgr -D /var/lib/postgresql/9.5/main -f /etc/repmgr.conf standby clone
become: true
become_user: postgres
我想在这里添加一个
,但是主任务不会执行从任务.yml,所以它永远不会成为真任务。有什么办法吗?很简单。只需将另一个变量添加到您的主机
likepg_master_ip
,并将其用于您的从属任务。yml
like
- name: Replicate data from Master
command: repmgr -h {{ pg_master_ip }} -U repmgr -d repmgr -D /var/lib/postgresql/9.5/main -f /etc/repmgr.conf standby clone
become: true
become_user: postgres
您可以在不定义额外变量的情况下获取master(这容易导致复制粘贴错误):
json_查询说明:
* - take all values of current dictionary as a list
[?pg_master] - select only elements that evaluate pg_master key as true
[0].ansible_host - select ansible_host of the first element
直到现在才知道json_查询甚至是可能的。非常感谢。
* - take all values of current dictionary as a list
[?pg_master] - select only elements that evaluate pg_master key as true
[0].ansible_host - select ansible_host of the first element