Files

7.7 KiB

Configuration

English version

Variables d'environnement

Configuration minimale recommandee :

PVE_API_URL=https://pve.example.invalid:8006
PVE_API_TOKEN_ID=
PVE_API_TOKEN_SECRET=
REPORT_OUTPUT_DIR=/reports
REPORT_TIMEZONE=Europe/Paris
REPORT_LANGUAGE=fr

Un fichier .env.example est fourni comme modele. Le fichier .env reel ne doit pas etre commite.

Configuration optionnelle :

PVE_VERIFY_TLS=false
PVE_CA_BUNDLE=
PVE_TIMEOUT_SECONDS=30
PVE_BACKUP_JOBS_ENDPOINT=/cluster/backup
PVE_TASK_HISTORY_LIMIT=500
PBS_HOSTNAMES=backup.example.invalid=nom-affiche
LOG_LEVEL=INFO
REPORT_FILENAME_PREFIX=rapport-sauvegardes-pve

Description des variables

Variable Obligatoire Description
PVE_API_URL Oui URL de l'API Proxmox VE, avec schema et port.
PVE_API_TOKEN_ID Oui Identifiant complet du token API PVE.
PVE_API_TOKEN_SECRET Oui Secret du token API PVE.
REPORT_OUTPUT_DIR Non Repertoire de sortie des rapports PDF. Defaut applicatif : reports/. En Docker Compose, utiliser /reports.
REPORT_TIMEZONE Non Fuseau horaire utilise pour les dates du rapport. Defaut : Europe/Paris.
REPORT_LANGUAGE Non Langue du rapport PDF. Valeurs supportees : fr ou en. Defaut : fr.
PVE_VERIFY_TLS Non Active la verification TLS. Defaut : true.
PVE_CA_BUNDLE Non Chemin vers une CA interne montee dans le conteneur.
PVE_TIMEOUT_SECONDS Non Timeout HTTP. Defaut : 30.
PVE_BACKUP_JOBS_ENDPOINT Non Endpoint qui liste les jobs de sauvegarde planifies. Defaut : /cluster/backup. A conserver sauf cas particulier.
PVE_TASK_HISTORY_LIMIT Non Nombre de taches PVE recentes inspectees pour trouver la derniere sauvegarde. Defaut : 500.
PVE_TASK_LOG_LIMIT Non Nombre de lignes recuperees par log de tache vzdump. Defaut : 5000.
PBS_HOSTNAMES Non Mapping manuel IP/DNS PBS vers nom d'hote affiche dans le rapport.
PBS<number>_NAME Non Nom affiche du serveur PBS configure, par exemple PBS01_NAME. Defaut : le prefixe PBS<number>.
PBS<number>_API_URL Non URL API du serveur PBS, par exemple https://backup.example.invalid:8007. Active la collecte si le token est aussi renseigne.
PBS<number>_API_TOKEN_ID Non Identifiant complet du token API PBS.
PBS<number>_API_TOKEN_SECRET Non Secret du token API PBS.
PBS<number>_VERIFY_TLS Non Active la verification TLS pour ce serveur PBS. Defaut : valeur de PVE_VERIFY_TLS.
PBS<number>_CA_BUNDLE Non Chemin vers une CA interne pour ce serveur PBS.
PBS<number>_TIMEOUT_SECONDS Non Timeout HTTP pour ce serveur PBS. Defaut : valeur de PVE_TIMEOUT_SECONDS ou 30.
LOG_LEVEL Non Niveau de log. Defaut : INFO.
REPORT_FILENAME_PREFIX Non Prefixe du fichier PDF.

Exemple Docker Compose

services:
  pve-backup-report:
    build: .
    env_file:
      - .env
    volumes:
      - ./reports:/reports
    restart: "no"

Avec ce montage, la configuration Docker doit contenir :

REPORT_OUTPUT_DIR=/reports

Les rapports sont alors ecrits dans ./reports/ sur l'hote.

Mapping des noms PBS

Le champ PBS_HOSTNAMES permet d'afficher le nom d'hote entre parentheses dans la colonne Serveur PBS.

Format :

PBS_HOSTNAMES=backup.example.invalid=nom-affiche

Rendu dans le rapport :

backup.example.invalid (nom-affiche)

Collecte PBS

La collecte PBS est optionnelle. Pour chaque serveur PBS, elle est active uniquement si les trois variables API URL, token ID et token secret sont renseignees.

Un bloc PBS suit le motif PBS<number>_*. L'ordre de collecte et d'affichage suit l'ordre numerique des prefixes : PBS01, PBS02, PBS10, etc.

PBS01_NAME=nom-affiche
PBS01_API_URL=https://backup.example.invalid:8007
PBS01_API_TOKEN_ID=
PBS01_API_TOKEN_SECRET=

Pour ajouter d'autres serveurs PBS, dupliquer le bloc et incrementer le numero du prefixe :

PBS02_NAME=nom-affiche-secondaire
PBS02_API_URL=https://backup-secondary.example.invalid:8007
PBS02_API_TOKEN_ID=
PBS02_API_TOKEN_SECRET=

PBS10_NAME=nom-affiche-dixieme
PBS10_API_URL=https://backup-extra.example.invalid:8007
PBS10_API_TOKEN_ID=
PBS10_API_TOKEN_SECRET=

Le token PBS est transmis avec le schema d'authentification PBSAPIToken sous la forme TOKENID:TOKENSECRET.

La collecte d'un PBS est active uniquement lorsque l'URL, le token ID et le token secret sont tous renseignes. Une URL seule ne bloque pas le demarrage, mais aucune collecte n'est lancee pour ce PBS.

Le service Docker lance la commande pve-backup-report. Pour produire un rapport, passer explicitement l'argument --generate-pdf.

Pour tester la connexion API :

docker compose run --rm pve-backup-report --check-api

Pour generer le PDF :

docker compose run --rm pve-backup-report --generate-pdf

Permissions du token PVE

Le token doit etre limite a la lecture.

Permissions attendues selon l'implementation :

  • lecture de la configuration du cluster ;
  • lecture des stockages ;
  • lecture des ressources VM/CT ;
  • lecture des jobs de sauvegarde.

Pour le test de l'endpoint des jobs de sauvegarde, PVE peut exiger le privilege Sys.Audit sur le chemin /.

Si --check-api retourne :

<endpoint>: HTTP 403 - Permission check failed (/, Sys.Audit)

ajouter ce privilege au role du token utilise, ou utiliser un role de lecture existant qui le contient.

Dans l'etat observe du projet, /cluster/backup existe bien et l'erreur attendue en cas de droit insuffisant est un 403, pas un 404.

Diagnostic des droits effectifs du token

Un token PVE peut etre en mode privileges separes. Dans ce mode, les droits effectifs du token sont l'intersection des droits de l'utilisateur et des ACL propres au token.

Verifier d'abord le token :

pveum user token permissions <user@realm> <tokenid> --path /

Exemple :

pveum user token permissions backup-report@pve report --path /

Verifier ensuite les ACL :

pveum acl list

Pour ajouter explicitement PVEAuditor au token sur / :

pveum acl modify / --tokens 'backup-report@pve!report' --roles PVEAuditor --propagate 1

Si le token est en privileges separes, l'utilisateur parent doit aussi avoir un droit compatible :

pveum acl modify / --users backup-report@pve --roles PVEAuditor --propagate 1

Autre option, moins restrictive : creer ou modifier le token en privileges complets (privsep=0). Dans ce cas, le token reprend les droits de son utilisateur parent. Cette option est moins fine et doit etre choisie volontairement.

Eviter les privileges d'administration globaux.

TLS

La verification TLS peut etre desactivee explicitement pour les connexions locales :

PVE_VERIFY_TLS=false
PVE_CA_BUNDLE=

Lorsque PVE_VERIFY_TLS=false, PVE_CA_BUNDLE est ignore meme s'il est renseigne.

Quand cette option est utilisee explicitement, l'application journalise un avertissement unique et masque les avertissements repetes de urllib3 pour conserver des logs lisibles.

Si la CA interne n'est pas reconnue par le conteneur, preferer un volume monte et renseigner PVE_CA_BUNDLE.

Exemple :

volumes:
  - ./reports:/reports
  - /etc/ssl/local/pve-ca.pem:/etc/ssl/local/pve-ca.pem:ro

Puis :

PVE_CA_BUNDLE=/etc/ssl/local/pve-ca.pem

Repertoire de sortie

Le repertoire de sortie doit etre persistant.

Dans Docker, monter un volume hote :

volumes:
  - /srv/pve-backup-report/reports:/reports

Et configurer :

REPORT_OUTPUT_DIR=/reports

Le conteneur doit avoir le droit d'ecrire dans ce repertoire.

Les rapports ne doivent pas etre produits dans un chemin ephemere si leur conservation est requise pour l'audit.