first commit
This commit is contained in:
36
terraform/prod/inventory.tf
Normal file
36
terraform/prod/inventory.tf
Normal file
@@ -0,0 +1,36 @@
|
||||
# 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
|
||||
})
|
||||
}
|
||||
Reference in New Issue
Block a user