--- - name: Proxmox LXC provision module_defaults: community.proxmox.proxmox: &proxmox_defaults api_host: "{{ proxmox_api_host }}" api_port: "{{ proxmox_api_port }}" api_user: "{{ proxmox_api_user }}" api_token_id: "{{ proxmox_api_token_id }}" api_token_secret: "{{ proxmox_api_token_secret }}" validate_certs: "{{ proxmox_api_validate_certs }}" node: "{{ proxmox_node }}" community.proxmox.proxmox_vm_info: *proxmox_defaults block: - name: Check if container exists community.proxmox.proxmox: vmid: "{{ lxc_vmid }}" state: current register: existing_container ignore_errors: true - name: Skip if container already exists meta: end_host when: existing_container is succeeded - name: Container source must be defined (lxc_clone_from or lxc_template) ansible.builtin.fail: msg: "Neither lxc_clone_from or lxc_template are defined" when: lxc_clone_from is undefined and lxc_template is undefined - name: Clone container from another container or template, then update when: lxc_clone_from is defined block: - name: Clone from template ansible.builtin.include_tasks: file: clone.yml register: clone_result - name: Update container ansible.builtin.include_tasks: file: update.yml vars: lxc_vmid: "{{ clone_result.vmid }}" register: lxc_result - name: Create the new container ansible.builtin.include_tasks: file: create.yml when: lxc_template is defined and lxc_clone_from is undefined - name: Start the created container and wait for ssh vars: lxc_vmid: "{{ lxc_result.vmid }}" ansible.builtin.include_tasks: file: "{{ item }}" loop: - start.yml - wait.yml when: lxc_start - name: Post clone updates when: lxc_clone_from is defined delegate_to: "{{ lxc_hostname }}" block: - name: Include post-clone tasks ansible.builtin.include_tasks: file: post-clone.yml