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=localvars.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 berupanama_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: startedpada Task Kedua: Setelah proses pembuatan VM dengan statuspresentselesai, 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.