Otomatisasi Pembuatan VM di Proxmox VE Menggunakan Ansible

Salah satu penggunaan Ansible adalah kita bisa gunakan untuk membuat VM di Proxmox VE. Kalau skala besar, bisa sekaligus untuk deploy banyak VM.

Cara kerjanya adalah Ansible berkomunikasi langsung ke API-nya Proxmox VE, sehingga kita tidak perlu berulang kali akses ke PVE menggunakan SSH.

Persiapan

Pastikan kita sudah punya Ansible di komputer lokal kita. Siapkan juga library proxmoxer. Apabila belum punya library-nya, bisa menggunakan perintah berikut:

pip3 install proxmoxer --break-system-packages
ansible-galaxy collection install community.general

Pada pengujian kali ini, installer OS yang akan digunakan juga sudah siap/tersimpan di PVE.

Ada beberapa file yang diperlukan untuk urusan per-Ansible-an kali ini:

  • inventory.ini. Fungsinya adalah mendefinisikan server tujuan. Karena kita akan menjalankan skrip secara lokal untuk menembak API Proxmox, kita cukup mendefinisikan struktur dasarnya:
      [proxmox_servers]
      pve21 ansible_host=<diisi.alamat.ip.pve>
    
      [local]
      localhost ansible_connection=local
    
  • vars.yml. Berfungsi untuk menyimpan konfigurasi API dan spesifikasi VM yang akan dibuat. Contoh formatnya adalah seperti ini:
      # Kredensial API Proxmox
      pve_api_user: "root@pam"
      pve_api_password: "PasswordRahasiaProxmoxAnda"
    
      # Spesifikasi VM yang Ingin Dibuat
      nested_vmid: 800
      nested_vm_name: "MZ-PVE8-Nested"
      nested_cpu_cores: 4
      nested_memory_mb: 8192
      nested_disk_size: "50"
      nested_storage_pool: "local-lvm"  # Ubah sesuai target storage 
      nested_bridge: "vmbr0"
    
  • playbook.yml. Merupakan file utama yang dijalankan oleh Ansible. Berikut ini contoh format filenya:
          ---
      - name: Deploy Proxmox VE 8 secara Nested
        hosts: localhost
        connection: local
        gather_facts: false
        vars_files:
          - vars.yml
    
        tasks:
          - name: Buat VM PVE 8 Nested di Host Induk
            community.general.proxmox_kvm:
              api_user: "{{ pve_api_user }}"
              api_password: "{{ pve_api_password }}"
              api_host: "192.168.1.21"
              validate_certs: false
              node: "pve21"
              vmid: "{{ nested_vmid }}"
              name: "{{ nested_vm_name }}"
              cores: "{{ nested_cpu_cores }}"
              memory: "{{ nested_memory_mb }}"
    
              # Spesifikasi passthrough CPU untuk Nested Virtualization
              cpu: "host"
              scsihw: "virtio-scsi-pci"
              agent: true
    
              # FORMAT DISK YANG BENAR: nama_storage:angka_size
              virtio:
                virtio0: "{{ nested_storage_pool }}:{{ nested_disk_size }}"
    
              # Memasang ISO Proxmox ke CD-ROM (Bus IDE 2)
              ide:
                ide2: "dataisoonnfs:iso/proxmox-ve_8.0-2.iso,media=cdrom"
    
              # Konfigurasi Jaringan
              net:
                net0: "model=virtio,bridge={{ nested_bridge }}"
    
              state: present
    
          - name: Nyalakan VM PVE Nested Otomatis
            community.general.proxmox_kvm:
              api_user: "{{ pve_api_user }}"
              api_password: "{{ pve_api_password }}"
              api_host: "192.168.1.21"
              validate_certs: false
              vmid: "{{ nested_vmid }}"
              state: started
    

Contoh file di atas untuk deploy VM PVE (secara nested)

Berikut ini penjelasan dari file playbook:

  • hosts: localhost & connection: local: Baris ini memerintahkan Ansible untuk berjalan di lokal. Ansible bertindak sebagai pengirim instruksi ke API Proxmox tanpa perlu melakukan SSH ke server Proxmox.
  • community.general.proxmox_kvm: Ini adalah modul khusus Ansible untuk mengelola Virtual Machine (QEMU/KVM).
  • cpu: "host": Opsi ini meneruskan seluruh instruksi dan fitur CPU fisik server induk langsung ke dalam VM. Pengaturan ini harus aktif jika ingin membuat Nested Virtualization (membuat VM di dalam VM).
  • vvirtio0: "{{ nested_storage_pool }}:{{ nested_disk_size }}": API Proxmox meminta format disk berupa nama_storage:ukuran_angka.
  • ide2: Bagian ini memasang berkas ISO yang berada di storage NFS server Anda ke dalam CD-ROM virtual VM. VM akan mendeteksi berkas ini sebagai media booting pertama.
  • state: started pada Task Kedua: Setelah proses pembuatan VM dengan status present selesai, task kedua langsung mengirimkan instruksi untuk menyalakan VM tersebut secara otomatis.

Eksekusi

Buka Terminal, masuk ke direktori Ansible-nya (project ini), dan jalankan perintah berikut:

ansible-playbook playbook.yml

Ansible akan langsung membuat VM baru dengan ID 800 di PVE. Setelah proses selesai, lanjutbuka Web GUI Proxmox untuk melanjutkan proses instalasi sistem operasi di dalam VM tersebut. Hmm memang untuk kali ini baru membuat VM-nya saja, belum sama instalasi VM sampai jadi. Step-by-step dulu hehe.

Tulisan kali ini sampai di sini dulu ya. Sampai jumpa. Bye.

By Zaidan

Leave a Reply

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