Panduan: Membangun VM Cloud-Init Ready di Proxmox

Otomatisasi deployment VM (Virtual Machine) di Proxmox dapat dicapai dengan menggunakan Cloud-Init. Panduan ini akan menunjukkan cara membuat Template VM Cloud-Init dari image standar Ubuntu Cloud, memungkinkan clone VM baru dalam hitungan detik dengan konfigurasi otomatis seperti IP, SSH Key, dan hostname tanpa interaksi konsol.

Otomatisasi dengan Cloud-Init

 

Dalam lingkungan virtualisasi modern, seperti Proxmox VE, deployment manual Virtual Machine (VM) memakan waktu dan rentan terhadap kesalahan. Solusi untuk masalah ini adalah Cloud-Init.

Cloud-Init adalah package standar industri yang digunakan oleh Cloud Provider besar (AWS, Azure, Google Cloud) untuk menangani inisialisasi awal server (First Boot). Ia secara otomatis mengelola:

  • Hostname: Mengatur nama server baru.

  • Networking: Mengonfigurasi IP statis atau DHCP.

  • User Management: Membuat user awal, menetapkan kata sandi, dan mengimpor SSH Key publik (yang krusial untuk akses tanpa kata sandi).

  • Package Management: Menjalankan script atau instalasi paket saat boot pertama.

Dengan membangun Template VM Cloud-Init Ready di Proxmox, Anda dapat clone VM baru dalam hitungan detik, dan konfigurasi uniknya akan diterapkan secara otomatis saat VM tersebut pertama kali dihidupkan. Ini mengubah server Proxmox Anda menjadi platform cloud mini.


 

Pilar 1: Persiapan Awal dan Persyaratan Sistem

 

Membuat template Cloud-Init memerlukan image OS tertentu yang sudah menyertakan paket cloud-init.

 

1.1 Persyaratan Sistem

 

KomponenSpesifikasiKeterangan
Proxmox VEVersi TerbaruSudah terinstal dan berfungsi penuh.
OS ImageUbuntu Cloud ImageHarus menggunakan image khusus cloud (bukan Desktop/Server ISO biasa).
StorageLokal atau NFS/CephHarus memiliki storage yang cukup untuk menyimpan template dan clone VM.

 

1.2 Mendapatkan Cloud Image (Ubuntu 24.04 LTS)

 

Kita akan menggunakan wget atau curl di Shell Proxmox untuk mengunduh image Ubuntu 24.04 LTS (atau versi terbaru).

  1. Akses Shell Proxmox Anda (melalui Web Interface atau SSH).

  2. Navigasi ke direktori tempat Anda menyimpan file ISO/Template (biasanya local storage di /var/lib/vz/template/iso/).

    Bash
     
    # Pindah ke direktori ISO/Template
    cd /var/lib/vz/template/iso
    
    # Unduh image Ubuntu 24.04 LTS Cloud (Ganti URL jika versi berbeda)
    wget https://cloud-images.ubuntu.com/noble/current/noble-server-cloudimg-amd64.img
    

 

Pilar 2: Pembuatan VM Dasar dan Impor Disk

 

Setelah image diunduh, kita akan membuat VM baru yang akan bertindak sebagai master template.

 

2.1 Langkah 3: Membuat VM Baru (Tanpa OS)

 

Buat VM baru melalui Web Interface Proxmox, tetapi JANGAN instal OS apa pun.

  1. Klik “Create VM”.

  2. General: Tetapkan ID VM yang unik (misalnya, 9000) dan berikan nama (misalnya, cloud-init-ubuntu-template). ID 9000 adalah praktik umum untuk template di Proxmox.

  3. OS: Pilih “Do not use any media” (Kita akan mengimpor disk nanti).

  4. System: Gunakan default.

  5. Hard Disk: Biarkan “Bus/Device” sebagai default (SCSI). Atur Disk size sekecil mungkin (misalnya, 4 GB). PENTING: Kita akan menghapus disk ini nanti, jadi ukuran tidak terlalu penting.

  6. CPU: Atur 2 socket dan 2 core (2×2).

  7. Memory: Tetapkan 2 GB (2048 MB) RAM.

  8. Network: Gunakan Bridge (vmbr0 atau bridge manajemen Anda).

Selesaikan Wizard. Jangan start VM ini.

 

2.2 Langkah 4: Impor Disk Cloud dan Konfigurasi Hardware

 

Sekarang kita akan menghapus disk kosong yang dibuat di Langkah 3 dan menggantinya dengan disk dari Cloud Image yang sudah diunduh.

  1. Hapus Disk Dummy:

    • Klik VM ID 9000 Anda.

    • Pilih Hardware.

    • Pilih entri Hard Disk (misalnya, scsi0).

    • Klik “Detach” lalu “Remove”.

  2. Impor Disk Cloud: Kembali ke Shell Proxmox dan impor file .img yang sudah diunduh ke VM 9000. Ganti local-lvm dengan nama storage utama Anda jika berbeda.

    Bash
     
    # Sintaks: qm importdisk <VMID> <path_to_image> <storage>
    qm importdisk 9000 /var/lib/vz/template/iso/noble-server-cloudimg-amd64.img local-lvm
    
  3. Lampirkan Disk yang Diimpor:

    • Kembali ke Hardware VM 9000.

    • Anda akan melihat Unused Disk baru.

    • Pilih “Edit” pada Unused Disk tersebut.

    • Pastikan Bus/Device disetel ke SCSI dan SSD Emulation dicentang (Opsional, untuk kinerja).

    • Klik “Add”.

 

2.3 Langkah 5: Finalisasi Konfigurasi Template

 

Beberapa penyesuaian wajib harus dilakukan untuk memastikan Cloud-Init berfungsi dengan baik saat cloning.

  1. Atur Boot Disk:

    • Pilih Options pada VM 9000.

    • Pilih Boot Order.

    • Pastikan SCSI0 (disk yang baru diimpor) adalah yang pertama.

  2. Tambahkan Cloud-Init Device:

    • Pilih Hardware pada VM 9000.

    • Klik “Add” lalu pilih “Cloud-Init Drive”. Biarkan storage sebagai default. Ini adalah disk virtual yang digunakan Proxmox untuk menyuntikkan konfigurasi ke VM.

  3. Atur Serial Console:

    • Pilih Hardware pada VM 9000.

    • Klik “Add” lalu pilih “Serial Port”.

    • Klik “Add” lagi dan tambahkan “Display” sebagai “Serial Console”. Ini memastikan Anda dapat melihat boot process saat debugging atau jika akses jaringan gagal.

  4. Konfigurasi Cloud-Init:

    • Pilih Cloud-Init pada VM 9000.

    • User/Username: Atur default user (misalnya, ubuntu atau admin).

    • Password: Tetapkan kata sandi (opsional, jika Anda tidak menggunakan SSH Key).

    • IP Config: Setel ke DHCP (atau Static jika Anda menggunakan reserved IP).

 

2.4 Langkah 6: Konversi menjadi Template

 

Langkah terakhir yang membedakan VM biasa dengan Template Cloud-Init adalah mengonversinya.

  1. Klik kanan pada VM 9000 di panel kiri.

  2. Pilih “Convert to Template”.

VM 9000 Anda sekarang akan berstatus Template dan tidak dapat di-start. Ia hanya dapat di-clone.


 

Pilar 3: Deployment VM dari Template Cloud-Init

 

Sekarang Anda memiliki master template, Anda dapat membuat VM baru dengan cepat dan otomatis.

 

3.1 Langkah 7: Proses Cloning

 

  1. Klik kanan pada Template 9000.

  2. Pilih “Clone”.

  3. Mode: Pilih “Full Clone” (Direkomendasikan. Ini adalah salinan lengkap, bukan hanya pointer).

  4. Clone ID: Tetapkan ID VM baru (misalnya, 101).

  5. Clone Name: Beri nama VM baru (misalnya, web-server-01).

  6. Klik “Clone”.

 

3.2 Langkah 8: Konfigurasi Cloud-Init dan SSH Key

 

Setelah proses cloning selesai, VM baru (101) akan muncul. Anda perlu menetapkan konfigurasi Cloud-Init yang unik:

  1. Pilih VM 101.

  2. Pilih Cloud-Init.

  3. Hostname: Ganti nama menjadi web-server-01.

  4. IP Configuration: Tetapkan IP Statis jika diperlukan.

    • Contoh Statis IPv4: 192.168.1.5/24

    • Gateway: 192.168.1.1

  5. SSH Public Key: Ini adalah metode login terbaik. Salin dan tempelkan kunci publik SSH Anda di bidang ini.

  6. Klik “Resize Disk”: Pilih disk scsi0 dan atur ukuran disk baru (misalnya, 100G). Ini akan dieksekusi oleh Cloud-Init saat boot pertama.

 

3.3 Langkah 9: First Boot (Inisialisasi)

 

Sekarang, Anda dapat start VM 101.

  1. Klik “Start”.

  2. Pilih Console untuk melihat proses boot. Anda akan melihat pesan Cloud-Init sedang berjalan:

    • Mengatur hostname (web-server-01).

    • Mengonfigurasi IP Statis.

    • Mengimpor SSH Key.

    • Melakukan resize partisi disk (memperluas filesystem ke 100 GB).

Setelah boot selesai, Anda dapat langsung login melalui SSH (tanpa perlu password) menggunakan kunci SSH yang Anda masukkan di Langkah 8.

Bash
 
# Contoh Login SSH
ssh ubuntu@192.168.1.5

 

Pilar 4: Kustomisasi Lanjutan dan Integrasi Script

 

Kekuatan sebenarnya dari Cloud-Init adalah kemampuannya untuk menjalankan script khusus (user data) pada boot pertama.

 

4.1 Menggunakan User Data (Script Setup)

 

Anda dapat menggunakan bidang User Data di menu Cloud-Init VM (101) untuk menginstal aplikasi secara otomatis.

  1. Pilih VM 101 > Cloud-Init.

  2. Gulir ke bawah ke bidang User Data.

  3. Tempelkan script berikut (harus dimulai dengan #!):

    YAML
     
    #cloud-config
    package_upgrade: true
    packages:
      - nginx
      - git
    runcmd:
      - [ sh, -c, "echo '<h1>Welcome to Cloud-Init Automated NGINX</h1>' > /var/www/html/index.html" ]
      - [ systemctl, enable, nginx ]
      - [ systemctl, start, nginx ]
    

    Penjelasan: Script ini akan meng-update paket sistem, menginstal Nginx dan Git, dan membuat file index.html kustom saat boot pertama.

  4. Setelah Anda start ulang VM ini, ia tidak hanya akan dikonfigurasi secara jaringan, tetapi juga akan memiliki Web Server Nginx yang berjalan secara otomatis.

 

4.2 Studi Kasus: Template untuk Shared Hosting

 

Dalam kasus Shared Hosting (seperti panduan sebelumnya dengan CyberPanel), Anda dapat membuat Template Cloud-Init yang didedikasikan.

  1. Buat Template khusus (misalnya, CyberPanel-Cloud-Template).

  2. Di bagian User Data, masukkan script untuk instalasi CyberPanel dan prasyaratnya.

    YAML
     
    #cloud-config
    runcmd:
      # Pastikan curl sudah terinstal
      - [ apt, update ]
      - [ apt, install, -y, curl ]
      # Jalankan script instalasi CyberPanel (ini hanya contoh. Instalasi interaktif lebih disarankan untuk CyberPanel)
      - [ sh, -c, "sudo su - -c 'sh <(curl https://cyberpanel.net/install.sh)'" ]
    

Meskipun script instalasi control panel cenderung interaktif (membutuhkan input user), penggunaan User Data untuk instalasi paket dasar dan security hardening (misalnya, menginstal fail2ban) adalah praktik yang sangat efisien.


 

Kesimpulan: Efisiensi Maksimal dengan Template Cloud-Init

 

Dengan membuat dan menggunakan Template VM Cloud-Init Ready, Anda telah mengadopsi metodologi cloud-native di infrastruktur Proxmox on-premise Anda.

Proses Download Image → Impor Disk → Attach Cloud-Init Drive → Convert to Template memungkinkan Anda untuk:

  1. Deployment Cepat: Mengurangi waktu provisioning VM dari puluhan menit menjadi hitungan detik.

  2. Otomatisasi Penuh: Mengamankan VM baru secara instan dengan SSH Key dan IP Statis yang unik.

  3. Konsistensi: Memastikan setiap VM baru dimulai dari base image yang identik dan stabil.

Ini adalah fondasi yang kokoh untuk Infrastructure as Code (IaC) dan operasi DevOps di lingkungan Proxmox.

 

Perintah Kunci Cloud-Init dan VM

 

Gunakan perintah ini untuk memverifikasi dan debug Cloud-Init di dalam Shell VM yang sudah di-deploy:

Bash
 
# Perintah Kunci: Melihat status Cloud-Init (Inside VM)
cloud-init status

# Perintah Kunci: Melihat log Cloud-Init untuk debugging (Inside VM)
cat /var/log/cloud-init-output.log

# Perintah Kunci: Mengaktifkan ulang Cloud-Init untuk pengujian (Inside VM)
sudo cloud-init clean --reboot
Share the Post:

Related Posts