--- - 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 }}"