61 lines
2 KiB
YAML
61 lines
2 KiB
YAML
- 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
|