Episode ini membahas automasi provisioning VM dengan Terraform dan OpenTofu melalui provider bpg/proxmoxve, otomasi konfigurasi dengan Ansible, serta alur end-to-end dari template cloud-init hingga software stack terkonfigurasi.

Di episode 4 kalian membuat VM dari template secara manual. Episode 17 mengajarkan cara membuat ratusan VM dengan kode: menentukan infrastruktur sebagai file yang bisa direview, diverifikasi, dan diulang — inilah Infrastructure as Code (IaC).
Kita akan memakai Terraform dan OpenTofu dengan provider Proxmox untuk provisioning, Ansible untuk konfigurasi di dalam VM, lalu menggabungkan keduanya dalam satu alur otomatis. Di akhir episode, kalian bisa menulis file, menjalankan satu perintah, dan infrastruktur muncul dengan sendirinya.
Terraform dan OpenTofu adalah tool declarative: kalian mendeskripsikan state akhir, dan tool bekerja mewujudkannya. Untuk Proxmox, provider resmi yang paling matang adalah bpg/proxmoxve — provider komunitas yang dikembangkan dengan dukungan luas dan fitur lengkap.
mkdir proxmox-iac && cd proxmox-iac
cat > versions.tf <<'EOF'
terraform {
required_providers {
proxmox = {
source = "bpg/proxmox"
version = "~> 0.70"
}
}
}
EOF
terraform initPerintah terraform init mengunduh provider sesuai definisi versions.tf. OpenTofu menggunakan alur yang sama persis.
Definisikan VM sebagai sumber daya dalam file .tf:
resource "proxmox_virtual_environment_vm" "web" {
name = "web-01"
node_name = "pve"
vm_id = 200
clone {
vm_id = 9000
}
cpu {
cores = 2
}
memory {
dedicated = 2048
}
network_device {
bridge = "vmbr0"
}
disk {
datastore_id = "local-lvm"
interface = "scsi0"
}
initialization {
ip_config {
ipv4 {
address = "192.168.1.50/24"
gateway = "192.168.1.1"
}
}
user_account {
username = "admin"
keys = [trimspace(file("~/.ssh/id_ed25519.pub"))]
}
}
}Simpan sebagai main.tf, lalu terapkan:
terraform plan
terraform apply -auto-approveProvider bpg/proxmoxve membuat VM dari template 9000, mengkonfigurasi resource dan cloud-init, lalu Proxmox menghidupkannya. Semua hasilnya tercatat sebagai state — kalian bisa mengubah, menghapus, atau meniru VM hanya dengan mengedit file.
Ansible adalah tool imperative berbasis playbook untuk konfigurasi. Modul community.general.proxmox* memungkinkan Ansible mengelola lifecycle VM — membuat, menghentikan, atau menghapus — lewat koneksi ke API Proxmox. Contoh playbook sederhana:
- name: Pastikan VM berjalan
hosts: localhost
connection: local
tasks:
- name: Start VM 200
community.general.proxmox_kvm:
api_host: 192.168.1.10
api_user: root@pam
api_password: "{{ proxmox_password }}"
vmid: 200
state: startedPlaybook ini memastikan VM 200 berjalan, menggunakan kredensial dari variable Ansible Vault untuk keamanan.
Untuk pekerjaan di dalam VM — install paket, menulis konfigurasi, menjalankan service — Ansible bekerja langsung di guest. Buat inventory berisi VM yang sudah dibuat Terraform, lalu jalankan playbook untuk menata software stack:
ansible-playbook -i inventory.yml setup-webserver.ymlPerintah ansible-playbook mengkonfigurasi VM sesuai playbook — idempotent, aman dijalankan berulang, dan hasilnya konsisten.
Kekuatan sejati muncul saat keduanya digabung. Alur standar:
Terraform: template cloud-init -> VM siap
Ansible : VM -> software stack terkonfigurasiKalian bisa menjadwalkan alur ini di CI/CD — setiap kali kode infrastruktur berubah, pipeline membangun kembali environment yang konsisten. Inilah pola yang dipakai tim SRE di produksi.
Info
Simpan semua file IaC di git. Infrastruktur sebagai kode berarti infrastruktur bisa di-review seperti kode: pull request, review, dan changelog untuk setiap perubahan.
Episode 17 membawa kalian ke era IaC: provisioning VM dengan Terraform dan OpenTofu lewat provider bpg/proxmoxve, mengelola lifecycle dengan Ansible, dan menggabungkan keduanya dalam pipeline end-to-end dari template cloud-init hingga software stack siap pakai.
Inti yang harus dibawa pulang:
bpg/proxmoxve adalah standar untuk Terraform dan OpenTofu.Di episode 18 selanjutnya kita akan membahas monitoring, alerting, dan metrics — memantau node dan VM lewat metrik bawaan, mengekspor metrik ke Prometheus dengan pve-exporter, memvisualisasikannya di Grafana, dan mengkonfigurasi alert untuk notifikasi dini. Infrastruktur kalian sudah otomatis; sekarang saatnya membuatnya terlihat dan waspada!