67 lines
2.1 KiB
YAML
Executable File
67 lines
2.1 KiB
YAML
Executable File
---
|
|
- 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_lxc_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
|