Refactor all_services to remove name attribute
This commit is contained in:
parent
6f9f888478
commit
1d14ac888e
16 changed files with 42 additions and 71 deletions
playbooks
|
@ -50,7 +50,7 @@ class FilterModule(object):
|
|||
"[CERTIFICATE_EXPIRATION] > 48h"
|
||||
]
|
||||
|
||||
for service in services:
|
||||
for name, service in services.items():
|
||||
if mon := service.get("monitoring"):
|
||||
if service.get("dns"):
|
||||
url = f"https://{service["dns"][0]['domain']}"
|
||||
|
@ -71,7 +71,7 @@ class FilterModule(object):
|
|||
conditions = default_conditions
|
||||
|
||||
new_endpoint = {
|
||||
"name": service["name"],
|
||||
"name": name,
|
||||
"group": mon.get("group"),
|
||||
"url": url,
|
||||
"conditions": conditions,
|
||||
|
|
|
@ -2,32 +2,38 @@ class FilterModule(object):
|
|||
def filters(self):
|
||||
return {
|
||||
'services_for_host': self.services_for_host,
|
||||
'services_to_dnscontrol': self.services_to_dnscontrol,
|
||||
'services_names': self.services_names,
|
||||
'services_get_attr': self.services_get_attr,
|
||||
'services_get_backups': self.services_get_backups,
|
||||
'service_get_backups': self.service_get_backups,
|
||||
'services_ports_to_docker': self.services_ports_to_docker,
|
||||
'service_get_domain': self.service_get_domain,
|
||||
'services_to_dnscontrol': self.services_to_dnscontrol,
|
||||
}
|
||||
|
||||
def services_for_host(self, services, host):
|
||||
result = []
|
||||
for service in services:
|
||||
result = {}
|
||||
for name, service in services.items():
|
||||
if not host:
|
||||
result.append(service)
|
||||
result[name] = service
|
||||
continue
|
||||
if service["host"] == host:
|
||||
result.append(service)
|
||||
result[name] = service
|
||||
continue
|
||||
if service["host"] == "*":
|
||||
result.append(service)
|
||||
result[name] = service
|
||||
continue
|
||||
return result
|
||||
|
||||
def find_service(self, services, name):
|
||||
for service in services:
|
||||
if service.get("name") == name:
|
||||
return service
|
||||
return None
|
||||
def services_names(self, services):
|
||||
return list(services.keys())
|
||||
|
||||
def services_get_attr(self, services, attr):
|
||||
result = []
|
||||
for service in services.values():
|
||||
if value := service.get(attr):
|
||||
result.append(value)
|
||||
return result
|
||||
|
||||
def services_get_backups(self, all_services, wanted_services):
|
||||
result = []
|
||||
|
@ -36,12 +42,12 @@ class FilterModule(object):
|
|||
return result
|
||||
|
||||
def service_get_backups(self, all_services, wanted_service):
|
||||
if service := self.find_service(all_services, wanted_service):
|
||||
if service := all_services.get(wanted_service):
|
||||
return service.get("backup") or []
|
||||
return []
|
||||
|
||||
def service_get_domain(self, all_services, wanted_service):
|
||||
if service := self.find_service(all_services, wanted_service):
|
||||
if service := all_services.get(wanted_service):
|
||||
if dns := service.get("dns"):
|
||||
if dns_0 := dns[0]:
|
||||
return dns_0.get("domain")
|
||||
|
@ -55,11 +61,11 @@ class FilterModule(object):
|
|||
result.append(f"{port['port']}:{port['port']}/{port['protocol']}")
|
||||
return result
|
||||
|
||||
def services_to_dnscontrol(self, services):
|
||||
def services_to_dnscontrol(self, all_services):
|
||||
result = {}
|
||||
for service in services:
|
||||
for svc_name, service in all_services.items():
|
||||
for dns in service.get("dns") or []:
|
||||
name = dns.get("name") or service["name"]
|
||||
name = dns.get("name") or svc_name
|
||||
domain_parts = dns["domain"].split(".")
|
||||
target_parts = domain_parts[:-2] or ["@"]
|
||||
result[name] = {
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
---
|
||||
backup_list: "{{ host_services | map(attribute='backup') | flatten }}"
|
||||
backup_list_all: "{{ all_services | map(attribute='backup') | flatten }}"
|
||||
backup_list: "{{ host_services | services_get_attr('backup') | flatten }}"
|
||||
backup_list_all: "{{ all_services | services_get_attr('backup') | flatten }}"
|
||||
|
||||
backup_msg_start: "Backup started"
|
||||
backup_msg_fail: "Backup failed"
|
||||
|
|
|
@ -6,7 +6,7 @@ caddy_acmedns_url: "https://{{ acme_dns.host }}"
|
|||
|
||||
caddy_ports_default:
|
||||
- "{{ host_vpn.ip }}:2019:2019"
|
||||
caddy_ports_extra: "{{ host_services | map(attribute='ports') | flatten | services_ports_to_docker('reverse_proxy') }}"
|
||||
caddy_ports_extra: "{{ host_services | services_get_attr('ports') | flatten | services_ports_to_docker('reverse_proxy') }}"
|
||||
caddy_ports: "{{ caddy_ports_default | union(caddy_ports_extra) }}"
|
||||
|
||||
caddy_env:
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
---
|
||||
lego_host_certificates: "{{ host_services | map(attribute='certificates') | flatten }}"
|
||||
lego_host_certificates: "{{ host_services | services_get_attr('certificates') | flatten }}"
|
||||
|
||||
lego_env:
|
||||
ACME_DNS_API_BASE: https://{{ acme_dns.host }}
|
||||
|
|
|
@ -21,11 +21,11 @@
|
|||
|
||||
- name: Include service roles
|
||||
ansible.builtin.include_role:
|
||||
name: "{{ services_item.name }}"
|
||||
name: "{{ services_item }}"
|
||||
apply:
|
||||
tags: "{{ services_item.name }}"
|
||||
tags: "{{ services_item }}"
|
||||
tags: always
|
||||
loop: "{{ host_services }}"
|
||||
loop: "{{ host_services | services_names() }}"
|
||||
loop_control:
|
||||
loop_var: services_item
|
||||
|
||||
|
|
|
@ -14,4 +14,4 @@
|
|||
|
||||
- name: Set unused services
|
||||
ansible.builtin.set_fact:
|
||||
unused_services: "{{ docker_compose_projects_result.stdout_lines | difference(host_services | map(attribute='name')) }}"
|
||||
unused_services: "{{ docker_compose_projects_result.stdout_lines | difference(host_services | services_names()) }}"
|
||||
|
|
|
@ -6,7 +6,7 @@
|
|||
- name: Map exisiting/wanted caddy site configs
|
||||
ansible.builtin.set_fact:
|
||||
caddy_site_configs_have: "{{ find_result.files | map(attribute='path') }}"
|
||||
caddy_site_configs_want: "{{ host_services | map(attribute='name') | list_prefix_path_suffix(caddy_config_path, '.conf') }}"
|
||||
caddy_site_configs_want: "{{ host_services | services_names() | list_prefix_path_suffix(caddy_config_path, '.conf') }}"
|
||||
|
||||
- name: Remove unwanted caddy site configs
|
||||
ansible.builtin.file:
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue