diff options
| author | Joe Carstairs <me@joeac.net> | 2026-07-25 13:27:19 +0100 |
|---|---|---|
| committer | Joe Carstairs <me@joeac.net> | 2026-07-25 13:27:19 +0100 |
| commit | f93ee559bc1080182a4c466c97e922f53e69783a (patch) | |
| tree | a01f45b73b4bc202af48ce49dad6876f314840c3 /ansible | |
| parent | 6cd86414799c98180ee49357ab522a72e4dc4cd5 (diff) | |
moves dyndns config management to ansible
Diffstat (limited to 'ansible')
| -rw-r--r-- | ansible/inventory.yml | 2 | ||||
| -rw-r--r-- | ansible/playbook.yml | 7 | ||||
| -rw-r--r-- | ansible/roles/dyndns/tasks/main.yml | 72 | ||||
| -rw-r--r-- | ansible/vars/common.yml | 10 |
4 files changed, 91 insertions, 0 deletions
diff --git a/ansible/inventory.yml b/ansible/inventory.yml index 9058c72..156368e 100644 --- a/ansible/inventory.yml +++ b/ansible/inventory.yml @@ -3,6 +3,8 @@ ungrouped: pi-broughton: ansible_host: 192.168.178.91 ansible_ssh_user: broughton + connection_device_name: eth0 blade-canongate: ansible_host: 192.168.178.75 ansible_ssh_user: canongate + connection_device_name: eth0 diff --git a/ansible/playbook.yml b/ansible/playbook.yml new file mode 100644 index 0000000..d91eaa4 --- /dev/null +++ b/ansible/playbook.yml @@ -0,0 +1,7 @@ +- name: Install dyndns + hosts: blade-canongate + become: true + roles: + - dyndns + vars_files: + - common.yml diff --git a/ansible/roles/dyndns/tasks/main.yml b/ansible/roles/dyndns/tasks/main.yml new file mode 100644 index 0000000..ed547d2 --- /dev/null +++ b/ansible/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: "644" + +- name: Install daily crontabs for dyndns (IPv4) + loop: "{{ subdomains }}" + 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 }}" + 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={{ connection_device_name }} dyndns.sh 6 {{ item }}.joeac.net >> /var/log/digitalocean_dyndns/{{ item }}.joeac.net.ipv6.log diff --git a/ansible/vars/common.yml b/ansible/vars/common.yml new file mode 100644 index 0000000..e6dc18c --- /dev/null +++ b/ansible/vars/common.yml @@ -0,0 +1,10 @@ +subdomains: + - "@" + - budget + - docs + - ln + - mail + - autoconfig.mail + - clientsettings.mail + - mta-sts.mail + - pwd |
