Mengenal Otomatisasi Homelab Proxmox dengan Terraform dan Ansible

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

KomponenFungsi
ProxmoxMenjalankan virtual machine
TerraformMembuat dan mengelola VM
Cloud-initMenyiapkan konfigurasi awal dan SSH key
AnsibleMengatur server setelah VM tersedia
DockerMenjalankan 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.

TerraformAnsible
Membuat infrastrukturMengonfigurasi server
Membuat virtual machineMenginstal aplikasi
Mengelola resource ProxmoxMenjalankan Docker dan container
Menggunakan stateMenggunakan 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

HostnameFungsiIP Address
automation-controllerMenjalankan Terraform dan Ansible192.168.14.80
ubuntu-target01VM target pertama192.168.14.81
ubuntu-target02VM target kedua192.168.14.82
ubuntu-target03VM target ketiga192.168.14.83

Konfigurasi jaringan yang digunakan:

KonfigurasiNilai
Network192.168.14.0/24
Gateway192.168.14.31
Proxmox bridgevmbr0
Metode IPStatic 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

  1. Menyiapkan VM automation-controller.
  2. Menginstal Terraform dan Ansible pada controller.
  3. Menyiapkan template Ubuntu Cloud-init di Proxmox.
  4. Menghubungkan Terraform dengan Proxmox.
  5. Menjalankan Terraform untuk membuat tiga VM target.
  6. Cloud-init mengatur hostname, IP address, user, dan SSH key.
  7. Ansible mengakses seluruh VM target melalui SSH.
  8. Ansible menginstal Docker dan menjalankan container.
  9. Memastikan seluruh VM dan container berjalan dengan baik.

Pembagian Tugas

TahapTools
Membuat VM di ProxmoxTerraform
Mengatur IP dan SSH keyCloud-init
Menginstal DockerAnsible
Menjalankan aplikasiDocker 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

Comments

Leave a Reply

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