From 1e3ab88304cb0534837785d5b4ecdf78c3fbeadd Mon Sep 17 00:00:00 2001 From: patrick Date: Sun, 28 Jun 2026 13:46:16 -0400 Subject: [PATCH] fix(proxmox_lxc_provision): use literal module-name keys in module_defaults MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The previous commit (d5cf6f6) used 'module_defaults: "{{ _proxmox_module_defaults }}"' to template the entire defaults dict. Ansible rejects this because module_defaults keys must be static action/module/group names at parse time — only values may be templated. Expose _proxmox_api_args as a flat dict of API parameters in defaults/main.yml, and in each task file's module_defaults block use the literal community.proxmox.proxmox and community.proxmox.proxmox_vm_info keys with templated values pointing at the var. --- roles/proxmox_lxc_provision/defaults/main.yml | 20 +++++++++---------- .../tasks/check-exists.yml | 4 +++- roles/proxmox_lxc_provision/tasks/clone.yml | 4 +++- roles/proxmox_lxc_provision/tasks/convert.yml | 4 +++- roles/proxmox_lxc_provision/tasks/create.yml | 4 +++- roles/proxmox_lxc_provision/tasks/delete.yml | 4 +++- roles/proxmox_lxc_provision/tasks/start.yml | 4 +++- roles/proxmox_lxc_provision/tasks/stop.yml | 4 +++- roles/proxmox_lxc_provision/tasks/update.yml | 4 +++- 9 files changed, 33 insertions(+), 19 deletions(-) diff --git a/roles/proxmox_lxc_provision/defaults/main.yml b/roles/proxmox_lxc_provision/defaults/main.yml index 5c823a9..bfd6aaa 100755 --- a/roles/proxmox_lxc_provision/defaults/main.yml +++ b/roles/proxmox_lxc_provision/defaults/main.yml @@ -5,18 +5,16 @@ proxmox_api_validate_certs: false # Host to delegate pct commands to (use inventory hostname for become_password to work) proxmox_delegate_host: "{{ proxmox_api_host }}" -# Shared module_defaults applied by every task file that calls the Proxmox API. +# Shared Proxmox API args referenced by each task file's module_defaults block. # Override the underlying proxmox_* vars (e.g. from group_vars/all/) to customize. -_proxmox_module_defaults: - community.proxmox.proxmox: &_proxmox_api_args - 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_api_args +_proxmox_api_args: + 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 }}" # LXC defaults lxc_template: "local:vztmpl/debian-12-standard_12.12-1_amd64.tar.zst" diff --git a/roles/proxmox_lxc_provision/tasks/check-exists.yml b/roles/proxmox_lxc_provision/tasks/check-exists.yml index 831e991..70cdbc0 100755 --- a/roles/proxmox_lxc_provision/tasks/check-exists.yml +++ b/roles/proxmox_lxc_provision/tasks/check-exists.yml @@ -1,6 +1,8 @@ --- - name: Check if LXC exists - module_defaults: "{{ _proxmox_module_defaults }}" + module_defaults: + community.proxmox.proxmox: "{{ _proxmox_api_args }}" + community.proxmox.proxmox_vm_info: "{{ _proxmox_api_args }}" block: - name: Query Proxmox for existing LXCs community.proxmox.proxmox_vm_info: diff --git a/roles/proxmox_lxc_provision/tasks/clone.yml b/roles/proxmox_lxc_provision/tasks/clone.yml index 5f1cd97..26ddb8f 100755 --- a/roles/proxmox_lxc_provision/tasks/clone.yml +++ b/roles/proxmox_lxc_provision/tasks/clone.yml @@ -1,6 +1,8 @@ --- - name: Clone LXC container - module_defaults: "{{ _proxmox_module_defaults }}" + module_defaults: + community.proxmox.proxmox: "{{ _proxmox_api_args }}" + community.proxmox.proxmox_vm_info: "{{ _proxmox_api_args }}" block: - name: Create a full clone of the container community.proxmox.proxmox: diff --git a/roles/proxmox_lxc_provision/tasks/convert.yml b/roles/proxmox_lxc_provision/tasks/convert.yml index 60fba0b..0f59f50 100755 --- a/roles/proxmox_lxc_provision/tasks/convert.yml +++ b/roles/proxmox_lxc_provision/tasks/convert.yml @@ -1,6 +1,8 @@ --- - name: Convert LXC container to template - module_defaults: "{{ _proxmox_module_defaults }}" + module_defaults: + community.proxmox.proxmox: "{{ _proxmox_api_args }}" + community.proxmox.proxmox_vm_info: "{{ _proxmox_api_args }}" block: - ansible.builtin.include_tasks: stop.yml diff --git a/roles/proxmox_lxc_provision/tasks/create.yml b/roles/proxmox_lxc_provision/tasks/create.yml index 46361d1..8b6d5e4 100755 --- a/roles/proxmox_lxc_provision/tasks/create.yml +++ b/roles/proxmox_lxc_provision/tasks/create.yml @@ -1,6 +1,8 @@ --- - name: Create LXC container - module_defaults: "{{ _proxmox_module_defaults }}" + module_defaults: + community.proxmox.proxmox: "{{ _proxmox_api_args }}" + community.proxmox.proxmox_vm_info: "{{ _proxmox_api_args }}" block: - name: Create an LXC container community.proxmox.proxmox: diff --git a/roles/proxmox_lxc_provision/tasks/delete.yml b/roles/proxmox_lxc_provision/tasks/delete.yml index 6b4428d..d24164a 100755 --- a/roles/proxmox_lxc_provision/tasks/delete.yml +++ b/roles/proxmox_lxc_provision/tasks/delete.yml @@ -1,6 +1,8 @@ --- - name: Delete LXC container - module_defaults: "{{ _proxmox_module_defaults }}" + module_defaults: + community.proxmox.proxmox: "{{ _proxmox_api_args }}" + community.proxmox.proxmox_vm_info: "{{ _proxmox_api_args }}" block: - ansible.builtin.include_tasks: stop.yml diff --git a/roles/proxmox_lxc_provision/tasks/start.yml b/roles/proxmox_lxc_provision/tasks/start.yml index c695ea4..ba953ab 100755 --- a/roles/proxmox_lxc_provision/tasks/start.yml +++ b/roles/proxmox_lxc_provision/tasks/start.yml @@ -1,6 +1,8 @@ --- - name: Start LXC container - module_defaults: "{{ _proxmox_module_defaults }}" + module_defaults: + community.proxmox.proxmox: "{{ _proxmox_api_args }}" + community.proxmox.proxmox_vm_info: "{{ _proxmox_api_args }}" block: - name: Start the LXC container community.proxmox.proxmox: diff --git a/roles/proxmox_lxc_provision/tasks/stop.yml b/roles/proxmox_lxc_provision/tasks/stop.yml index 9524907..a57d572 100755 --- a/roles/proxmox_lxc_provision/tasks/stop.yml +++ b/roles/proxmox_lxc_provision/tasks/stop.yml @@ -1,6 +1,8 @@ --- - name: Stop LXC container - module_defaults: "{{ _proxmox_module_defaults }}" + module_defaults: + community.proxmox.proxmox: "{{ _proxmox_api_args }}" + community.proxmox.proxmox_vm_info: "{{ _proxmox_api_args }}" block: - name: Stop container if it is running community.proxmox.proxmox: diff --git a/roles/proxmox_lxc_provision/tasks/update.yml b/roles/proxmox_lxc_provision/tasks/update.yml index 7eaf396..b7d6ae2 100755 --- a/roles/proxmox_lxc_provision/tasks/update.yml +++ b/roles/proxmox_lxc_provision/tasks/update.yml @@ -1,6 +1,8 @@ --- - name: Update LXC container - module_defaults: "{{ _proxmox_module_defaults }}" + module_defaults: + community.proxmox.proxmox: "{{ _proxmox_api_args }}" + community.proxmox.proxmox_vm_info: "{{ _proxmox_api_args }}" block: - name: Update an LXC container community.proxmox.proxmox: