Hasil Deploy VM Ubuntu di Proxmox dengan Terraform

Pada artikel sebelumnya, saya sudah menyiapkan seluruh kebutuhan Terraform untuk Proxmox, mulai dari Terraform Controller, API Token, konfigurasi network, hingga file Terraform untuk membuat tiga VM Ubuntu.

Kali ini saya akan mengaplikasikan konfigurasi yang sudah dibuat tersebut dan melihat hasil deployment-nya langsung di homelab.

Topologi homelab

Seluruh perangkat berada pada network 192.168.14.0/24.

HostnameFungsiIP Address
terraform-controllerMenjalankan Terraform192.168.14.80
ubuntu-tf-01VM hasil Terraform192.168.14.81
ubuntu-tf-02VM hasil Terraform192.168.14.82
ubuntu-tf-03VM hasil Terraform192.168.14.83

Alurnya kurang lebih seperti berikut:

Terraform Controller
192.168.14.80
        │
        │ Proxmox API
        ▼
     Proxmox VE
        │
        ├── ubuntu-tf-01 → 192.168.14.81
        ├── ubuntu-tf-02 → 192.168.14.82
        └── ubuntu-tf-03 → 192.168.14.83

Cara Kerjanya

Saya menggunakan provider bpg/proxmox sebagai penghubung antara Terraform dengan Proxmox API.

Secara sederhana, Terraform tidak membuat VM dengan mengklik Web UI. Terraform mengirim request ke API Proxmox menggunakan API Token yang sudah dibuat.

Konfigurasi Terraform
        │
        ▼
bpg/proxmox Provider
        │
        │ API Request
        ▼
Proxmox API :8006
        │
        ▼
Resource dibuat di Proxmox

API tersebut memungkinkan Terraform untuk mengunduh image, membuat VM, mengatur disk, network, Cloud-init, hingga menyalakan VM.

Terraform kemudian menjalankan beberapa proses secara otomatis:

  1. Mengunduh Ubuntu 24.04 Cloud Image.
  2. Mengimport image ke storage Proxmox.
  3. Membuat tiga VM.
  4. Membuat disk dari Ubuntu Cloud Image.
  5. Mengatur CPU, RAM, disk, dan network.
  6. Mengatur IP statis melalui Cloud-init.
  7. Memasukkan SSH public key.
  8. Menyalakan seluruh VM.

Dengan cara ini, saya tidak perlu menulis resource VM sebanyak tiga kali. Terraform melakukan iterasi berdasarkan hostname, VM ID, dan IP yang sudah ditentukan.

Menjalankan Plan yang Sudah Disimpan

Pada artikel panduan sebelumnya, konfigurasi sudah diperiksa menggunakan:

terraform init
terraform validate

Kemudian rencana deployment dibuat dan disimpan ke file tfplan:

terraform plan -out=tfplan

Hasil plan menunjukkan:

Plan: 4 to add, 0 to change, 0 to destroy.

Empat resource tersebut terdiri dari:

ResourceJumlah
Ubuntu Cloud Image1
VM Ubuntu3

Untuk menjalankan rencana yang sudah disimpan tersebut, saya cukup menjalankan:

terraform apply tfplan

Dengan menggunakan saved plan, Terraform menerapkan perubahan yang sebelumnya sudah diperiksa pada saat terraform plan.

Hasil Deployment

Setelah proses selesai, Terraform berhasil membuat ketiga VM sesuai konfigurasi.

181  ubuntu-tf-01  → 192.168.14.81
182  ubuntu-tf-02  → 192.168.14.82
183  ubuntu-tf-03  → 192.168.14.83

Masing-masing VM sudah memiliki CPU, RAM, disk, IP statis, Cloud-init, dan SSH key sesuai konfigurasi Terraform.

Ketiga VM juga langsung terlihat pada Proxmox dan berada dalam kondisi Running.

Konfigurasi cloud-init

Untuk memastikan VM benar-benar dapat digunakan, saya mencoba mengakses salah satunya dari Terraform Controller:

ssh ubuntu@192.168.14.81

Artinya VM tidak hanya berhasil dibuat di Proxmox, tetapi juga sudah mendapatkan konfigurasi awal dan dapat diakses melalui SSH.

Terraform State

VM yang dibuat tidak hanya dibuat sekali oleh Terraform, tetapi selanjutnya juga dikelola oleh Terraform.

Resource tersebut dapat dilihat menggunakan:

terraform state list

Contohnya:

proxmox_download_file.ubuntu_cloud_image
proxmox_virtual_environment_vm.ubuntu_vm["ubuntu-tf-01"]
proxmox_virtual_environment_vm.ubuntu_vm["ubuntu-tf-02"]
proxmox_virtual_environment_vm.ubuntu_vm["ubuntu-tf-03"]

State digunakan Terraform untuk mencatat resource yang dikelolanya. Karena itu, konfigurasi yang sama nantinya dapat digunakan untuk menambah, mengubah, atau menghapus VM.

Kesimpulan

Percobaan ini berhasil membuat 3 VM Ubuntu di Proxmox secara otomatis menggunakan Terraform.

Rancang dan konfigurasi
      ↓
terraform plan -out=tfplan
      ↓
terraform apply tfplan
      ↓
3 VM Ubuntu Running

Jika sebelumnya pembuatan VM dilakukan satu per satu melalui Web UI, sekarang konfigurasi infrastrukturnya sudah tersimpan sebagai kode dan dapat digunakan kembali.

Percobaan ini juga menjadi dasar sebelum melanjutkan otomatisasi berikutnya menggunakan Ansible untuk melakukan konfigurasi sistem setelah VM selesai dibuat.

Referensi

Comments

Leave a Reply

Your email address will not be published. Required fields are marked *