Raspberry-Pi-IaC/roles/cloudflare-ddns/tasks/main.yml
Thomas Kleinendorst 752f187e0b Allow multiple DDNS addresses
This code could probably be optimized a bit more.
2024-10-04 17:16:58 +02:00

67 lines
1.9 KiB
YAML

---
- name: Include user role
ansible.builtin.include_role:
name: user
vars:
user_username: "{{ cloudflare_ddns_user }}"
user_password: "{{ cloudflare_ddns_user_password }}"
- name: Install Python dependencies
become: true
ansible.builtin.apt:
pkg: python3-pip
state: present
- name: Copy over DDNS scripting
become: true
become_user: "{{ cloudflare_ddns_user }}"
ansible.builtin.copy:
src: cloudflare_ddns
dest: ~/bin/
mode: '0700'
- name: Configure Python venv
become: true
become_user: "{{ cloudflare_ddns_user }}"
ansible.builtin.shell: |
cd ~/bin/cloudflare_ddns
python3 -m venv ./venv
chmod u+x ./venv/bin/activate
source ./venv/bin/activate
pip3 install -r ./requirements.txt
args:
executable: /usr/bin/zsh
creates: ~/bin/cloudflare_ddns/venv
- name: Create directory for storing public IP change logs and config
become: true
become_user: "{{ cloudflare_ddns_user }}"
ansible.builtin.file:
path: ~/cloudflare_ddns
state: directory
mode: '0700'
- name: Fill config file and store it in folder
become: true
become_user: "{{ cloudflare_ddns_user }}"
ansible.builtin.template:
src: ddns_config.ini.j2
dest: ~/cloudflare_ddns/ddns_config.ini
mode: '0600'
- name: Install Cloudflare DDNS service files
become: true
ansible.builtin.template:
src: cloudflare_ddns.service.j2
dest: "/lib/systemd/system/cloudflare_ddns_{{ item.name }}.service"
mode: '0644'
loop: "{{ ddns_addresses }}"
- name: Install Cloudflare DDNS timer files
become: true
ansible.builtin.copy:
src: cloudflare_ddns.timer
dest: "/lib/systemd/system/cloudflare_ddns_{{ item.name }}.timer"
mode: '0644'
loop: "{{ ddns_addresses }}"
- name: Enable the newly added systemd timers
become: true
ansible.builtin.systemd_service:
daemon_reload: true
name: "cloudflare_ddns_{{ item.name }}.timer"
state: started
enabled: true
loop: "{{ ddns_addresses }}"