--- - name: Dynamic DNS setup block: - name: Create systemd environment file for dynamic DNS ansible.builtin.template: src: "{{ playbook_dir }}/templates/dynamic-dns-systemd.env.j2" dest: "/etc/dynamic-dns-systemd.env" mode: "0600" owner: root group: root become: true - name: Create dynamic DNS wrapper script ansible.builtin.copy: dest: "/usr/local/bin/dynamic-dns-update.sh" mode: "0755" content: | #!/bin/bash # Run dynamic DNS update (binary compiled by utils.yml) {{ ansible_user_dir }}/.local/bin/dynamic-dns-cf -record "vleeuwen.me,mvl.sh,mennovanleeuwen.nl" 2>&1 | logger -t dynamic-dns become: true - name: Create dynamic DNS systemd timer ansible.builtin.copy: dest: "/etc/systemd/system/dynamic-dns.timer" mode: "0644" content: | [Unit] Description=Dynamic DNS Update Timer Requires=dynamic-dns.service [Timer] OnCalendar=*:0/15 Persistent=true [Install] WantedBy=timers.target become: true register: ddns_timer - name: Create dynamic DNS systemd service ansible.builtin.copy: dest: "/etc/systemd/system/dynamic-dns.service" mode: "0644" content: | [Unit] Description=Dynamic DNS Update After=network-online.target Wants=network-online.target [Service] Type=oneshot ExecStart=/usr/local/bin/dynamic-dns-update.sh EnvironmentFile=/etc/dynamic-dns-systemd.env User={{ ansible_user }} Group={{ ansible_user }} [Install] WantedBy=multi-user.target become: true register: ddns_service - name: Reload systemd daemon ansible.builtin.systemd: daemon_reload: true become: true when: ddns_timer.changed or ddns_service.changed - name: Enable and start dynamic DNS timer ansible.builtin.systemd: name: dynamic-dns.timer enabled: true state: started become: true - name: Display setup completion message ansible.builtin.debug: msg: | Dynamic DNS setup complete! - Systemd timer: sudo systemctl status dynamic-dns.timer - Check logs: sudo journalctl -u dynamic-dns.service -f - Manual run: sudo /usr/local/bin/dynamic-dns-update.sh - Domains: vleeuwen.me, mvl.sh, mennovanleeuwen.nl when: inventory_hostname == 'mennos-cachyos-desktop' tags: - dynamic-dns