Skip to main content

Création d'une VM Linux Avec Terraform

    1.  Paramétrage de PROXMOX (création d'une clé d'API)

      image.png

      image.png

      image.png
      Attention Il faut bien noté le token !!

    2.  Installation de TERRAFORM sur une DEBIAN (Créer un container de management)
      1. Suivre la documentation officielle https://developer.hashicorp.com/terraform/tutorials/aws-get-started/install-cli
      2. Vérifier l'installation de TERRAFORM:
        root@MGT-FRONT-01:~# terraform -v
        Terraform v1.5.2
        on linux_amd64
    3. Premier déploiement de machine
      1. Créer un dossier de travail:
        mkdir VM_CREATION && cd VM_CREATION
      2. On va créer un fichier provider.tf ce fichier va référencer les module que nous utiliserons pour la création des VM.
        # Creation du fichier provider.tf
        nano provider.tf

        Contenu du fichier:

        terraform {
          required_providers {
            proxmox = {
              source = "telmate/proxmox"
              #version = "2.9.11"
            }
          }
        }
        provider "proxmox" {
          # url de Proxmox
          pm_api_url = "https://192.168.1.179:8006/api2/json"
          # api token id is in the form of: <username>@pam!<tokenId>
          pm_api_token_id = "terraform@pve!fbf5f330-09b3-4282-b949-0303a1328ab8"
          pm_tls_insecure = true
          pm_parallel = 2
        }


      3. On créer le fichier web.tf:
        nano web.tf

        Contenu du fichier:

        resource "proxmox_vm_qemu" "web-server-1" {
          count = 1
          name = "web-front-01"
          target_node = "pve-front-01"
          vmid = "0"
          clone = "Ubuntu22-Template"
          full_clone = "true"
          agent = 1
          os_type = "cloud-init"
          cores = 1
          sockets = 1
          cpu = "kvm64"
          oncreate = true
        
          memory = 1024
          scsihw = "virtio-scsi-pci"
          bootdisk = "scsi0"
          disk {
            slot = 0
            size = "8G"
            type = "scsi"
            storage = "local-lvm"
            iothread = 0
          }
        
          network {
            model = "virtio"
            bridge = "vmbr1"
          }
        
          lifecycle {
            ignore_changes = [
              network,
            ]
          }
        
          ipconfig0 = "ip=172.16.250.3/24,gw=172.16.250.1"
          #Si vous avez des clés SSH vous pouvez les mettre ici
          sshkeys = <<EOF
            ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIIeq/iHCth8j1aKG/DMq0rd3bveLgqksAkwBOhYgAFG1 kvega@fr-lap10398
          EOF
        }