diff --git a/tasks/autodiscover_pre_tasks.yml b/tasks/autodiscover_pre_tasks.yml index 5341748..111f10f 100644 --- a/tasks/autodiscover_pre_tasks.yml +++ b/tasks/autodiscover_pre_tasks.yml @@ -1,48 +1,105 @@ --- -- name: Fetch private_ips + +- name: "Reading hetzner server infos for stage <{{ stage }}>" uri: - url: https://api.hetzner.cloud/v1/servers?page=1' + url: "https://api.hetzner.cloud/v1/servers?label_selector=stage={{ stage }}" method: GET headers: authorization: Bearer {{ hetzner_authentication_token }} - register: dings + register: hetzner_servers delegate_to: 127.0.0.1 become: false tags: - autodiscover -- name: "Reading private ip address for {{ inventory_hostname }}" +- 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_private_server_ip: "{{ dings.json.servers | json_query(querystr) | first }}" + stage_server_infos: "{{ hetzner_servers.json.servers | json_query(querystr) | default([]) }}" vars: - querystr: "[?name=='{{ inventory_hostname }}'].private_net[0].ip" + 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: "Gathering current server infos from hetzner" - hcloud_server_info: - api_token: "{{ hetzner_authentication_token }}" - register: hetzner_server_infos +- 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 -- name: "Setting current server infos as fact: hetzner_server_infos_json" +# 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: - hetzner_server_infos_json: "{{ hetzner_server_infos.hcloud_server_info }}" + 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 ip address for {{ inventory_hostname }}" +- name: "Reading public ip address for {{ inventory_hostname }}" set_fact: - stage_server_ip: "{{ hetzner_server_infos_json | json_query(querystr) | first }}" + stage_server_ip: "{{ hetzner_servers.json.servers | json_query(querystr) | first }}" vars: - querystr: "[?name=='{{ inventory_hostname }}'].ipv4_address" + querystr: "[?name=='{{ inventory_hostname }}'].public_net.ipv4.ip" delegate_to: 127.0.0.1 become: false tags: @@ -56,4 +113,4 @@ tags: - autodiscover when: - - debug + - debug \ No newline at end of file