Otomasi Infrastruktur: Bash Scripting untuk Manajemen VM Ubuntu Cloud-Init di Proxmox

Kekuatan Bash dan Cloud-Init

 

Dalam lingkungan hypervisor seperti Proxmox Virtual Environment (VE), kebutuhan untuk dengan cepat menyediakan (provision) dan menghapus lingkungan pengujian (testing environments) atau server produksi sementara sering muncul. Melakukan langkah-langkah ini secara manual melalui antarmuka web (GUI) Proxmox akan memakan waktu dan rentan terhadap kesalahan (human error).

Solusinya adalah mengintegrasikan dua alat kuat:

  1. Bash Scripting: Memberikan logika otomatisasi dan eksekusi berurutan dari perintah command-line Proxmox (qm).

  2. Cloud-Init: Memungkinkan kustomisasi VM pada boot pertama (pengaturan hostname, IP, SSH Key, dll.) tanpa interaksi pengguna.

Script yang akan kita buat ini tidak hanya akan membuat VM, tetapi juga akan memperluas disk secara otomatis, mengatur IP Statis, dan mengimpor SSH Key—semua hanya dengan menjalankan satu baris perintah.


 

Pilar 1: Prasyarat dan Persiapan Template Cloud-Init

 

Script ini mengasumsikan Anda telah melakukan langkah-langkah dasar pembuatan template yang dijelaskan dalam panduan sebelumnya.

 

1.1 Prasyarat Utama

 

Pastikan hal-hal berikut sudah tersedia di Proxmox VE Anda:

  1. Template VM Cloud-Init (Wajib): Anda harus sudah memiliki Template VM yang sudah dikonversi (misalnya, ID: 9000) dan dibuat dari Ubuntu 24.04 Cloud Image.

  2. VM ID yang Tersedia: Rentang ID VM yang akan digunakan (misalnya, 101 hingga 199).

  3. Storage Name: Nama Storage tempat template dan disk baru akan disimpan (misalnya, local-lvm).

 

1.2 Struktur Script Utama

 

Kita akan membuat script yang fleksibel, yang dapat dipanggil dengan argumen (misalnya, create atau delete).

Nama File: vm-manager.sh

Bash 
#!/bin/bash
# --- VARIBEL GLOBAL ---
TEMPLATE_ID=9000
BASE_IMAGE_STORAGE="local-lvm"
NETWORK_BRIDGE="vmbr0"
BASE_IP="192.168.1.100" # IP awal untuk VM yang akan dibuat
GATEWAY_IP="192.168.1.1" # Gateway jaringan Anda
SSH_KEY_FILE="/root/.ssh/id_rsa.pub" # Pastikan file ini ada
DEFAULT_USER="ubuntu"
# --- Fungsi Bantuan UI/UX ---
log_info() {
    echo -e "n

Artikel Terkait

wave

Tekan ESC untuk menutup