Parcourir la source

Improved dynamic DNS

pull/4230/head
Townsend il y a 11 mois
committed by Slavi Pantaleev
Parent
révision
f2f9472c4a
3 fichiers modifiés avec 62 ajouts et 21 suppressions
  1. +13
    -5
      roles/custom/matrix-dynamic-dns/defaults/main.yml
  2. +2
    -2
      roles/custom/matrix-dynamic-dns/tasks/validate_config.yml
  3. +47
    -14
      roles/custom/matrix-dynamic-dns/templates/ddclient.conf.j2

+ 13
- 5
roles/custom/matrix-dynamic-dns/defaults/main.yml Voir le fichier

@@ -55,6 +55,18 @@ matrix_dynamic_dns_base_path: "{{ matrix_base_data_path }}/dynamic-dns"
matrix_dynamic_dns_config_path: "{{ matrix_dynamic_dns_base_path }}/config" matrix_dynamic_dns_config_path: "{{ matrix_dynamic_dns_base_path }}/config"
matrix_dynamic_dns_docker_src_files_path: "{{ matrix_dynamic_dns_base_path }}/docker-src" matrix_dynamic_dns_docker_src_files_path: "{{ matrix_dynamic_dns_base_path }}/docker-src"


# Config options
matrix_dynamic_dns_use: "web"

# The endpoint to use to determine your external IP
matrix_dynamic_dns_web: "https://cloudflare.com/cdn-cgi/trace"

# The field to extract the IP from
# If your endpoint defined in `matrix_dynamic_dns_web` doesn't need this, just set it to ""
matrix_dynamic_dns_web_skip: "ip="

matrix_dynamic_dns_additional_configuration_blocks: []

# Holds the configurations (the domains to update DNS for, the providers they use, etc.) # Holds the configurations (the domains to update DNS for, the providers they use, etc.)
# #
# Example: # Example:
@@ -64,8 +76,4 @@ matrix_dynamic_dns_docker_src_files_path: "{{ matrix_dynamic_dns_base_path }}/do
# username: XXXXXXXXXXXXXXXX # username: XXXXXXXXXXXXXXXX
# password: XXXXXXXXXXXXXXXX # password: XXXXXXXXXXXXXXXX
# domain: "{{ matrix_domain }}" # domain: "{{ matrix_domain }}"
matrix_dynamic_dns_domain_configurations: []

# Config options
matrix_dynamic_dns_additional_configuration_blocks: []
matrix_dynamic_dns_use: "web"
matrix_dynamic_dns_domain_configurations: []

+ 2
- 2
roles/custom/matrix-dynamic-dns/tasks/validate_config.yml Voir le fichier

@@ -14,8 +14,8 @@
- name: Fail if required matrix-dynamic-dns settings not defined in configuration blocks - name: Fail if required matrix-dynamic-dns settings not defined in configuration blocks
ansible.builtin.fail: ansible.builtin.fail:
msg: >- msg: >-
One of the configurations in matrix_dynamic_dns_domain_configurations is missing a required key (domain, provider, protocol).
when: "'domain' not in configuration or 'provider' not in configuration or 'protocol' not in configuration"
One of the configurations in matrix_dynamic_dns_domain_configurations is missing a required key (domain, protocol).
when: "'domain' not in configuration or 'protocol' not in configuration"
with_items: "{{ matrix_dynamic_dns_domain_configurations }}" with_items: "{{ matrix_dynamic_dns_domain_configurations }}"
loop_control: loop_control:
loop_var: configuration loop_var: configuration


+ 47
- 14
roles/custom/matrix-dynamic-dns/templates/ddclient.conf.j2 Voir le fichier

@@ -10,24 +10,57 @@ syslog=no
pid=/var/run/ddclient/ddclient.pid pid=/var/run/ddclient/ddclient.pid
ssl=yes ssl=yes
use={{ matrix_dynamic_dns_use }} use={{ matrix_dynamic_dns_use }}
web='{{ matrix_dynamic_dns_web }}'
{% if matrix_dynamic_dns_web_skip %}
web-skip='{{ matrix_dynamic_dns_web_skip }}'
{% endif %}

{% for matrix_dynamic_dns_additional_configuration in matrix_dynamic_dns_additional_configuration_blocks %}
{{ matrix_dynamic_dns_additional_configuration }}
{% endfor %}


{% for dynamic_dns_domain_configuration in matrix_dynamic_dns_domain_configurations %} {% for dynamic_dns_domain_configuration in matrix_dynamic_dns_domain_configurations %}
protocol={{ dynamic_dns_domain_configuration.protocol }} protocol={{ dynamic_dns_domain_configuration.protocol }}
server={{ dynamic_dns_domain_configuration.provider }} {% if 'username' in dynamic_dns_domain_configuration %}
login='{{ dynamic_dns_domain_configuration.username }}' {% endif %} {% if 'password' in dynamic_dns_domain_configuration %}
password='{{ dynamic_dns_domain_configuration.password }}' {% endif %} {% if 'static' in dynamic_dns_domain_configuration %}
static=yes {% endif %} {% if 'custom' in dynamic_dns_domain_configuration %}
custom=yes {% endif %} {% if 'zone' in dynamic_dns_domain_configuration %}
zone={{ dynamic_dns_domain_configuration.zone }} {% endif %} {% if 'ttl' in dynamic_dns_domain_configuration %}
ttl={{ dynamic_dns_domain_configuration.ttl }} {% endif %} {% if 'mx' in dynamic_dns_domain_configuration %}
mx={{ dynamic_dns_domain_configuration.mx }} {% endif %} {% if 'wildcard' in dynamic_dns_domain_configuration %}
wildcard=yes {% endif %}
{{ dynamic_dns_domain_configuration.domain }}


{% endfor %}
{% if 'provider' in dynamic_dns_domain_configuration %}
server={{ dynamic_dns_domain_configuration.provider }}
{% endif %}


{% if 'username' in dynamic_dns_domain_configuration %}
login='{{ dynamic_dns_domain_configuration.username }}'
{% endif %}


{% for matrix_dynamic_dns_additional_configuration in matrix_dynamic_dns_additional_configuration_blocks %}
{{ matrix_dynamic_dns_additional_configuration }}
{% if 'password' in dynamic_dns_domain_configuration %}
password='{{ dynamic_dns_domain_configuration.password }}'
{% endif %}


{% endfor %}
{% if 'static' in dynamic_dns_domain_configuration %}
static=yes
{% endif %}

{% if 'custom' in dynamic_dns_domain_configuration %}
custom=yes
{% endif %}

{% if 'zone' in dynamic_dns_domain_configuration %}
zone={{ dynamic_dns_domain_configuration.zone }}
{% endif %}

{% if 'ttl' in dynamic_dns_domain_configuration %}
ttl={{ dynamic_dns_domain_configuration.ttl }}
{% endif %}

{% if 'mx' in dynamic_dns_domain_configuration %}
mx={{ dynamic_dns_domain_configuration.mx }}
{% endif %}

{% if 'wildcard' in dynamic_dns_domain_configuration %}
wildcard=yes
{% endif %}

{% if 'script' in dynamic_dns_domain_configuration %}
script={{ dynamic_dns_domain_configuration.script }}
{% endif %}

{{ dynamic_dns_domain_configuration.domain }}
{% endfor %}

Chargement…
Annuler
Enregistrer