--- - 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: - autodiscover - name: "Printing hetzner server infos for stage <{{ stage }}>" debug: msg: "{{ hetzner_servers.json.servers }}" delegate_to: 127.0.0.1 become: false tags: - autodiscover when: - debug - name: "Reading hetzner server infos for stage <{{ stage }}>" set_fact: stage_server_infos: "{{ hetzner_servers.json.servers | json_query(querystr) | default([]) }}" vars: querystr: "[*].{ name: name, public_ip: public_net.ipv4.ip, private_ip: private_net[0].ip }" delegate_to: 127.0.0.1 become: false tags: - autodiscover - name: "Reading hetzner server infos for stage <{{ stage }}>" debug: msg: "{{ stage_server_infos }}" delegate_to: 127.0.0.1 become: false tags: - autodiscover - 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: - autodiscover - name: "Printing hetzner private network infos for stage <{{ stage }}>" debug: msg: "{{ hetzner_networks.json.networks }}" delegate_to: 127.0.0.1 become: false tags: - autodiscover when: - debug - name: "Reading hetzner private network id for <{{ stage }}>" set_fact: stage_private_network_id: "{{ hetzner_networks.json.networks | json_query(querystr) | first }}" vars: querystr: "[?ip_range=='{{ shared_service_network }}'].id" delegate_to: 127.0.0.1 become: false tags: - autodiscover - name: "Reading hetzner private network id for <{{ stage }}>" debug: msg: "{{ stage_private_network_id }}" delegate_to: 127.0.0.1 become: false tags: - autodiscover when: - debug # TODO always match first private_net network is wrong # use stage_private_network_id to match the right network # expression [?network=`{{ stage_private_network_id }}`] does not work - name: "Reading private ip address for {{ inventory_hostname }}" set_fact: stage_private_server_ip: "{{ hetzner_servers.json.servers | json_query(querystr) | first }}" vars: querystr: "[?name=='{{ inventory_hostname }}'].private_net[0].ip" delegate_to: 127.0.0.1 become: false tags: - autodiscover - name: "Reading public ip address for {{ inventory_hostname }}" set_fact: stage_server_ip: "{{ hetzner_servers.json.servers | json_query(querystr) | first }}" vars: querystr: "[?name=='{{ inventory_hostname }}'].public_net.ipv4.ip" delegate_to: 127.0.0.1 become: false tags: - autodiscover - 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: - autodiscover when: - debug