summaryrefslogtreecommitdiff
path: root/roles/dyndns/tasks/main.yml
diff options
context:
space:
mode:
Diffstat (limited to 'roles/dyndns/tasks/main.yml')
-rw-r--r--roles/dyndns/tasks/main.yml72
1 files changed, 72 insertions, 0 deletions
diff --git a/roles/dyndns/tasks/main.yml b/roles/dyndns/tasks/main.yml
new file mode 100644
index 0000000..198ef0d
--- /dev/null
+++ b/roles/dyndns/tasks/main.yml
@@ -0,0 +1,72 @@
+- name: Fetch digitalocean_dyndns source
+ ansible.builtin.git:
+ repo: https://git.joeac.net/joeac/digitalocean_dyndns.git
+ dest: /usr/local/lib/digitalocean_dyndns
+
+- name: Mark get_ip_addr.sh executable
+ ansible.builtin.file:
+ path: /usr/local/lib/digitalocean_dyndns/get_ip_addr.sh
+ owner: joeac.net
+ group: joeac.net
+ mode: "775"
+
+- name: Mark dyndns.sh executable
+ ansible.builtin.file:
+ path: /usr/local/lib/digitalocean_dyndns/dyndns.sh
+ owner: joeac.net
+ group: joeac.net
+ mode: "775"
+
+- name: Symlink get_ip_addr.sh
+ ansible.builtin.file:
+ src: /usr/local/lib/digitalocean_dyndns/get_ip_addr.sh
+ dest: /usr/bin/get_ip_addr.sh
+ owner: joeac.net
+ group: joeac.net
+ state: link
+
+- name: Symlink dyndns.sh
+ ansible.builtin.file:
+ src: /usr/local/lib/digitalocean_dyndns/dyndns.sh
+ dest: /usr/bin/dyndns.sh
+ owner: joeac.net
+ group: joeac.net
+ state: link
+
+- name: Create config directory
+ ansible.builtin.file:
+ path: /etc/digitalocean_dyndns
+ state: directory
+ mode: "644"
+
+- name: Create cache directory
+ ansible.builtin.file:
+ path: /var/digitalocean_dyndns
+ state: directory
+ mode: "666"
+
+- name: Create log directory
+ ansible.builtin.file:
+ path: /var/log/digitalocean_dyndns
+ state: directory
+ mode: "666"
+
+- name: Copy DIGITALOCEAN_TOKEN
+ ansible.builtin.copy:
+ src: DIGITALOCEAN_TOKEN
+ dest: /etc/digitalocean_dyndns/DIGITALOCEAN_TOKEN
+ mode: "640"
+
+- name: Install daily crontabs for dyndns (IPv4)
+ loop: "{{ subdomains | map(attribute='name') }}"
+ ansible.builtin.cron:
+ special_time: daily
+ name: daily crontab for dyndns for {{ item }}.joeac.net (IPv4)
+ job: CACHE_DIR=/var/digitalocean_dyndns CONFIG_DIR=/etc/digitalocean_dyndns dyndns.sh 4 {{ item }}.joeac.net >> /var/log/digitalocean_dyndns/{{ item }}.joeac.net.ipv4.log
+
+- name: Install daily crontabs for dyndns (IPv6)
+ loop: "{{ subdomains | map(attribute='name') }}"
+ ansible.builtin.cron:
+ special_time: daily
+ name: daily crontab for dyndns for {{ item }}.joeac.net (IPv6)
+ job: CACHE_DIR=/var/digitalocean_dyndns CONFIG_DIR=/etc/digitalocean_dyndns CONN_DEVICE_NAME={{ ansible_facts.default_ipv4.alias }} dyndns.sh 6 {{ item }}.joeac.net >> /var/log/digitalocean_dyndns/{{ item }}.joeac.net.ipv6.log