C'est la nouveauté phare de Nimbus Backup 0.3 : le client de sauvegarde Windows vers Proxmox Backup Server peut désormais être installé et configuré entièrement par fichiers, sans aucune étape interactive.
Pensé pour Ansible — mais compatible avec n'importe quel outil de gestion de configuration (Salt, DSC, GPO, un simple script de login) — c'est l'argument qui manquait pour industrialiser le déploiement sur un parc de postes et de serveurs. Deux voies existent : choisissez celle qui correspond à votre orchestration.
Rien ne change dans le fonctionnement interactif habituel : ce guide s'adresse aux équipes qui veulent déployer à l'échelle, sans ouvrir l'interface graphique sur chaque machine. Tout ce qui suit s'appuie sur les exemples fournis dans le dépôt, dossier examples/automation/.
Voie A — Ligne de commande (recommandée pour l'IaC)
Un seul fichier JSON porte tout ce qu'il faut pour une sauvegarde (adresse du serveur, token, empreinte SSL, datastore, namespace…) ; la planification est déléguée au Planificateur de tâches Windows. C'est l'approche la plus déterministe pour de l'infrastructure-as-code pure.
{
"baseurl": "https://pbs.example.net:8007",
"certfingerprint": "AA:BB:CC:...",
"authid": "ansible@pbs!deploy",
"secret": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
"datastore": "myDatastore",
"namespace": "clients/acme",
"backup-id": "srv-files",
"backupdir": "C:",
"usevss": true
}Lancement :
directorybackup.exe --config "C:\ProgramData\NimbusBackup\backup.json"- Un fichier de config unique regroupe tous les champs (connexion PBS, dossiers, VSS, exclusions…).
- Chaque champ peut être surchargé par un flag CLI (le flag l'emporte sur le fichier) — pratique pour un template partagé avec des surcharges par machine.
- Les codes de retour sont fiables, votre orchestrateur détecte donc les échecs sans ambiguïté.
Codes de retour — le socle de l'automatisation
| Code | Signification |
|---|---|
| 0 | Succès |
| 1 | Échec fatal (connexion, authentification, mail…) |
| 2 | Une autre sauvegarde tourne déjà (verrou) |
| 3 | Sauvegarde partielle — des fichiers étaient illisibles, le snapshot est incomplet |
Le playbook d'exemple ansible/deploy-cli.yml (avec le template cli-single-config.json.j2) copie le binaire, rend la configuration et enregistre une tâche planifiée quotidienne (win_scheduled_task) exécutée en tant que SYSTEM au niveau highest — indispensable pour que VSS fonctionne.
- name: Sauvegarde quotidienne (Task Scheduler)
community.windows.win_scheduled_task:
name: NimbusBackup-Daily
actions:
- path: 'C:\Program Files\NimbusBackup\directorybackup.exe'
arguments: '--config "C:\ProgramData\NimbusBackup\backup.json"'
triggers:
- type: daily
start_boundary: '2026-01-01T02:30:00'
username: SYSTEM
run_level: highest # requis pour VSS
state: present
enabled: trueVoie B — Service/GUI (MSI) : un fichier pour connexion et planification
Le MSI installe un service Windows. Depuis la 0.3, un unique config.json peut porter la connexion PBS, les paramètres de sauvegarde et la planification, via un tableau scheduled_jobs. Au (re)démarrage, le service réconcilie ces jobs dans son magasin et calcule automatiquement chaque nextRun : vous n'avez pas à produire d'horodatage dans votre template.
{
"pbs_servers": {
"default": {
"id": "default",
"baseurl": "https://pbs.example.net:8007",
"certfingerprint": "AA:BB:CC:...",
"authid": "ansible@pbs!deploy",
"secret": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
"datastore": "myDatastore",
"namespace": "clients/acme"
}
},
"default_pbs_id": "default",
"usevss": true,
"scheduled_jobs": [
{
"id": "nightly-c",
"name": "Nightly C:",
"scheduleTime": "02:30",
"enabled": true,
"backupType": "host",
"backupDirs": ["C:"],
"backupId": "srv-files",
"useVSS": true,
"compression": "fastest"
}
]
}En trois gestes :
- Déposez le fichier dans
C:\ProgramData\NimbusBackup\config.json. - Redémarrez le service
NimbusBackup. - C'est fait — les jobs sont pris en compte, les
nextRuncalculés.
Playbook d'exemple : ansible/deploy-gui-service.yml (avec le template ansible/gui-service-config.json.j2). Déposez le fichier, notifiez le redémarrage du service, c'est tout :
- name: Config unifiée (connexion + planification)
ansible.windows.win_template:
src: config.json.j2
dest: 'C:\ProgramData\NimbusBackup\config.json'
notify: Restart NimbusBackup
# handlers
- name: Restart NimbusBackup
ansible.windows.win_service:
name: NimbusBackup
state: restartedIdempotence : rejouer le playbook ne casse rien
Les jobs sont appariés par leur id. Repousser la même config fait un upsert — pas de doublon.
Une planification inchangée n'est pas re-déclenchée : un nextRun encore valide est conservé.
Les jobs créés à la main dans l'interface (dont vous ne listez pas l'id) sont laissés intacts.
Si l'id est omis, il est dérivé de façon stable du nom du job.
Référence des champs
Connexion (pbs_servers[*])
| Clé | Note |
|---|---|
| baseurl | https://hôte:8007 |
| certfingerprint | Empreinte SHA-256 (AA:BB:…) ; requise pour un certificat auto-signé |
| authid | Token API PBS, ex. user@pbs!token |
| secret | Secret du token (à garder dans Ansible Vault) |
| datastore | Datastore cible |
| namespace | Namespace optionnel |
Besoin de créer le token en amont ? Voir Gérer les tokens API d'un datastore PBS.
Job planifié (scheduled_jobs[*], voie service/GUI)
| Clé | Note |
|---|---|
| id | Identifiant stable ; dérivé du name si omis |
| name | Nom affiché |
| scheduleTime | HH:MM, 24 h, heure locale |
| enabled | Doit être true pour s'exécuter |
| backupType | host (dossiers) ou vm (machine entière) |
| backupDirs | Liste de chemins, ex. ["C:"] |
| useVSS | Snapshot cohérent via VSS |
| compression | fastest | default | better | best |
| excludeList | Motifs d'exclusion optionnels |
| runAtStartup | Exécute aussi une fois au démarrage du service |
| nextRun | Optionnel — calculé automatiquement si vide |
Secrets : ne jamais committer un vrai token
- Utilisez Ansible Vault (
{{ vault_pbs_secret }}dans les exemples). - Sur disque,
config.jsonest écrit en0600. - Le token est retiré avant d'atteindre le frontend de l'interface graphique.
Quelle voie choisir ?
IaC pure, orchestrateur qui gère déjà la planification (Task Scheduler, cron distant, pipeline). Codes retour fiables, surcharge par flags. La plus déterministe.
Vous voulez un service Windows résilient (survit au reboot, à la veille), une planification interne et un seul fichier à pousser. Réconciliation idempotente, cohabitation avec les jobs créés à la main.
Récupérer le client et les exemples
Open Source (GPL-3.0) · playbooks Ansible et templates Jinja2 fournis
Nouveau sur le client Windows ? Commencez par le guide du client GUI open source (installation, VSS, premier backup), puis revenez ici pour l'industrialiser. Pour un cas réel chiffré, voir le retour d'expérience d'un premier backup 1 To en production.
Un PBS managé pour recevoir ces sauvegardes
Le déploiement automatisé pousse les sauvegardes ; encore faut-il une destination fiable. NimbusBackup fournit un Proxmox Backup Server hébergé, mis à jour et sauvegardé, prêt à recevoir vos postes et serveurs Windows.
