Files
iac-homelab/terraform/prod/inventory.tf
2025-06-09 11:58:11 +02:00

37 lines
1.2 KiB
HCL

# inventory.tf
# On fusionne toutes nos ressources VM en une seule map
locals {
all_lab_vms = merge(
proxmox_virtual_environment_vm.monitoring_vms,
)
}
locals {
# On boucle sur chaque VM créée par Terraform pour enrichir les données.
vms_with_metadata = {
for key, vm in local.all_lab_vms : key => {
# On garde les informations de base
name : vm.name
ip_address : var.monitoring_vms[key].ip
proxmox_node : vm.node_name
# On trouve le tag de l'OS de manière robuste
# - setintersection compare les tags de la VM avec notre liste d'OS connus.
# - Le résultat est une liste avec l'élément commun (ex: ["ubuntu"]).
# - one() prend cet unique élément et échoue si on trouve 0 ou plus d'un OS, ce qui est une sécurité.
os_distro : one(setintersection(local.known_os_tags, toset(vm.tags)))
}
}
}
# Création du fichier d'inventaire pour Ansible
resource "local_file" "ansible_inventory" {
filename = "${path.module}/../../ansible/inventory/01_lab_hosts.yml"
# On envoie notre nouvelle map enrichie au template !
content = templatefile("${path.module}/templates/inventory.yml.tftpl", {
vms = local.vms_with_metadata # On utilise la nouvelle variable locale
})
}