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
 |