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: ""`.
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
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
```bash
+4 -2
View File
@@ -18,10 +18,12 @@ pve_bridge: vmbr0 # A ADAPTER
pve_vlan_tag: "200"
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é")
pve_api_user: bwpoc@pve
# Compte dédié pour le clonage par l'API (voir README, "Compte Proxmox dédié").
# 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_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_template_vmid: 9100
pve_template_name: debian13-cloud
+4 -2
View File
@@ -8,6 +8,7 @@
- proxmox_template
# 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).
- name: Clonage des VM par l'API Proxmox
hosts: proxmox
@@ -20,8 +21,9 @@
group/community.proxmox.proxmox:
api_host: "{{ ansible_host }}"
api_user: "{{ pve_api_user }}"
api_token_id: "{{ pve_api_token_id }}"
api_token_secret: "{{ pve_api_token_secret }}"
api_token_id: "{{ pve_api_token_id if pve_api_token_secret | length > 0 else omit }}"
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 }}"
roles:
- 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).
# 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:
that: pve_api_token_secret | length > 0
fail_msg: "Exportez PVE_TOKEN_SECRET (secret du jeton {{ pve_api_user }}!{{ pve_api_token_id }})"
that: (pve_api_token_secret | length > 0) or (pve_api_password | length > 0)
fail_msg: "Exportez PVE_TOKEN_SECRET (jeton {{ pve_api_user }}!{{ pve_api_token_id }}) ou PROXMOX_CLAUDE et PROXMOX_PASSWORD"
quiet: true
- name: Créer le répertoire des host_vars par VM