51 lines
2.2 KiB
Django/Jinja
51 lines
2.2 KiB
Django/Jinja
{% set counter = {'dns': 2,'ip': 1,} %}{% macro increment(dct, key, inc=1)%}{% if dct.update({key: dct[key] + inc}) %} {% endif %}{% endmacro %}[req]
|
|
req_extensions = v3_req
|
|
distinguished_name = req_distinguished_name
|
|
|
|
[req_distinguished_name]
|
|
|
|
[ v3_req ]
|
|
basicConstraints = CA:FALSE
|
|
keyUsage = nonRepudiation, digitalSignature, keyEncipherment
|
|
subjectAltName = @alt_names
|
|
|
|
[ ssl_client ]
|
|
extendedKeyUsage = clientAuth, serverAuth
|
|
basicConstraints = CA:FALSE
|
|
subjectKeyIdentifier=hash
|
|
authorityKeyIdentifier=keyid,issuer
|
|
subjectAltName = @alt_names
|
|
|
|
[ v3_ca ]
|
|
basicConstraints = CA:TRUE
|
|
keyUsage = nonRepudiation, digitalSignature, keyEncipherment
|
|
subjectAltName = @alt_names
|
|
authorityKeyIdentifier=keyid:always,issuer
|
|
|
|
[alt_names]
|
|
DNS.1 = localhost
|
|
{% for host in groups['etcd'] %}
|
|
{% if hostvars[host]['etcd_access_address'] is defined and not (hostvars[host]['etcd_access_address'] | ansible.utils.ipaddr) %}
|
|
{# If defined, the address which etcd uses to access its members must be included in the SAN, otherwise etcd will fail with a TLS error upon startup. #}
|
|
DNS.{{ counter["dns"] }} = {{ hostvars[host]['etcd_access_address'] }}{{ increment(counter, 'dns') }}
|
|
{% endif %}
|
|
{# This will always expand to inventory_hostname, which can be a completely arbitrary name, that etcd will not know or care about, hence this line is (probably) redundant. #}
|
|
DNS.{{ counter["dns"] }} = {{ host }}{{ increment(counter, 'dns') }}
|
|
{% endfor %}
|
|
{% if apiserver_loadbalancer_domain_name is defined %}
|
|
DNS.{{ counter["dns"] }} = {{ apiserver_loadbalancer_domain_name }}{{ increment(counter, 'dns') }}
|
|
{% endif %}
|
|
{% for etcd_alt_name in etcd_cert_alt_names %}
|
|
DNS.{{ counter["dns"] }} = {{ etcd_alt_name }}{{ increment(counter, 'dns') }}
|
|
{% endfor %}
|
|
{% for host in groups['etcd'] %}
|
|
{% if hostvars[host]['access_ip'] is defined %}
|
|
IP.{{ counter["ip"] }} = {{ hostvars[host]['access_ip'] }}{{ increment(counter, 'ip') }}
|
|
{% endif %}
|
|
IP.{{ counter["ip"] }} = {{ hostvars[host]['ip'] | default(hostvars[host]['fallback_ip']) }}{{ increment(counter, 'ip') }}
|
|
{% endfor %}
|
|
{% for cert_alt_ip in etcd_cert_alt_ips %}
|
|
IP.{{ counter["ip"] }} = {{ cert_alt_ip }}{{ increment(counter, 'ip') }}
|
|
{% endfor %}
|
|
IP.{{ counter["ip"] }} = 127.0.0.1
|