- name: Ensure the VM template generation is set up
  hosts: proxmox_vm_template_hosts
  tasks:
    - name: Ensure dependencies are present
      ansible.builtin.apt:
        name:
          - git
          - libguestfs-tools
      become: true

    - name: Ensure /usr/local/{lib,sbin} exist
      ansible.builtin.file:
        path: "{{ item }}"
        state: directory
        owner: root
        group: root
        mode: "0755"
      become: true
      loop:
        - "/usr/local/lib/"
        - "/usr/local/sbin/"

    - name: Ensure the pve-template-vm repo is present
      ansible.builtin.git:
        repo: https://git.hamburg.ccc.de/CCCHH/pve-template-vm.git
        dest: /usr/local/lib/pve-template-vm
        version: main
        force: true
        depth: 1
        single_branch: true
        track_submodules: true
      become: true

    # /usr/local/sbin as the script uses qm, which is also found in /usr/sbin.
    - name: Ensure symlink to build-proxmox-template exists in /usr/local/sbin
      ansible.builtin.file:
        src: /usr/local/lib/pve-template-vm/build-proxmox-template
        dest: /usr/local/sbin/build-proxmox-template
        state: link
        owner: root
        group: root
        mode: '0755'
      become: true

    # This sets up a cron job running /usr/local/sbin/build-proxmox-template using the env vars defined in hypervisor__template_vm_config.
    - name: Ensure cron job is present for building a fresh VM template every week on Friday 04:00
      ansible.builtin.cron:
        name: "ansible build proxmox template"
        cron_file: ansible_build_proxmox_template
        minute: 0
        hour: 4
        weekday: 5
        user: root
        job: "{% if hypervisor__template_vm_config is defined and hypervisor__template_vm_config | length > 0 %}\
              /usr/bin/env \
              {% for item in hypervisor__template_vm_config | default([]) %}\
              {{ item.name }}=\"{{ item.value }}\" \
              {% endfor %}\
              {% endif %}\
              /usr/local/sbin/build-proxmox-template"
      become: true