--- # Playbook: app/provision_vms.yml # Purpose: Provision Proxmox guests for app projects (LXC-first) based on `app_projects`. # Targets: localhost (Proxmox API) # Tags: app, provision # # Usage: # - Run one project: ansible-playbook -i inventories/production playbooks/app/provision_vms.yml -e app_project=projectA # - Run all projects: ansible-playbook -i inventories/production playbooks/app/provision_vms.yml - name: Provision Proxmox guests for app projects hosts: localhost connection: local gather_facts: false tags: ['app', 'provision'] vars: selected_projects: >- {{ (app_projects | dict2items | map(attribute='key') | list) if (app_project is not defined or app_project | length == 0) else [app_project] }} tasks: - name: Validate requested project exists ansible.builtin.assert: that: - app_project is not defined or app_project in app_projects fail_msg: "Requested app_project={{ app_project }} does not exist in app_projects." - name: Provision each project/env guest via Proxmox API ansible.builtin.include_tasks: provision_one_guest.yml loop: "{{ selected_projects }}" loop_control: loop_var: project_key