summaryrefslogtreecommitdiff
path: root/roles/dyndns/server/tasks
diff options
context:
space:
mode:
Diffstat (limited to 'roles/dyndns/server/tasks')
-rw-r--r--roles/dyndns/server/tasks/main.yml39
1 files changed, 32 insertions, 7 deletions
diff --git a/roles/dyndns/server/tasks/main.yml b/roles/dyndns/server/tasks/main.yml
index 06ef6c47..c29d7edd 100644
--- a/roles/dyndns/server/tasks/main.yml
+++ b/roles/dyndns/server/tasks/main.yml
@@ -10,17 +10,42 @@
- name: create .ssh directory
file:
path: /var/lib/dyndns/.ssh
+ state: directory
mode: 0700
owner: dyndns
group: dyndns
-- name: install zone update script
+- name: install zone update scripts
+ loop:
+ - dyndns.py
+ - dyndns-regen.py
template:
- src: dyndns.py.j2
- dest: /usr/local/bin/dyndns.py
+ src: "{{ item }}.j2"
+ dest: "/usr/local/bin/{{ item }}"
mode: 0755
-- name: install script dependency
- apt:
- name: python-easyzone
- state: present
+- name: test if serial file exists
+ stat:
+ path: "/var/lib/dyndns/serial.{{ dyndns.domain }}"
+ register: dyndns_serial_file_info
+
+- name: autogenerate new serial
+ when: not dyndns_serial_file_info.stat.exists
+ copy:
+ content: "{{ ansible_date_time.year }}{{ ansible_date_time.month }}{{ ansible_date_time.day }}00\n"
+ dest: "/var/lib/dyndns/serial.{{ dyndns.domain }}"
+ owner: dyndns
+ group: dyndns
+
+- name: generate header template
+ template:
+ src: header.tmpl.j2
+ dest: "/var/lib/dyndns/header.{{ dyndns.domain }}"
+
+- name: regenerate dns zone file if changed
+ become: yes
+ become_method: su
+ become_user: dyndns
+ command: /usr/local/bin/dyndns-regen.py "{{ dyndns.domain }}"
+ register: dyndns_regen
+ changed_when: "'OK: already up to date.' not in dyndns_regen.stdout"