DEV-1063: reworked the filtering out the stage name out of the loadbalancer

qa
Hoan To 3 years ago committed by Ketelsen, Sven
parent 8318792f1f
commit 8b0747dc07

@ -43,6 +43,8 @@ shared_service_kube_loadbalancer_private_ip: "{{ stage_private_ingress_loadbalan
# TODO make value available for plays with static inventory - by autodiscover_pre_tasks.yml # TODO make value available for plays with static inventory - by autodiscover_pre_tasks.yml
shared_service_loadbalancer_logstash_private_ip_not_available: "private logstash loadbalancer ip not available" shared_service_loadbalancer_logstash_private_ip_not_available: "private logstash loadbalancer ip not available"
shared_service_loadbalancer_logstash_private_ip: "shared_service_loadbalancer_logstash_private_ip_not_available" shared_service_loadbalancer_logstash_private_ip: "shared_service_loadbalancer_logstash_private_ip_not_available"
shared_service_loadbalancer_logstash_public_ip: "{{ stage_public_logstash_loadbalancer_ip | default(shared_service_kube_loadbalancer_private_ip_not_available) }}"
shared_service_loadbalancer_logstash_private_ip: "{{ stage_private_logstash_loadbalancer_ip | default(shared_service_kube_loadbalancer_private_ip_not_available) }}"
shared_service_default_additional_hosts: shared_service_default_additional_hosts:
- name: "{{ shared_service_kube_hostname_argocd }}" - name: "{{ shared_service_kube_hostname_argocd }}"

@ -42,4 +42,3 @@ elastic_admin_username: "{{ elastic_admin_username_vault }}"
elastic_admin_password: "{{ elastic_admin_password_vault }}" elastic_admin_password: "{{ elastic_admin_password_vault }}"
shared_service_elastic_stack_01_hostname: "demompmx-connect-data.smardigo.digital:443" shared_service_elastic_stack_01_hostname: "demompmx-connect-data.smardigo.digital:443"
shared_service_loadbalancer_logstash_private_ip: "{{ demompmx_logstash_private_ip }}"

@ -258,9 +258,9 @@ class InventoryModule(BaseInventoryPlugin, Constructable, Cacheable):
self.inventory.set_variable(serverName, 'stage_public_ingress_loadbalancer_ip', loadbalancerPublicIp) self.inventory.set_variable(serverName, 'stage_public_ingress_loadbalancer_ip', loadbalancerPublicIp)
self.inventory.set_variable(serverName, 'stage_private_ingress_loadbalancer_ip', loadbalancerPrivateIp) self.inventory.set_variable(serverName, 'stage_private_ingress_loadbalancer_ip', loadbalancerPrivateIp)
for extraLoadbalancer in extraLoadbalancers: for extraLoadbalancer in extraLoadbalancers:
self.inventory.set_variable(serverName, f'stage_public_{extraLoadbalancer["name"]}_loadbalancer_ip', extraLoadbalancer["public_net"]["ipv4"]["ip"]) self.inventory.set_variable(serverName, f'stage_public_{extraLoadbalancer["name"].replace(f"{temp_stage}-", "")}_loadbalancer_ip', extraLoadbalancer["public_net"]["ipv4"]["ip"])
if len(loadbalancer["private_net"]) > 0 : if len(loadbalancer["private_net"]) > 0 :
extraLoadbalancerPrivateIp = loadbalancer["private_net"][0]["ip"] extraLoadbalancerPrivateIp = loadbalancer["private_net"][0]["ip"]
else: else:
extraLoadbalancerPrivateIp = '-' extraLoadbalancerPrivateIp = '-'
self.inventory.set_variable(serverName, f'stage_private_{extraLoadbalancer["name"]}_loadbalancer_ip', extraLoadbalancerPrivateIp) self.inventory.set_variable(serverName, f'stage_private_{extraLoadbalancer["name"].replace(f"{temp_stage}-", "")}_loadbalancer_ip', extraLoadbalancerPrivateIp)

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

Loading…
Cancel
Save