Veeam (dépôt de sauvegarde durci)¶
Rôle¶
Ce dépôt IaC (/root/veeam) est conçu pour provisionner un Veeam Hardened Repository (cible de stockage immuable pour Veeam Backup & Replication) — pas le serveur Veeam B&R lui-même. Objectif : cible de sauvegarde pour l'infrastructure, avec protection anti-ransomware par immuabilité.
État réel constaté le 2026-07-19 : ce code n'est actuellement PAS appliqué
Le state Terraform de ce projet ne contient aucune ressource vsphere_virtual_machine (vérifié par terraform state list : seules 5 data sources apparaissent). En parallèle, 4 VM existent réellement dans vCenter (dossier /Datacenter/vm/veeam, segment seg-sauvegarde), créées manuellement entre le 14 et le 17 juillet 2026, toutes actuellement hors tension et sans IP assignée — voir « Architecture » et « Procédure manuelle » ci-dessous. Les deux réalités (code IaC prêt à appliquer / VM manuelles constatées) ne se recoupent pas : à réconcilier avant toute reprise de ce service.
Architecture¶
Ce que le code Terraform déclare (non appliqué actuellement)¶
- VM unique
veeam-repo01(nom historique, pas encore migré vers la conventionIND<SEGMENT><NNN>), zone sauvegarde (seg-sauvegarde), 4 vCPU / 8 Go, clone du template Rocky 9.6 durci. - IP fixe
10.100.3.17/28(var.vm_ip) — pas de lookup NetBox, contrairement au reste de la flotte applicative récente (k8s/glpi/ocs/postfix). - Disque data dédié de 1 To (
disk1-backup), XFS avec l'optionreflink=1(support du « fast clone » Veeam), monté sur/mnt/veeam-repo. - Compte Linux dédié
veeamrepo, sudo temporaire pour le déploiement initial du Data Mover Veeam. - Ports firewalld
2500-3300/tcp(transport Veeam), zonedrop.
Ce qui existe réellement sur vCenter (constaté le 2026-07-19)¶
| VM | OS invité | CPU/RAM | Disques | Support d'installation monté | État |
|---|---|---|---|---|---|
| INDSAUV001 | Windows Server 2025 | 4 vCPU / 32 Go | 1 (~180 Go, veeam.vmdk) |
ISO installation Windows Server 2025 | Hors tension, pas d'IP |
| INDSAUV002 | Rocky Linux | 4 vCPU / 16 Go | 2 (~150 Go + ~180 Go) | VeeamJeOS_13.0.0.4967_20250822.iso |
Hors tension, pas d'IP |
| INDSAUV003 | Rocky Linux | 4 vCPU / 16 Go | 2 (~175 Go + ~200 Go, veeam-proxy.vmdk) |
VeeamJeOS_13.0.0.4967_20250822.iso |
Hors tension, pas d'IP |
| INDSAUV004 | Rocky Linux | 4 vCPU / 16 Go | 2 (~200 Go + ~1 To) | VeeamJeOS_13.0.0.4967_20250822.iso |
Hors tension, pas d'IP |
Les 4 VM sont raccordées au portgroup seg-sauvegarde (dvportgroup-2006, le même réseau que le projet Terraform cible) mais l'adaptateur réseau est déconnecté (Connected: false). Les noms de fichiers .vmdk (veeam.vmdk, veeam-proxy.vmdk) trahissent une création initiale sous les anciens noms manuels (veeam, veaam-proxy01/02, veea-repo — avec coquilles, cf. mémoire de convention de nommage), renommés depuis vers le schéma INDSAUV00x sans recréation du disque sous-jacent.
Interprétation prudente à partir des seuls éléments observables (OS + ISO monté, aucune inspection console faite) : INDSAUV001 (Windows + ISO Windows Server) est vraisemblablement destinée à devenir le serveur Veeam Backup & Replication ; INDSAUV002/003/004 (Rocky + ISO VeeamJeOS, l'image d'appliance "Just enough OS" officielle de Veeam pour déployer des rôles hardened repository/proxy) sont vraisemblablement destinées à des rôles de repository/proxy. Aucune des 4 VM n'a d'OS confirmé installé (pas d'IP remontée, ISO non connecté activement) — préparation en cours ou en pause, pas un service opérationnel.
État constaté¶
flowchart TB
subgraph IaC["Terraform /root/veeam — declare, PAS applique"]
T1["vsphere_virtual_machine.veeam_repo (absent du state)<br/>nom cible : veeam-repo01 - 4 vCPU/8 Go<br/>disque data 1 To XFS reflink<br/>IP fixe 10.100.3.17"]
end
subgraph Real["vCenter /Datacenter/vm/veeam - hors Terraform, constate le 2026-07-19"]
direction TB
V1["INDSAUV001<br/>Windows Server 2025 - 4 vCPU/32 Go<br/>poweredOff, pas d'IP"]
V2["INDSAUV002<br/>Rocky Linux - 4 vCPU/16 Go<br/>poweredOff, pas d'IP"]
V3["INDSAUV003<br/>Rocky Linux - 4 vCPU/16 Go<br/>poweredOff, pas d'IP"]
V4["INDSAUV004<br/>Rocky Linux - 4 vCPU/16 Go<br/>poweredOff, pas d'IP"]
end
Seg(["Segment seg-sauvegarde<br/>10.100.3.16/28"])
V1 -.-> Seg
V2 -.-> Seg
V3 -.-> Seg
V4 -.-> Seg
T1 -.->|"jamais applique"| Seg
Structure du dépôt¶
| Fichier / dossier | Contenu |
|---|---|
main.tf |
VM unique vsphere_virtual_machine.veeam_repo + disque data |
variables.tf |
vm_ip=10.100.3.17 (statique), vm_name=veeam-repo01, cpu=4, ram=8192, data_disk_mb=1048576 |
versions.tf |
Provider hashicorp/vsphere uniquement — pas de provider netbox |
ansible/site.yml |
Rôle veeam_repo |
ansible/roles/veeam_repo/tasks/main.yml |
XFS reflink, montage, compte dépôt, chronyd, firewalld |
ansible/post-hardening.yml |
Playbook séparé, retrait sudo + coupure SSH (irréversible) |
Provisioning Terraform¶
main.tf: ressourcevsphere_virtual_machine.veeam_repo, avec un second disque (disk1-backup,unit_number = 1, 1 To par défaut viavar.data_disk_mb).- Variables clés (
variables.tf) :vsphere_network=seg-sauvegarde,vm_gateway= 10.100.3.30,vm_name=veeam-repo01,vm_cpu= 4,vm_ram= 8192. - Pas de provider NetBox dans ce projet : IP statique (
var.vm_ip) — seul projet applicatif récent de la flotte qui n'a pas basculé vers l'allocation dynamique NetBox. - Vérifié le 2026-07-19 (
terraform state listdans/root/veeam) : le state contient uniquementdata.vsphere_compute_cluster.cluster,data.vsphere_datacenter.dc,data.vsphere_datastore.ds,data.vsphere_network.net,data.vsphere_virtual_machine.template— aucune instance devsphere_virtual_machine.veeam_repo. L'historique git (5 commits) montre une préparation continue du code après la suppression manuelle de la VM d'origine le 2026-07-04 (élargissement du netmask/28, correction du gateway.30, bascule du compte de servicesvc-terraform) mais aucune trace d'un ré-apply réussi depuis. - Si ce code était appliqué tel quel aujourd'hui, il créerait une 5ᵉ VM sur
seg-sauvegarde, nomméeveeam-repo01— nom qui ne suit pas la conventionIND<SEGMENT><NNN>déjà en usage sur les 4 VM manuelles du même segment (INDSAUV001-004). Un renommage (INDSAUV005, le segment étant partiellement occupé — jamais reprendre un numéro déjà utilisé) serait nécessaire avant tout apply, en plus de clarifier si ce 5ᵉ rôle (repository Terraform/Ansible) fait doublon avec l'un des 4 déjà présents.
Configuration Ansible¶
ansible/site.ymlapplique le rôleveeam_reposur l'hôteveeam_repo(inventory.ini). Non exécuté contre une cible vivante depuis le 2026-07-04 (aucune VM gérée par ce projet n'existe actuellement — voir ci-dessus) ; le code ci-dessous décrit ce que ferait un futur apply, pas un état en cours.- Rôle
veeam_repo(roles/veeam_repo/tasks/main.yml) : crée le système de fichiers XFS (opts: -m reflink=1) sur le disque data, récupère son UUID (blkid) et le monte de façon persistante (ansible.posix.mount,noatime), crée le compteveeamrepo(mot de passe géré via ansible-vault, groupewheeltemporaire), active chronyd, créebackups/(mode 0700, propriété du compte dépôt), ouvre les ports de transport Veeam (2500-3300/tcp, zonedrop). - Playbook séparé
ansible/post-hardening.yml, à exécuter une seule fois, après avoir ajouté le dépôt dans la console Veeam : retire le compte dépôt du groupewheel, supprime son éventuel sudoers dédié, vérifie la synchronisation horaire (chronyc tracking), puis désactive et arrête définitivement SSH (async/poll: 0pour survivre à la coupure de la connexion Ansible elle-même), ferme le port SSH en firewalld.
Procédure manuelle¶
- Ajout du dépôt dans la console Veeam Backup & Replication (hors périmètre de ce dépôt IaC, produit tiers non provisionné ici) → déploiement du Data Mover par Veeam via SSH et le compte
veeamrepo. - Constat à traiter avant toute reprise : les 4 VM
INDSAUV001-004observées sur vCenter (voir Architecture) suggèrent qu'un déploiement manuel plus large (serveur B&R Windows + appliance(s) repository/proxy via l'ISO officielVeeamJeOS) a été entamé en dehors de tout IaC, indépendamment de ce projet Terraform/Ansible. Les 4 VM sont actuellement hors tension et sans réseau actif — état de préparation, pas de service rendu. Avant de relancer un travail sur Veeam, clarifier avec le user lequel des deux chemins est la cible réelle (le repository Terraform/Ansible de ce dépôt, ou la construction manuelle déjà entamée) pour éviter un doublon. - Si le chemin Terraform/Ansible de ce dépôt est confirmé : renommer
veeam-repo01→INDSAUV005dansvariables.tf/terraform.tfvarsavant l'apply (voir Provisioning Terraform).
Procédure de déploiement¶
terraform apply # provisionne la VM et son disque data
cd ansible && ansible-playbook site.yml # FS, compte dépôt, accès réseau
# --- ajout manuel du dépôt dans la console Veeam (hors IaC) ---
ansible-playbook post-hardening.yml -e @/root/.hap_secrets.yml # IRRÉVERSIBLE : coupe SSH
Contrôle de santé / Vérification¶
Aucune VM opérationnelle actuellement (ni via ce projet Terraform — state vide —, ni les 4 VM manuelles constatées — toutes hors tension) : rien à vérifier en fonctionnement au 2026-07-19. Pour un futur déploiement via ce dépôt :
ssh veeamrepo@<ip> 'df -h /mnt/veeam-repo && xfs_info /mnt/veeam-repo | grep reflink'
ssh veeamrepo@<ip> 'chronyc tracking'
Points d'attention¶
Étape irréversible
post-hardening.yml coupe SSH — à ne jouer qu'après confirmation que le dépôt est bien opérationnel côté console Veeam, car plus aucune gestion Ansible/SSH n'est possible ensuite (gestion uniquement via la console vSphere).
- Divergence état réel / IaC : cette page décrit un projet Terraform/Ansible cohérent et prêt à appliquer, mais qui ne reflète pas ce qui existe réellement sur vCenter au 2026-07-19 (4 VM manuelles, éteintes, jamais provisionnées par ce code). Ne pas supposer qu'un service Veeam est opérationnel sur la seule base de ce dépôt.
- Nom de VM cible (
veeam-repo01) pas encore aligné sur la conventionIND<SEGMENT><NNN>, contrairement aux VM manuelles déjà présentes sur le même segment (INDSAUV001-004). - IP encore statique (pas de lookup NetBox) — à harmoniser avec le reste de la flotte si ce projet est un jour réappliqué.
- Ce dépôt ne configure, dans tous les cas, que la cible de stockage (repository) ; la définition des jobs de sauvegarde (quelles VM, planification, rétention) se ferait entièrement dans la console Veeam B&R, hors de ce dépôt IaC.
- Le serveur Veeam Backup & Replication lui-même (Windows) n'apparaît dans aucun fichier Terraform/Ansible de ce dépôt — cohérent avec le constat qu'
INDSAUV001(Windows Server 2025) a été créée manuellement, hors IaC, comme les contrôleurs de domaine AD. - Compte dépôt délibérément retiré des droits sudo après le déploiement initial (principe du moindre privilège une fois le Data Mover en place) — s'applique si/quand ce projet est effectivement déployé.