Membuat virtual machine di Proxmox melalui web interface cukup mudah. Namun, jika VM yang dibuat semakin banyak, proses mengatur CPU, RAM, disk, jaringan, dan sistem operasi secara manual akan terasa berulang.
Artikel ini membahas cara mengotomatisasi homelab Proxmox menggunakan Terraform, Cloud-init, dan Ansible.
Gambaran Homelab
Dalam skenario ini, Terraform digunakan untuk membuat tiga virtual machine Ubuntu di Proxmox.
Setelah VM tersedia, Cloud-init memasukkan SSH key. Selanjutnya, Ansible terhubung ke masing-masing VM untuk menginstal Docker dan menjalankan container.
Alur Otomatisasi
File konfigurasi
│
▼
Terraform
Membuat 3 VM Ubuntu
│
▼
Cloud-init
Memasukkan SSH key
│
▼
Ansible
Menginstal Docker
│
▼
Container berjalan
Fungsi Setiap Komponen
| Komponen | Fungsi |
|---|---|
| Proxmox | Menjalankan virtual machine |
| Terraform | Membuat dan mengelola VM |
| Cloud-init | Menyiapkan konfigurasi awal dan SSH key |
| Ansible | Mengatur server setelah VM tersedia |
| Docker | Menjalankan aplikasi dalam container |
Peran Terraform
Terraform digunakan untuk menyediakan infrastruktur di Proxmox.
Konfigurasi VM seperti nama, CPU, RAM, disk, dan jaringan dituliskan dalam file Terraform. Dengan demikian, VM tidak perlu dibuat satu per satu melalui web interface.
Terraform juga menyimpan state untuk mencatat infrastruktur yang sudah dibuat dan perubahan yang perlu diterapkan.
Peran Cloud-init
Cloud-init menjalankan konfigurasi awal ketika VM pertama kali dibuat.
Dalam artikel ini, Cloud-init digunakan untuk memasukkan SSH key ke dalam VM Ubuntu. SSH key tersebut memungkinkan Ansible masuk ke server tanpa menggunakan password secara manual.
Peran Ansible
Setelah VM aktif dan dapat diakses melalui SSH, Ansible menjalankan konfigurasi di dalam server.
Tugas Ansible dalam skenario ini meliputi:
- Menghubungkan ke VM melalui SSH.
- Menginstal Docker.
- Menyiapkan kebutuhan server.
- Menjalankan container.
Terraform dan Ansible
Terraform dan Ansible memiliki tugas yang berbeda.
| Terraform | Ansible |
|---|---|
| Membuat infrastruktur | Mengonfigurasi server |
| Membuat virtual machine | Menginstal aplikasi |
| Mengelola resource Proxmox | Menjalankan Docker dan container |
| Menggunakan state | Menggunakan inventory dan playbook |
Secara sederhana:
Terraform membuat server, sedangkan Ansible mengatur isi server.
Keuntungan Pendekatan Ini
Dengan menyimpan konfigurasi sebagai kode, homelab menjadi:
- Lebih konsisten.
- Mudah dibuat ulang.
- Tidak bergantung pada langkah manual.
- Dapat disimpan dalam version control.
- Lebih mudah dikelola ketika jumlah VM bertambah.
Rencana Percobaan di Homelab
Untuk mempraktikkan skenario ini, saya akan menggunakan satu VM sebagai controller dan tiga VM Ubuntu sebagai target. Seluruh server berada pada network 192.168.14.0/24.
Rancangan IP Address
| Hostname | Fungsi | IP Address |
|---|---|---|
automation-controller | Menjalankan Terraform dan Ansible | 192.168.14.80 |
ubuntu-target01 | VM target pertama | 192.168.14.81 |
ubuntu-target02 | VM target kedua | 192.168.14.82 |
ubuntu-target03 | VM target ketiga | 192.168.14.83 |
Konfigurasi jaringan yang digunakan:
| Konfigurasi | Nilai |
|---|---|
| Network | 192.168.14.0/24 |
| Gateway | 192.168.14.31 |
| Proxmox bridge | vmbr0 |
| Metode IP | Static melalui Cloud-init |
Topologi Homelab
Network 192.168.14.0/24
│
Proxmox VE / vmbr0
│
┌───────────────────┴───────────────────┐
│ │
automation-controller VM Target Ubuntu
192.168.14.80 ┌────────────────────────┐
Terraform │ target01 192.168.14.81 │
Ansible │ target02 192.168.14.82 │
│ target03 192.168.14.83 │
└────────────────────────┘
Alur Percobaan
- Menyiapkan VM
automation-controller. - Menginstal Terraform dan Ansible pada controller.
- Menyiapkan template Ubuntu Cloud-init di Proxmox.
- Menghubungkan Terraform dengan Proxmox.
- Menjalankan Terraform untuk membuat tiga VM target.
- Cloud-init mengatur hostname, IP address, user, dan SSH key.
- Ansible mengakses seluruh VM target melalui SSH.
- Ansible menginstal Docker dan menjalankan container.
- Memastikan seluruh VM dan container berjalan dengan baik.
Pembagian Tugas
| Tahap | Tools |
|---|---|
| Membuat VM di Proxmox | Terraform |
| Mengatur IP dan SSH key | Cloud-init |
| Menginstal Docker | Ansible |
| Menjalankan aplikasi | Docker container |
Hasil yang Diharapkan
Setelah percobaan selesai, tiga VM Ubuntu dapat dibuat secara otomatis tanpa konfigurasi manual melalui web interface Proxmox.
Seluruh VM memiliki IP statis, dapat diakses melalui SSH dari controller, dan sudah menjalankan Docker serta container yang ditentukan melalui Ansible.
Kesimpulan
Artikel ini menunjukkan cara menggabungkan Proxmox, Terraform, Cloud-init, dan Ansible untuk membangun homelab otomatis.
Terraform membuat tiga VM Ubuntu, Cloud-init menyiapkan SSH key, kemudian Ansible menginstal Docker dan menjalankan container.
Dengan pembagian tersebut, proses pembangunan homelab menjadi lebih terstruktur, dapat diulang, dan lebih mudah dikelola.
Referensi
Proxmox Homelab Automation with Ansible & Terraform
https://proxmox.mrplanb.com/proxmox-ansible-terraform-homelab







