--- # main.yml - Orchestrate Debian VM template creation and cloning on Proxmox # This playbook handles: # 1. Pre-flight checks (environment validation) # 2. Image download & caching # 3. VM creation & configuration # 4. Template conversion # 5. Clone creation & deployment - name: "Create Debian VM template and deploy clones on Proxmox" hosts: localhost become: true gather_facts: false pre_tasks: - name: "Display playbook banner" debug: msg: | ╔════════════════════════════════════════════════════════════╗ ║ Proxmox VM Template & Clone Manager ║ ║ Template VM: {{ hostname }} (ID: {{ vm_id }}) ║ ║ Storage: {{ storage }} ║ ║ CPU: {{ cores }} cores | RAM: {{ memory }}MB ║ ╚════════════════════════════════════════════════════════════╝ tasks: ################################################################## # 1. PREFLIGHT CHECKS ################################################################## - name: "STAGE 1: Run pre-flight environment checks" include_tasks: preflight-checks.yml tags: [preflight, always] ################################################################## # 2. DOWNLOAD IMAGE ################################################################## - name: "STAGE 2: Download and cache Debian GenericCloud image" include_tasks: download-image.yml tags: [image, always] ################################################################## # 3. CREATE VM ################################################################## - name: "STAGE 3: Create base VM" include_tasks: create-vm.yml tags: [vm, create] ################################################################## # 4. CONFIGURE VM (Disk, Cloud-Init, GPU, TPM, etc.) ################################################################## - name: "STAGE 4: Configure VM (disk, Cloud-Init, optional features)" include_tasks: configure-vm.yml tags: [vm, configure, cloudinit] ################################################################## # 5. CREATE TEMPLATE ################################################################## - name: "STAGE 5: Convert VM to template" include_tasks: create-template.yml tags: [template, create] when: make_template | default(false) ################################################################## # 6. CREATE CLONES ################################################################## - name: "STAGE 6: Create and configure clones" include_tasks: create-clones.yml tags: [clones, create] when: create_clones | default(false) post_tasks: - name: "Display completion summary" debug: msg: | ╔════════════════════════════════════════════════════════════╗ ║ ✓ Playbook execution completed ║ ║ ║ ║ Template VM: {{ hostname }} (ID: {{ vm_id }}) ║ │ {% if make_template %}✓ Converted to template{% else %}✗ Template conversion disabled{% endif %} │ {% if create_clones and clones %}✓ {{ clones | length }} clone(s) created{% else %}✗ Clone creation disabled{% endif %} ║ ║ ║ Next steps: ║ ║ - Verify VMs are running: qm list ║ ║ - Connect to VM: ssh {{ ci_user }}@ ║ ║ - Check Cloud-Init: cloud-init status ║ ║ ║ ╚════════════════════════════════════════════════════════════╝ rescue: - name: "Handle playbook errors" debug: msg: | ✗ Playbook execution failed Check the error messages above for details. You may need to manually clean up partially created VMs.