--- - name: "Reading hetzner server infos for stage <{{ stage }}>" uri: url: "https://api.hetzner.cloud/v1/servers?label_selector=stage={{ stage }}" method: GET headers: authorization: Bearer {{ hetzner_authentication_token }} register: hetzner_servers delegate_to: 127.0.0.1 become: false tags: - always - name: "Printing hetzner server infos for stage <{{ stage }}>" debug: msg: "{{ hetzner_servers.json.servers }}" delegate_to: 127.0.0.1 become: false tags: - always when: - debug - name: "Reading hetzner private network infos for stage <{{ stage }}>" uri: url: "https://api.hetzner.cloud/v1/networks?label_selector=stage={{ stage }}" method: GET headers: authorization: Bearer {{ hetzner_authentication_token }} register: hetzner_networks delegate_to: 127.0.0.1 become: false tags: - always - name: "Printing hetzner private network infos for stage <{{ stage }}>" debug: msg: "{{ hetzner_networks.json.networks }}" delegate_to: 127.0.0.1 become: false tags: - always when: - debug - name: "Reading hetzner private network id for <{{ stage }}>" set_fact: stage_private_network_id: "{{ hetzner_networks.json.networks | map(attribute='id') | first }}" delegate_to: 127.0.0.1 become: false tags: - always - name: "Printing hetzner private network id for <{{ stage }}>" debug: msg: "{{ stage_private_network_id }}" delegate_to: 127.0.0.1 become: false tags: - always when: - debug - name: "Reading hetzner server infos for stage <{{ stage }}>" set_fact: stage_server_infos: "\ {% set list= [] %}\ {% for server in hetzner_servers.json.servers %}\ {% for private_net in server.private_net %}\ {% if private_net.network == stage_private_network_id|int %}\ {{ list.append({'service': server.labels.service, 'private_ip': private_net.ip, 'public_ip': server.public_net.ipv4.ip, 'name': server.name}) }}\ {% endif %}\ {% endfor %}\ {% endfor %}\ {{ list|list }}" delegate_to: 127.0.0.1 become: false tags: - always - name: "Printing hetzner server infos for stage <{{ stage }}>" debug: msg: "{{ stage_server_infos }}" delegate_to: 127.0.0.1 become: false tags: - always when: - debug - name: "Reading private ip address for {{ inventory_hostname }}" set_fact: stage_private_server_ip: "{% for server in hetzner_servers.json.servers %}\ {% if server.name == inventory_hostname %}\ {% for private_net in server.private_net %}\ {% if private_net.network == stage_private_network_id|int %}\ {{ private_net.ip }}\ {% endif %}\ {% endfor %}\ {% endif %}\ {% endfor %}" delegate_to: 127.0.0.1 become: false tags: - always - name: "Reading public ip address for {{ inventory_hostname }}" set_fact: stage_server_ip: "{{ hetzner_servers.json.servers | json_query(querystr) | first | default('') }}" vars: querystr: "[?name=='{{ inventory_hostname }}'].public_net.ipv4.ip" delegate_to: 127.0.0.1 become: false tags: - always - name: "Printing ip addresses for {{ inventory_hostname }}" debug: msg: "{{ stage_server_ip }} / {{ stage_private_server_ip }}" delegate_to: 127.0.0.1 become: false tags: - always when: - debug