API Proxmox : authentification par mot de passe (PROXMOX_CLAUDE / PROXMOX_PASSWORD) en plus du jeton

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
This commit is contained in:
claude BotandClaude Opus 5.5 committed 2026-10-27 11:29:01 +01:00
1 parent 5846487f07
commit 34004ad371
4 files changed
+19 -8

No files matched your search

+8 -1
View File
@@ -91,12 +91,19 @@ pveum acl modify /nodes/lancelot --users bwpoc@pve --roles PVEAuditor
Si le réseau "LAB" est un VNet SDN plutôt qu'un tag sur `vmbr0`, l'ACL réseau devient `/sdn/zones/<zone>/LAB` et, dans `all.yml`, `pve_bridge: LAB` avec `pve_vlan_tag: ""`. Si le réseau "LAB" est un VNet SDN plutôt qu'un tag sur `vmbr0`, l'ACL réseau devient `/sdn/zones/<zone>/LAB` et, dans `all.yml`, `pve_bridge: LAB` avec `pve_vlan_tag: ""`.
Le secret du jeton reste hors du dépôt, dans l'environnement : Les secrets restent hors du dépôt, dans l'environnement. Au choix, le jeton :
```bash ```bash
export PVE_TOKEN_SECRET='xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx' export PVE_TOKEN_SECRET='xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx'
``` ```
ou l'identifiant et le mot de passe du compte (le jeton est prioritaire s'il est défini) :
```bash
export PROXMOX_CLAUDE='bwpoc@pve'
export PROXMOX_PASSWORD='...'
```
## Déploiement ## Déploiement
```bash ```bash
+4 -2
View File
@@ -18,10 +18,12 @@ pve_bridge: vmbr0 # A ADAPTER
pve_vlan_tag: "200" pve_vlan_tag: "200"
pve_pool: bwpoc # pool délégué au compte dédié pve_pool: bwpoc # pool délégué au compte dédié
# Compte dédié pour le clonage par l'API (voir README, "Compte Proxmox dédié") # Compte dédié pour le clonage par l'API (voir README, "Compte Proxmox dédié").
pve_api_user: bwpoc@pve # Jeton API (PVE_TOKEN_SECRET) prioritaire, sinon mot de passe (PROXMOX_PASSWORD).
pve_api_user: "{{ lookup('ansible.builtin.env', 'PROXMOX_CLAUDE') | default('bwpoc@pve', true) }}"
pve_api_token_id: ansible pve_api_token_id: ansible
pve_api_token_secret: "{{ lookup('ansible.builtin.env', 'PVE_TOKEN_SECRET') }}" pve_api_token_secret: "{{ lookup('ansible.builtin.env', 'PVE_TOKEN_SECRET') }}"
pve_api_password: "{{ lookup('ansible.builtin.env', 'PROXMOX_PASSWORD') }}"
pve_validate_certs: false # certificat auto-signé du nœud pve_validate_certs: false # certificat auto-signé du nœud
pve_template_vmid: 9100 pve_template_vmid: 9100
pve_template_name: debian13-cloud pve_template_name: debian13-cloud
+4 -2
View File
@@ -8,6 +8,7 @@
- proxmox_template - proxmox_template
# 2) Clonage des VM par l'API, avec le compte dédié bwpoc@pve (jeton API). # 2) Clonage des VM par l'API, avec le compte dédié bwpoc@pve (jeton API).
# Authentification : jeton (PVE_TOKEN_SECRET) ou mot de passe (PROXMOX_CLAUDE / PROXMOX_PASSWORD).
# A sauter si vous fournissez vos propres VM (Debian 12/13 avec accès SSH). # A sauter si vous fournissez vos propres VM (Debian 12/13 avec accès SSH).
- name: Clonage des VM par l'API Proxmox - name: Clonage des VM par l'API Proxmox
hosts: proxmox hosts: proxmox
@@ -20,8 +21,9 @@
group/community.proxmox.proxmox: group/community.proxmox.proxmox:
api_host: "{{ ansible_host }}" api_host: "{{ ansible_host }}"
api_user: "{{ pve_api_user }}" api_user: "{{ pve_api_user }}"
api_token_id: "{{ pve_api_token_id }}" api_token_id: "{{ pve_api_token_id if pve_api_token_secret | length > 0 else omit }}"
api_token_secret: "{{ pve_api_token_secret }}" api_token_secret: "{{ pve_api_token_secret if pve_api_token_secret | length > 0 else omit }}"
api_password: "{{ pve_api_password if pve_api_token_secret | length == 0 else omit }}"
validate_certs: "{{ pve_validate_certs }}" validate_certs: "{{ pve_validate_certs }}"
roles: roles:
- proxmox_vm - proxmox_vm
+3 -3
View File
@@ -1,10 +1,10 @@
--- ---
# Clone et configure les VM du PoC par l'API Proxmox (compte dédié, voir README). # Clone et configure les VM du PoC par l'API Proxmox (compte dédié, voir README).
# Exécuté sur le contrôleur Ansible : connection local dans le playbook. # Exécuté sur le contrôleur Ansible : connection local dans le playbook.
- name: Contrôler la présence du jeton API - name: Contrôler la présence d'un secret pour l'API
ansible.builtin.assert: ansible.builtin.assert:
that: pve_api_token_secret | length > 0 that: (pve_api_token_secret | length > 0) or (pve_api_password | length > 0)
fail_msg: "Exportez PVE_TOKEN_SECRET (secret du jeton {{ pve_api_user }}!{{ pve_api_token_id }})" fail_msg: "Exportez PVE_TOKEN_SECRET (jeton {{ pve_api_user }}!{{ pve_api_token_id }}) ou PROXMOX_CLAUDE et PROXMOX_PASSWORD"
quiet: true quiet: true
- name: Créer le répertoire des host_vars par VM - name: Créer le répertoire des host_vars par VM