From 5211562bdb365aecb730894cdc777a355a8cf5d8 Mon Sep 17 00:00:00 2001 From: saltydk Date: Sat, 8 Mar 2025 18:46:28 +0100 Subject: [PATCH] traefik: add fqdn override option --- filter_plugins/traefik_host_rule.py | 29 +++++++++++++++++++++++++++++ inventories/group_vars/all.yml | 7 +++---- 2 files changed, 32 insertions(+), 4 deletions(-) create mode 100644 filter_plugins/traefik_host_rule.py diff --git a/filter_plugins/traefik_host_rule.py b/filter_plugins/traefik_host_rule.py new file mode 100644 index 0000000000..ac625d477f --- /dev/null +++ b/filter_plugins/traefik_host_rule.py @@ -0,0 +1,29 @@ +def traefik_host_rule(host, host_override, fqdn_override_list): + """ + Ansible filter to generate Traefik host rule. + + Args: + host (str): The base host. + host_override (str): The host override. + fqdn_override_list (list): The FQDN override list. + + Returns: + str: The generated Traefik host rule. + """ + if host_override: + return f'({host_override})' + elif fqdn_override_list: + formatted_fqdn_overrides = [f"Host(`{fqdn}`)" for fqdn in fqdn_override_list] + fqdn_override_string = " || ".join(formatted_fqdn_overrides) + return f"({fqdn_override_string})" + else: + return f"Host(`{host}`)" + +class FilterModule(object): + """ Ansible filter module """ + + def filters(self): + """ return list of filters """ + return { + 'traefik_host_rule': traefik_host_rule, + } diff --git a/inventories/group_vars/all.yml b/inventories/group_vars/all.yml index f04ac5d0ed..6c6a35afd6 100644 --- a/inventories/group_vars/all.yml +++ b/inventories/group_vars/all.yml @@ -333,10 +333,9 @@ traefik_host: "{{ traefik_subdomain + '.' + traefik_domain if (traefik_subdomain | length > 0) else traefik_domain }}" -traefik_host_override: "{{ lookup('vars', traefik_role_var + '_web_host_override', default=lookup('vars', role_name + '_web_host_override', default='')) | length > 0 }}" -traefik_host_template: "{{ lookup('vars', traefik_role_var + '_web_host_override', default=lookup('vars', role_name + '_web_host_override', default='')) - if traefik_host_override - else 'Host(`' + traefik_host + '`)' }}" +traefik_host_override_lookup: "{{ lookup('vars', traefik_role_var + '_web_host_override', default=lookup('vars', role_name + '_web_host_override', default='')) }}" +traefik_fqdn_override_lookup: "{{ lookup('vars', traefik_role_var + '_web_fqdn_override', default=lookup('vars', role_name + '_web_fqdn_override', default='')) }}" +traefik_host_template: "{{ traefik_host | traefik_host_rule(traefik_host_override_lookup, traefik_fqdn_override_lookup) }}" traefik_entrypoint_web_default: "{{ 'web' if not (lookup('vars', traefik_role_var + '_traefik_tailscale_enabled', default=false) | bool) else 'tailscale-web' }}" traefik_entrypoint_web: "{{ lookup('vars', traefik_role_var + '_traefik_entrypoint_web', default=traefik_entrypoint_web_default) }}"