Chuyển tới nội dung

Tạo VM trên Promox

1️⃣ Điều kiện & Chuẩn bị

Trên Proxmox

  • Proxmox VE đã hoạt động
  • template VM (Linux/Cloud-Init)
    👉 Khuyến nghị: Cloud-Init template
  • Có storage (vd: local-lvm)
  • Có bridge network (vd: vmbr0)

Trên máy chạy Terraform

  • Terraform >= 1.x
  • Token API của Proxmox (khuyến nghị)

2️⃣ Tạo API Token trên Proxmox (Best Practice)

Trên Proxmox UI:

Datacenter → Permissions → API Tokens

User: terraform@pve

  • Token ID: tf-token
  • Uncheck Privilege Separation (hoặc cấp quyền đầy đủ)

Gán quyền:

Datacenter → Permissions → Add → API Token Permission
Role: PVEAdmin

3️⃣ Khai báo Provider Proxmox

Dùng provider phổ biến: Telmate/proxmox

terraform {
  required_providers {
    proxmox = {
      source  = "Telmate/proxmox"
      version = "~> 3.0"
    }
  }
}

provider "proxmox" {
  pm_api_url          = "https://proxmox.example.com:8006/api2/json"
  pm_api_token_id     = "terraform@pve!tf-token"
  pm_api_token_secret = "TOKEN_SECRET"
  pm_tls_insecure     = true
}

4️⃣ Chuẩn bị Template Cloud-Init (Quan trọng)

VM template cần:

  • Cloud-Init enabled
  • Disk bus: SCSI
  • Network: VirtIO
  • QEMU Guest Agent

👉 VM template sẽ được clone để tạo VM mới.

5️⃣ Khai báo Resource tạo VM

Ví dụ tạo VM Linux từ template

resource "proxmox_vm_qemu" "vm" {
  name        = "vm-ubuntu-01"
  target_node = "pve-node1"
  clone       = "ubuntu-22.04-template"

  cores   = 2
  sockets = 1
  memory  = 4096
  cpu     = "host"

  scsihw = "virtio-scsi-pci"
  boot   = "order=scsi0"

  disk {
    slot     = 0
    size     = "40G"
    type     = "scsi"
    storage  = "local-lvm"
    iothread = 1
  }

  network {
    model  = "virtio"
    bridge = "vmbr0"
  }

  os_type = "cloud-init"

  ipconfig0 = "ip=dhcp"
  ciuser    = "admin"
  sshkeys   = file("~/.ssh/id_rsa.pub")

  agent = 1
}

6️⃣Khởi tạo Terraform

terraform init

➡️ Tải provider Proxmox.

7️⃣Xem kế hoạch triển khai

terraform plan

➡️ Kiểm tra VM sẽ được clone và cấu hình như thế nào.

8️⃣Tạo VM trên Proxmox

terraform apply

➡️ Sau vài giây → VM xuất hiện trên Proxmox và tự boot.

9️⃣ Kiểm tra trên Proxmox

🔁 Huỷ VM khi không cần

terraform destroy

Liên hệ