From cc671bda63f352d8cdd36226bb5c88f5b2820f60 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jan=20Christian=20Gr=C3=BCnhage?= Date: Fri, 8 Jan 2021 04:13:31 +0100 Subject: [PATCH] feat(cloudflare-ddns): add cloudflare-ddns role --- roles/cloudflare-ddns/README.md | 40 +++++++++++++++++++ roles/cloudflare-ddns/defaults/main.yml | 2 + roles/cloudflare-ddns/handlers/main.yml | 2 + roles/cloudflare-ddns/meta/main.yml | 11 +++++ roles/cloudflare-ddns/tasks/main.yml | 19 +++++++++ roles/cloudflare-ddns/templates/wrapper.sh.j2 | 6 +++ roles/cloudflare-ddns/vars/main.yml | 2 + 7 files changed, 82 insertions(+) create mode 100644 roles/cloudflare-ddns/README.md create mode 100644 roles/cloudflare-ddns/defaults/main.yml create mode 100644 roles/cloudflare-ddns/handlers/main.yml create mode 100644 roles/cloudflare-ddns/meta/main.yml create mode 100644 roles/cloudflare-ddns/tasks/main.yml create mode 100644 roles/cloudflare-ddns/templates/wrapper.sh.j2 create mode 100644 roles/cloudflare-ddns/vars/main.yml diff --git a/roles/cloudflare-ddns/README.md b/roles/cloudflare-ddns/README.md new file mode 100644 index 0000000..caccc2c --- /dev/null +++ b/roles/cloudflare-ddns/README.md @@ -0,0 +1,40 @@ +cloudflare-ddns +=============== + +Dynamic DNS using Cloudflare. + +Requirements +------------ + +VoidLinux, as the tool is not packaged for other distros, and installing using cargo isn't supported yet. + +Role Variables +-------------- + +- **cloudflare_ddns_api_token**: API token with access to the zone +- **cloudflare_ddns_domain**: Domain for which to update the record +- **cloudflare_ddns_zone**: Zone which contains the domain + +Example Playbook +---------------- + +```yaml +- hosts: servers + collections: + - jcgruenhage.base + roles: + - role: cloudflare-ddns + cloudflare_ddns_api_token: your-token-here + cloudflare_ddns_zone: example.org + cloudflare_ddns_domain: host.example.org +``` + +License +------- + +AGPL-3.0-only + +Author Information +------------------ + +Jan Christian Grünhage diff --git a/roles/cloudflare-ddns/defaults/main.yml b/roles/cloudflare-ddns/defaults/main.yml new file mode 100644 index 0000000..ade50fc --- /dev/null +++ b/roles/cloudflare-ddns/defaults/main.yml @@ -0,0 +1,2 @@ +--- +# defaults file for cloudflare-ddns diff --git a/roles/cloudflare-ddns/handlers/main.yml b/roles/cloudflare-ddns/handlers/main.yml new file mode 100644 index 0000000..b8c958c --- /dev/null +++ b/roles/cloudflare-ddns/handlers/main.yml @@ -0,0 +1,2 @@ +--- +# handlers file for cloudflare-ddns diff --git a/roles/cloudflare-ddns/meta/main.yml b/roles/cloudflare-ddns/meta/main.yml new file mode 100644 index 0000000..253dee9 --- /dev/null +++ b/roles/cloudflare-ddns/meta/main.yml @@ -0,0 +1,11 @@ +galaxy_info: + author: Jan Christian Grünhage + description: Cloudflare DDNS tool + license: AGPL-3.0-only + min_ansible_version: 2.10 + platforms: + - name: VoidLinux + versions: + - all + galaxy_tags: [] +dependencies: [] diff --git a/roles/cloudflare-ddns/tasks/main.yml b/roles/cloudflare-ddns/tasks/main.yml new file mode 100644 index 0000000..419766f --- /dev/null +++ b/roles/cloudflare-ddns/tasks/main.yml @@ -0,0 +1,19 @@ +--- +# tasks file for cloudflare-ddns +- name: install cloudflare-ddns package + become: true + xbps: + name: cloudflare-ddns + state: present +- name: template wrapper script + become: true + no_log: true + template: + src: wrapper.sh.j2 + dest: /usr/local/bin/cloudflare-ddns-wrapper.sh + mode: 755 +- name: add cron job + become: true + cron: + name: cloudflare-ddns + job: /usr/local/bin/cloudflare-ddns-wrapper.sh diff --git a/roles/cloudflare-ddns/templates/wrapper.sh.j2 b/roles/cloudflare-ddns/templates/wrapper.sh.j2 new file mode 100644 index 0000000..261ef8d --- /dev/null +++ b/roles/cloudflare-ddns/templates/wrapper.sh.j2 @@ -0,0 +1,6 @@ +#!/bin/sh +exec /usr/bin/cloudflare-ddns \ + --token {{ cloudflare_ddns_api_token }} \ + --domain {{ cloudflare_ddns_domain }} \ + --zone {{ cloudflare_ddns_zone }} \ + --cache /tmp/cloudflare-ddns-ip-cache diff --git a/roles/cloudflare-ddns/vars/main.yml b/roles/cloudflare-ddns/vars/main.yml new file mode 100644 index 0000000..959be23 --- /dev/null +++ b/roles/cloudflare-ddns/vars/main.yml @@ -0,0 +1,2 @@ +--- +# vars file for cloudflare-ddns