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
    3. Vérifier l'installation de TERRAFORM:
      root@MGT-FRONT-01:~# terraform -v
      Terraform v1.5.2
      on linux_amd64
Premier déploiement de machine
  1. Créer un dossier de travail:
    mkdir VM_CREATION && cd VM_CREATION
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
}


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
}