You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
hetzner-ansible/tasks/autodiscover_pre_tasks.yml

116 lines
3.1 KiB
YAML

---
- 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