From c95d94207f6f5a475a145baced485ebe1ac5c367 Mon Sep 17 00:00:00 2001 From: Kyattsukuro Date: Mon, 12 Oct 2026 23:40:55 +0200 Subject: [PATCH] Init --- README.md | 1 + defaults/main.yml | 9 +++++++++ handlers/main.yml | 8 ++++++++ meta/main.yml | 19 +++++++++++++++++++ tasks/main.yml | 25 +++++++++++++++++++++++++ templates/compose.yml.j2 | 12 ++++++++++++ 6 files changed, 74 insertions(+) create mode 100644 README.md create mode 100644 defaults/main.yml create mode 100644 handlers/main.yml create mode 100644 meta/main.yml create mode 100644 tasks/main.yml create mode 100644 templates/compose.yml.j2 diff --git a/README.md b/README.md new file mode 100644 index 0000000..943887d --- /dev/null +++ b/README.md @@ -0,0 +1 @@ +# ddns diff --git a/defaults/main.yml b/defaults/main.yml new file mode 100644 index 0000000..167dc65 --- /dev/null +++ b/defaults/main.yml @@ -0,0 +1,9 @@ +path: /srv/{{ role_name }} + +ddns_override: {} +ddns_defaults: + domains: {} +# - provider: "" +# domain: "" +# ip_version: "" +# token: "" diff --git a/handlers/main.yml b/handlers/main.yml new file mode 100644 index 0000000..5838ca4 --- /dev/null +++ b/handlers/main.yml @@ -0,0 +1,8 @@ +- name: restart container + community.docker.docker_compose_v2: + project_src: "{{ path }}" + project_name: "{{ role_name }}" + recreate: "always" + state: "restarted" + services: ["ddns"] + when: not _ddns_already_restarted diff --git a/meta/main.yml b/meta/main.yml new file mode 100644 index 0000000..390c692 --- /dev/null +++ b/meta/main.yml @@ -0,0 +1,19 @@ +--- +galaxy_info: + author: "Niklas Freese " + description: DDNS + company: "Urmel Services" + license: AGPL-3.0-or-later + min_ansible_version: 2.1 + # If this a Container Enabled role, provide the minimum Ansible Container version. + # min_ansible_container_version: + + galaxy_tags: [] + # List tags for your role here, one per line. A tag is a keyword that describes + # and categorizes the role. Users find roles by searching for tags. Be sure to + # remove the '[]' above, if you add tags to this list. + # + # NOTE: A tag is limited to a single word comprised of alphanumeric characters. + # Maximum 20 tags per role. + +dependencies: [] diff --git a/tasks/main.yml b/tasks/main.yml new file mode 100644 index 0000000..819aa67 --- /dev/null +++ b/tasks/main.yml @@ -0,0 +1,25 @@ +--- +- name: "set local variables from overrides and defaults" + set_fact: + ddns: "{{ (ddns_defaults | combine(ddns_override, recursive=True)) if ddns_override else ddns_defaults }}" + +- name: ensure that path exists + file: + path: "{{ path }}" + state: directory + +- name: template docker-compose + template: + src: compose.yml.j2 + dest: "{{ path }}/compose.yml" + notify: restart container + +- name: ensure container is running + community.docker.docker_compose_v2: + project_src: "{{ path }}" + project_name: "{{ role_name }}" + state: "present" + pull: "always" + wait: true + services: ["ddns"] + register: _compose_result diff --git a/templates/compose.yml.j2 b/templates/compose.yml.j2 new file mode 100644 index 0000000..03aecda --- /dev/null +++ b/templates/compose.yml.j2 @@ -0,0 +1,12 @@ +--- +services: + ddns: + image: qmcgaw/ddns-updater + restart: always + network_mode: bridge + environment: + RESOLVER_ADDRESS: 1.1.1.1:53 + {% set config = {'settings': ddns.domains} | to_json -%} + CONFIG: '{{ config }}' + # ports: + # - 8999:8000