♻: manage san for certificate/domain/sni routing
All checks were successful
ansible-lint / lint-everything (push) Successful in 1m24s
All checks were successful
ansible-lint / lint-everything (push) Successful in 1m24s
This commit is contained in:
@@ -42,10 +42,19 @@ frontend http
|
||||
acl letsencrypt path_beg /.well-known/acme-challenge
|
||||
redirect scheme https code 301 if !letsencrypt
|
||||
{% for server in haproxy_backend_servers %}
|
||||
{% for hostname in hostvars[server]['web_hostname'] | sort(attribute='host') %}
|
||||
## {{ hostname.host }} configuration
|
||||
acl host_{{ hostname.host }} hdr(host) -i {{ hostname.host }}
|
||||
use_backend http_{{ hostvars[server].ansible_host }} if letsencrypt host_{{ hostname.host }}
|
||||
{% for hostname in (
|
||||
(hostvars[server].web_hostname
|
||||
| map(attribute='host'))
|
||||
+
|
||||
(hostvars[server].web_hostname
|
||||
| selectattr('san', 'defined')
|
||||
| map(attribute='san')
|
||||
| flatten)
|
||||
) | sort
|
||||
%}
|
||||
## {{ hostname }} configuration
|
||||
acl host_{{ hostname }} hdr(host) -i {{ hostname }}
|
||||
use_backend http_{{ hostvars[server].ansible_host }} if letsencrypt host_{{ hostname }}
|
||||
|
||||
{% endfor %}
|
||||
{% endfor %}
|
||||
@@ -57,14 +66,24 @@ frontend https
|
||||
tcp-request inspect-delay 3s
|
||||
tcp-request content accept if { req.ssl_hello_type 1 }
|
||||
{% for server in haproxy_backend_servers %}
|
||||
{% for hostname in hostvars[server]['web_hostname'] | sort(attribute='host') %}
|
||||
## {{ hostname.host }} configuration
|
||||
acl host_{{ hostname.host }} req.ssl_sni -i {{ hostname.host }}
|
||||
{% if hostname.allowlistv4 is defined %}
|
||||
acl network_allowed_{{ hostname.host }} src {% for addrv4 in hostname.allowlistv4 %}{{ addrv4 }}{% endfor %}
|
||||
{% for hostname in (
|
||||
(hostvars[server].web_hostname
|
||||
| map(attribute='host'))
|
||||
+
|
||||
(hostvars[server].web_hostname
|
||||
| selectattr('san', 'defined')
|
||||
| map(attribute='san')
|
||||
| flatten)
|
||||
) | sort
|
||||
%}
|
||||
## {{ hostname }} configuration
|
||||
acl host_{{ hostname }} req.ssl_sni -i {{ hostname }}
|
||||
{% set host = (hostvars[server].web_hostname | selectattr('host', '==', hostname))[0] %}
|
||||
{% if host.allowlistv4 is defined %}
|
||||
acl network_allowed_{{ hostname }} src {% for addrv4 in host.allowlistv4 %}{{ addrv4 }}{% endfor %}
|
||||
|
||||
{% endif %}
|
||||
use_backend https_{{ hostvars[server].ansible_host }} if host_{{ hostname.host }}{% if hostname.allowlistv4 is defined %} network_allowed_{{ hostname.host }}{% endif %}
|
||||
use_backend https_{{ hostvars[server].ansible_host }} if host_{{ hostname }}{% if host.allowlistv4 is defined %} network_allowed_{{ hostname }}{% endif %}
|
||||
|
||||
|
||||
{% endfor %}
|
||||
|
Reference in New Issue
Block a user