Benoît Courtine



    Navigation
     » Accueil
     » A propos
     » Mentions légales
     » XML Feed

    Terraformisation de l’infrastructure VSphere existante

    11 Feb 2021 (MAJ le 11/02/2021 à 16:41) » ops

    Introduction

    Dans l’article précédent, nous avons vu comment gérer notre infrastructure VSphere avec Terraform.

    Lorsque nous mettons cela en place sur un serveur VSphere existant, il peut déjà contenir des machines virtuelles, qui ne sont pas gérées par Terraform. On peut donc souhaiter réintégrer ces machines dans Terraform.

    Une solution est évidemment de les supprimer pour les recréer avec Terraform, mais on ne souhaite pas nécessairement utiliser une méthode aussi radicale.

    Déclaration de la machine

    En utilisant le module décrit dans l’article précédent, nous déclarons la machine, en reprenant ses caractéristiques :

    Fichier main.tf
    module "vm_preexistante" {
      source = "./modules/ubuntu20.04"
    
      vm_hostname = "vm_preexistante"
      vm_ip = "192.168.0.15"
      vm_num_cpus = 4
      vm_memory = 4096
      vm_datastore = "datastore1"
      vm_disks = {
        "disk0" = { size = 60 }
    }
    À ce stade, si on tente d’appliquer le fichier (ou si on demande le plan), Terraform ignorant que la machine existe déjà va vouloir la créer.

    Import de la machine

    Heureusement, il existe une commande dédiée pour demander à Terraform de réconcilier la VM déclarée et celle qui existe.

    Import d’une machine existante
    terraform import module.vm_preexistante.vsphere_virtual_machine.ubuntu_server_2004 /datacenter/vm/vm_preexistante

    Pour que cette commande fonctionne, quelques points d’attention :

    • le nom ubuntu_server_2004 doit correspondre exactement à celui de la resource Terraform déclarée dans le module ;

    • le nom datacenter est le nom réel du Datacenter VSphere, et non le nom qu’on a donnée à la donnée Terraform vsphere_datacenter ;

    • le /vm qui suit est une constante obligatoire ;

    • le nom vm_preexistante qui suit est le nom VSphere de la machine virtuelle existante (éventuellement précédé de son arborescence VSphere).

    Un fois la machine importée, on vérifie via terraform plan que Terraform ne prévoit plus de créer la machine virtuelle mais uniquement de la mettre à jour. Si le plan nous convient, on l’applique pour finaliser l’opération : la machine est maintenant gérée via Terraform.

    Conclusion

    On peut ainsi migrer doucement l’ensemble des machines qui existaient dans une gestion centralisée via Terraform…​ pour plus facilement toutes les détruire en une seule commande.