Проблема: ссылка на факт о хосте (в данном случае на частный ip) с другого хоста в книге воспроизведения с использованием подстановочного знака, кажется, работает только в части «Хост» книги воспроизведения, а не внутри задачи. vm_ubuntu * нельзя использовать в задаче.
В одной книге воспроизведения у меня есть несколько хостов, и, поскольку инвентарь является динамическим c, у меня нет имени хоста заранее, как Azure добавляет идентификатор после того, как он был создан. Я использую TF для создания. И используя Azure Dynami c метод инвентаризации. Я называю свою пьесу следующим образом, где myazure_rm.yml является стандартным методом инвентаризации azure dynamici c на момент написания этой статьи.
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 }}"
#"