|
|
|
|
@ -1,6 +1,10 @@
|
|
|
|
|
---
|
|
|
|
|
|
|
|
|
|
- name: "Reading hetzner server infos for stage <{{ stage }}>"
|
|
|
|
|
#############################################################
|
|
|
|
|
# Reading server infos from hetzner rest api
|
|
|
|
|
#############################################################
|
|
|
|
|
|
|
|
|
|
- name: "Reading hetzner server infos for stage <{{ stage }}/{{ stage_kube }}>"
|
|
|
|
|
uri:
|
|
|
|
|
url: "https://api.hetzner.cloud/v1/servers?label_selector=stage={{ stage }}"
|
|
|
|
|
method: GET
|
|
|
|
|
@ -17,7 +21,7 @@
|
|
|
|
|
tags:
|
|
|
|
|
- always
|
|
|
|
|
|
|
|
|
|
- name: "Reading hetzner server infos for stage <{{ stage }}> without pagination"
|
|
|
|
|
- name: "Reading hetzner server infos for stage <{{ stage }}/{{ stage_kube }}> without pagination"
|
|
|
|
|
set_fact:
|
|
|
|
|
hetzner_servers: "{{ hetzner_servers_result.json.servers }}"
|
|
|
|
|
tags:
|
|
|
|
|
@ -27,7 +31,7 @@
|
|
|
|
|
|
|
|
|
|
- name: "Block << WITH >> pagination"
|
|
|
|
|
block:
|
|
|
|
|
- name: "Reading hetzner server infos for stage <{{ stage }}> with pagination"
|
|
|
|
|
- name: "Reading hetzner server infos for stage <{{ stage }}/{{ stage_kube }}> with pagination"
|
|
|
|
|
uri:
|
|
|
|
|
url: "https://api.hetzner.cloud/v1/servers?label_selector=stage={{ stage }}&page={{ item }}"
|
|
|
|
|
method: GET
|
|
|
|
|
@ -37,28 +41,30 @@
|
|
|
|
|
with_sequence: start=1 end={{ total_server_pages }}
|
|
|
|
|
delegate_to: 127.0.0.1
|
|
|
|
|
|
|
|
|
|
- name: "Reading hetzner server infos for stage <{{ stage }}> with pagination"
|
|
|
|
|
- name: "Reading hetzner server infos for stage <{{ stage }}/{{ stage_kube }}> without pagination"
|
|
|
|
|
set_fact:
|
|
|
|
|
hetzner_servers: "{{ hetzner_servers_results.results | json_query(querystr1) | first | json_query(querystr2) | json_query(querystr2) }}"
|
|
|
|
|
vars:
|
|
|
|
|
querystr1: "[[*].json.servers]"
|
|
|
|
|
querystr2: "[]"
|
|
|
|
|
delegate_to: 127.0.0.1
|
|
|
|
|
when:
|
|
|
|
|
- total_server_pages != '1'
|
|
|
|
|
tags:
|
|
|
|
|
- always
|
|
|
|
|
|
|
|
|
|
- name: "Printing hetzner server infos for stage <{{ stage }}>"
|
|
|
|
|
- name: "Printing hetzner server infos for stage <{{ stage }}/{{ stage_kube }}>"
|
|
|
|
|
debug:
|
|
|
|
|
msg: "{{ hetzner_servers }}"
|
|
|
|
|
delegate_to: 127.0.0.1
|
|
|
|
|
tags:
|
|
|
|
|
- always
|
|
|
|
|
when:
|
|
|
|
|
- debug
|
|
|
|
|
|
|
|
|
|
- name: "Reading hetzner private network infos for stage <{{ stage }}>"
|
|
|
|
|
#############################################################
|
|
|
|
|
# Reading network infos from hetzner rest api
|
|
|
|
|
#############################################################
|
|
|
|
|
|
|
|
|
|
- name: "Reading hetzner private network infos for stage <{{ stage }}/{{ stage_kube }}>"
|
|
|
|
|
uri:
|
|
|
|
|
url: "https://api.hetzner.cloud/v1/networks?label_selector=stage={{ stage }}"
|
|
|
|
|
method: GET
|
|
|
|
|
@ -69,32 +75,25 @@
|
|
|
|
|
tags:
|
|
|
|
|
- always
|
|
|
|
|
|
|
|
|
|
- name: "Printing hetzner private network infos for stage <{{ stage }}>"
|
|
|
|
|
- name: "Printing hetzner private network infos for stage <{{ stage }}/{{ stage_kube }}>"
|
|
|
|
|
debug:
|
|
|
|
|
msg: "{{ hetzner_networks.json.networks }}"
|
|
|
|
|
delegate_to: 127.0.0.1
|
|
|
|
|
tags:
|
|
|
|
|
- always
|
|
|
|
|
when:
|
|
|
|
|
- debug
|
|
|
|
|
|
|
|
|
|
- name: "Reading hetzner private network id for <{{ stage }}>"
|
|
|
|
|
- name: "Reading hetzner private network id for <{{ stage }}/{{ stage_kube }}>"
|
|
|
|
|
set_fact:
|
|
|
|
|
stage_private_network_id: "{{ hetzner_networks.json.networks | map(attribute='id') | first | default(0) }}"
|
|
|
|
|
delegate_to: 127.0.0.1
|
|
|
|
|
stage_network_id: "{{ hetzner_networks.json.networks | map(attribute='id') | first | default(0) }}"
|
|
|
|
|
tags:
|
|
|
|
|
- always
|
|
|
|
|
|
|
|
|
|
- name: "Printing hetzner private network id for <{{ stage }}>"
|
|
|
|
|
debug:
|
|
|
|
|
msg: "{{ stage_private_network_id }}"
|
|
|
|
|
delegate_to: 127.0.0.1
|
|
|
|
|
tags:
|
|
|
|
|
- always
|
|
|
|
|
when:
|
|
|
|
|
- debug
|
|
|
|
|
#############################################################
|
|
|
|
|
# Reading loadbalancer infos from hetzner rest api
|
|
|
|
|
#############################################################
|
|
|
|
|
|
|
|
|
|
- name: "Reading hetzner loadbalancer infos for stage <{{ stage_kube }}>"
|
|
|
|
|
- name: "Reading hetzner loadbalancer infos for stage <{{ stage }}/{{ stage_kube }}>"
|
|
|
|
|
uri:
|
|
|
|
|
url: "https://api.hetzner.cloud/v1/load_balancers"
|
|
|
|
|
method: GET
|
|
|
|
|
@ -105,16 +104,15 @@
|
|
|
|
|
tags:
|
|
|
|
|
- always
|
|
|
|
|
|
|
|
|
|
- name: "Printing hetzner loadbalancer infos for stage <{{ stage_kube }}>"
|
|
|
|
|
- name: "Printing hetzner loadbalancer infos for stage <{{ stage }}/{{ stage_kube }}>"
|
|
|
|
|
debug:
|
|
|
|
|
msg: "{{ hetzner_loadbalancers.json.load_balancers }}"
|
|
|
|
|
delegate_to: 127.0.0.1
|
|
|
|
|
tags:
|
|
|
|
|
- always
|
|
|
|
|
when:
|
|
|
|
|
- debug
|
|
|
|
|
|
|
|
|
|
- name: "Reading hetzner loadbalancer infos for stage <{{ stage_kube }}> with pagination"
|
|
|
|
|
- name: "Reading hetzner loadbalancer infos for stage <{{ stage }}/{{ stage_kube }}>"
|
|
|
|
|
set_fact:
|
|
|
|
|
shared_service_kube_loadbalancer_private_ip: "{{
|
|
|
|
|
hetzner_loadbalancers.json.load_balancers
|
|
|
|
|
@ -123,49 +121,31 @@
|
|
|
|
|
| default([])
|
|
|
|
|
| first
|
|
|
|
|
| default(shared_service_kube_loadbalancer_private_ip_not_available) }}"
|
|
|
|
|
vars:
|
|
|
|
|
querystr1: "[?name=='{{ stage_kube_load_balancer }}'].private_net[*].ip"
|
|
|
|
|
delegate_to: 127.0.0.1
|
|
|
|
|
tags:
|
|
|
|
|
- always
|
|
|
|
|
|
|
|
|
|
- name: "Reading hetzner loadbalancer infos for stage <{{ stage_kube }}> with pagination"
|
|
|
|
|
set_fact:
|
|
|
|
|
shared_service_kube_loadbalancer_public_ip: "{{
|
|
|
|
|
hetzner_loadbalancers.json.load_balancers
|
|
|
|
|
| json_query(querystr1)
|
|
|
|
|
| json_query(querystr2)
|
|
|
|
|
| first
|
|
|
|
|
| default(shared_service_kube_loadbalancer_public_ip_not_available) }}"
|
|
|
|
|
vars:
|
|
|
|
|
querystr1: "[?name=='{{ stage_kube_load_balancer }}'].public_net.ipv4.ip"
|
|
|
|
|
delegate_to: 127.0.0.1
|
|
|
|
|
tags:
|
|
|
|
|
- always
|
|
|
|
|
|
|
|
|
|
- name: "Printing hetzner loadbalancer infos for stage <{{ stage_kube }}>"
|
|
|
|
|
debug:
|
|
|
|
|
msg: "<public={{ shared_service_kube_loadbalancer_public_ip }}:private={{ shared_service_kube_loadbalancer_private_ip }}>"
|
|
|
|
|
delegate_to: 127.0.0.1
|
|
|
|
|
querystr1: "[?name=='{{ stage_kube_load_balancer }}'].private_net[*].ip"
|
|
|
|
|
querystr2: "[?name=='{{ stage_kube_load_balancer }}'].public_net.ipv4.ip"
|
|
|
|
|
tags:
|
|
|
|
|
- always
|
|
|
|
|
when:
|
|
|
|
|
- debug
|
|
|
|
|
|
|
|
|
|
- name: "Reading public ips of hetzner load balancers for stage <{{ stage_kube }}>"
|
|
|
|
|
- name: "Reading hetzner loadbalancer infos for stage <{{ stage }}/{{ stage_kube }}>"
|
|
|
|
|
set_fact:
|
|
|
|
|
"{{ item.name | replace('-','_') }}_public_ip": "{{ item.public_net.ipv4.ip }}"
|
|
|
|
|
"stage_public_{{ item.name | replace(stage_kube + '-', '') | replace('-','_') }}_loadbalancer_ip": "{{ item.public_net.ipv4.ip }}"
|
|
|
|
|
"stage_private_{{ item.name | replace(stage_kube + '-', '') | replace('-','_') }}_loadbalancer_ip": "{{ item.private_net[0].ip if item.private_net | length > 0 else 'Not Available' }}"
|
|
|
|
|
loop: "{{ hetzner_loadbalancers.json.load_balancers | selectattr('name', 'match', '^' + stage_kube + '-.*') | list }}"
|
|
|
|
|
delegate_to: 127.0.0.1
|
|
|
|
|
loop_control:
|
|
|
|
|
label: "{{ item.name }}"
|
|
|
|
|
tags:
|
|
|
|
|
- always
|
|
|
|
|
|
|
|
|
|
- name: "Reading private ips of hetzner load balancers for stage <{{ stage_kube }}>"
|
|
|
|
|
set_fact:
|
|
|
|
|
"{{ item.name | replace('-','_') }}_private_ip": "{{ item.private_net[0].ip if item.private_net | length > 0 else 'Not Available' }}"
|
|
|
|
|
loop: "{{ hetzner_loadbalancers.json.load_balancers | selectattr('name', 'match', '^' + stage_kube + '-.*') | list }}"
|
|
|
|
|
delegate_to: 127.0.0.1
|
|
|
|
|
tags:
|
|
|
|
|
- always
|
|
|
|
|
|
|
|
|
|
#############################################################
|
|
|
|
|
# Setting stage infos as facts
|
|
|
|
|
#############################################################
|
|
|
|
|
|
|
|
|
|
# due to a hetzner api bug for label selector: only last given selector is used - label_selector=stage=XXX,!manual not working correctly
|
|
|
|
|
- name: "Reading hetzner server infos for stage <{{ stage }}/{{ stage_kube }}>"
|
|
|
|
|
@ -176,7 +156,7 @@
|
|
|
|
|
{% if server.labels.manual is not defined %}\
|
|
|
|
|
{% if (server.private_net|length) > 0 %}\
|
|
|
|
|
{% for private_net in server.private_net %}\
|
|
|
|
|
{% if private_net.network == stage_private_network_id|int %}\
|
|
|
|
|
{% if private_net.network == stage_network_id|int %}\
|
|
|
|
|
{{ list.append({'service': server.labels.service | default(''), 'private_ip': private_net.ip, 'public_ip': server.public_net.ipv4.ip, 'name': server.name, 'id': server.id}) }}\
|
|
|
|
|
{% endif %}\
|
|
|
|
|
{% endfor %}\
|
|
|
|
|
@ -186,60 +166,41 @@
|
|
|
|
|
{% endif %}\
|
|
|
|
|
{% endfor %}\
|
|
|
|
|
{{ list|list }}"
|
|
|
|
|
delegate_to: 127.0.0.1
|
|
|
|
|
tags:
|
|
|
|
|
- always
|
|
|
|
|
|
|
|
|
|
- name: "Printing hetzner server infos for stage <{{ stage }}/{{ stage_kube }}>"
|
|
|
|
|
debug:
|
|
|
|
|
msg: "{{ stage_server_infos }}"
|
|
|
|
|
delegate_to: 127.0.0.1
|
|
|
|
|
tags:
|
|
|
|
|
- always
|
|
|
|
|
when:
|
|
|
|
|
- debug
|
|
|
|
|
|
|
|
|
|
- name: "Reading server id for {{ inventory_hostname }}"
|
|
|
|
|
set_fact:
|
|
|
|
|
stage_server_id: "{{ stage_server_infos | json_query(querystr) | first | default('') }}"
|
|
|
|
|
vars:
|
|
|
|
|
querystr: "[?name=='{{ inventory_hostname }}'].id"
|
|
|
|
|
delegate_to: 127.0.0.1
|
|
|
|
|
tags:
|
|
|
|
|
- always
|
|
|
|
|
|
|
|
|
|
- name: "Reading public ip address for {{ inventory_hostname }}"
|
|
|
|
|
- name: "Reading stage infos for stage <{{ stage }}/{{ stage_kube }}>"
|
|
|
|
|
set_fact:
|
|
|
|
|
stage_server_ip: "{{ stage_server_infos | json_query(querystr) | first | default('') }}"
|
|
|
|
|
stage_server_id: "{{ stage_server_infos | json_query(querystr1) | first | default('') }}"
|
|
|
|
|
stage_server_ip: "{{ stage_server_infos | json_query(querystr2) | first | default('') }}"
|
|
|
|
|
stage_private_server_ip: "{{ stage_server_infos | json_query(querystr3) | first | default('') }}"
|
|
|
|
|
vars:
|
|
|
|
|
querystr: "[?name=='{{ inventory_hostname }}'].public_ip"
|
|
|
|
|
delegate_to: 127.0.0.1
|
|
|
|
|
querystr1: "[?name=='{{ inventory_hostname }}'].id"
|
|
|
|
|
querystr2: "[?name=='{{ inventory_hostname }}'].public_ip"
|
|
|
|
|
querystr3: "[?name=='{{ inventory_hostname }}'].private_ip"
|
|
|
|
|
tags:
|
|
|
|
|
- always
|
|
|
|
|
|
|
|
|
|
- name: "Reading private ip address for {{ inventory_hostname }}"
|
|
|
|
|
set_fact:
|
|
|
|
|
stage_private_server_ip: "{{ stage_server_infos | json_query(querystr) | first | default('') }}"
|
|
|
|
|
vars:
|
|
|
|
|
querystr: "[?name=='{{ inventory_hostname }}'].private_ip"
|
|
|
|
|
delegate_to: 127.0.0.1
|
|
|
|
|
tags:
|
|
|
|
|
- always
|
|
|
|
|
|
|
|
|
|
- name: "Printing ip addresses for {{ inventory_hostname }}"
|
|
|
|
|
- name: "Printing autodicoverd values for <{{ inventory_hostname }}> on stage <{{ stage }}/{{ stage_kube }}>"
|
|
|
|
|
debug:
|
|
|
|
|
msg: "{{ stage_server_id }} / {{ stage_server_ip }} / {{ stage_private_server_ip }}"
|
|
|
|
|
delegate_to: 127.0.0.1
|
|
|
|
|
tags:
|
|
|
|
|
- always
|
|
|
|
|
# when:
|
|
|
|
|
# - debug
|
|
|
|
|
|
|
|
|
|
- name: "Printing groups for {{ inventory_hostname }}"
|
|
|
|
|
debug:
|
|
|
|
|
msg: "{{ group_names }}"
|
|
|
|
|
delegate_to: 127.0.0.1
|
|
|
|
|
msg:
|
|
|
|
|
- "host: <{{ inventory_hostname }}>"
|
|
|
|
|
- "server id: <{{ stage_server_id }}>"
|
|
|
|
|
- "server ip (public): <{{ stage_server_ip }}>"
|
|
|
|
|
- "server ip (private): <{{ stage_private_server_ip }}>"
|
|
|
|
|
- "server groups: <{{ group_names | join(',') }}>"
|
|
|
|
|
- "network id: <{{ stage_network_id }}>"
|
|
|
|
|
- "ingess public ip: <{{ shared_service_kube_loadbalancer_public_ip }}>"
|
|
|
|
|
- "ingess private ip: <{{ shared_service_kube_loadbalancer_public_ip }}>"
|
|
|
|
|
- "logstash public ip: <{{ shared_service_loadbalancer_logstash_public_ip }}>"
|
|
|
|
|
- "logstash private ip: <{{ shared_service_loadbalancer_logstash_private_ip }}>"
|
|
|
|
|
tags:
|
|
|
|
|
- always
|
|
|
|
|
# when:
|
|
|
|
|
# - debug
|
|
|
|
|
|