【发布时间】:2020-05-22 05:27:29
【问题描述】:
问题:使用通配符从剧本中的另一台主机引用有关主机(在本例中为私有 ip)的事实似乎仅适用于剧本的“主机”部分,而不是在任务中。 vm_ubuntu* 不能用于任务。
在单个 playbook 中,我有几个主机,并且由于清单是动态的,我没有提前知道主机名,因为 Azure 在创建后附加了一个标识符。 我正在使用 TF 来创建。 并使用 Azure 动态清单方法。 我这样称呼我的剧本,截至撰写本文时,myazure_rm.yml 是一个沼泽标准 azure 动态库存方法。
ansible-playbook -i ./myazure_rm.yml ./bwaf-playbook.yaml --key-file ~/.ssh/id_rsa --u azureuser
我的剧本看起来像这样(缩写)。
- hosts: vm_ubuntu*
tasks:
- name: housekeeping
set_fact:
vm_ubuntu_private_ip="{{ hostvars[inventory_hostname]['ansible_default_ipv4']['address'] }}"
#"
- debug: var=vm_ubuntu_private_ip
- hosts: vm_bwaf*
connection: local
vars:
vm_bwaf_private_ip: "{{private_ipv4_addresses | join }}"
vm_bwaf_public_ip: "{{ public_ipv4_addresses | join }}"
vm_ubuntu_private_ip: "{{ hostvars['vm_ubuntu*']['ip'] }}"
api_url: "http://{{ vm_bwaf_public_ip }}:8000/restapi/{{ api_version }}"
#"
【问题讨论】: