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.
127 lines
3.3 KiB
YAML
127 lines
3.3 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:
|
|
- 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
|