8d057bfd94522314edc708e2fb360aff86a96776
Proxmox Cloud Image Tool
Tool untuk membuat template di Proxmox menggunakan cloud image (Ubuntu, Debian, CentOS, dll) dengan Golang.
Features
- Download cloud image dari URL
- Customize image (resize disk, inject SSH key)
- Otomatis create template di Proxmox
- Support konfigurasi via CLI flags atau YAML file
- Progress bar untuk download
Requirements
- Go 1.19+
- SSH access ke Proxmox host
qemu-imgdanvirt-customize(libguestfs-tools)
Install dependencies di Ubuntu/Debian:
sudo apt install qemu-utils libguestfs-tools
Installation
Build from source:
git clone <repo-url>
cd cloud-image
go build -o proxmox-cloud-image
Install globally (Linux):
sudo cp proxmox-cloud-image /usr/local/bin/
sudo chmod +x /usr/local/bin/proxmox-cloud-image
Setelah install, bisa langsung dipanggil dari mana aja:
proxmox-cloud-image -h
Usage
Menggunakan CLI flags:
proxmox-cloud-image \
-image-url "https://cloud-images.ubuntu.com/jammy/current/jammy-server-cloudimg-amd64.img" \
-vm-name "ubuntu-template" \
-vm-id 9000 \
-proxmox-host "192.168.1.100" \
-proxmox-user "root@pam" \
-storage "local-lvm" \
-memory 2048 \
-cores 2 \
-disk-size "20G" \
-bridge "vmbr0" \
-ssh-key "/root/.ssh/id_rsa.pub"
Auto-find VM ID (mulai dari 10000):
proxmox-cloud-image \
-image-url "https://cloud-images.ubuntu.com/jammy/current/jammy-server-cloudimg-amd64.img" \
-vm-name "ubuntu-template" \
-proxmox-host "192.168.1.100"
Kalo -vm-id tidak diisi atau diset 0, tool akan otomatis cari VM ID kosong mulai dari 10000.
Dengan VLAN:
proxmox-cloud-image \
-image-url "https://cloud-images.ubuntu.com/jammy/current/jammy-server-cloudimg-amd64.img" \
-vm-name "ubuntu-template" \
-vm-id 9000 \
-proxmox-host "192.168.1.100" \
-bridge "vmbr0" \
-vlan-tag 100
Menggunakan config file:
proxmox-cloud-image -config config.yaml
Contoh config.yaml:
image_url: "https://cloud-images.ubuntu.com/jammy/current/jammy-server-cloudimg-amd64.img"
vm_name: "ubuntu-template"
vm_id: 0
storage: "local-lvm"
memory: 2048
cores: 2
disk_size: "20G"
bridge: "vmbr0"
vlan_tag: 100
ssh_key: "/root/.ssh/id_rsa.pub"
proxmox_host: "192.168.1.100"
proxmox_user: "root@pam"
Cloud Image URLs
Ubuntu
- Ubuntu 22.04 (Jammy):
https://cloud-images.ubuntu.com/jammy/current/jammy-server-cloudimg-amd64.img - Ubuntu 20.04 (Focal):
https://cloud-images.ubuntu.com/focal/current/focal-server-cloudimg-amd64.img
Debian
- Debian 12 (Bookworm):
https://cloud.debian.org/images/cloud/bookworm/latest/debian-12-generic-amd64.qcow2 - Debian 11 (Bullseye):
https://cloud.debian.org/images/cloud/bullseye/latest/debian-11-generic-amd64.qcow2
CentOS Stream
- CentOS Stream 9:
https://cloud.centos.org/centos/9-stream/x86_64/images/CentOS-Stream-GenericCloud-9-latest.x86_64.qcow2
Flags
| Flag | Default | Description |
|---|---|---|
-config |
- | Path ke config file (YAML) |
-image-url |
- | URL cloud image (required) |
-vm-name |
cloud-vm | Nama template |
-vm-id |
0 | Template ID (0 = auto-find dari 10000+) |
-storage |
local-lvm | Nama storage Proxmox |
-memory |
2048 | Memory dalam MB |
-cores |
2 | Jumlah CPU cores |
-disk-size |
20G | Ukuran disk |
-bridge |
vmbr0 | Network bridge |
-vlan-tag |
0 | VLAN tag (0 = no VLAN) |
-ssh-key |
- | Path ke SSH public key |
-proxmox-host |
- | IP/hostname Proxmox (required) |
-proxmox-user |
root@pam | Proxmox user |
-proxmox-pass |
- | Proxmox password |
How It Works
- Download cloud image dari URL yang diberikan
- Customize image (resize, inject SSH key jika ada)
- Upload image ke Proxmox host via SCP
- Create VM menggunakan
qmcommands - Import disk dan configure VM
- Setup cloud-init
- Convert VM menjadi template dengan
qm template
Clone Template
Setelah template dibuat, kamu bisa clone untuk membuat VM baru:
qm clone 9000 100 --name my-vm --full
qm set 100 --ipconfig0 ip=192.168.1.100/24,gw=192.168.1.1
qm set 100 --sshkeys /root/.ssh/id_rsa.pub
qm start 100
Notes
- Tool ini menggunakan SSH untuk koneksi ke Proxmox
- Pastikan SSH key sudah di-setup untuk passwordless login
- Image akan di-download ke
/tmpdan di-upload ke Proxmox - Template tidak bisa di-start, harus di-clone dulu
License
MIT
Languages
Go
91.2%
Shell
7.8%
Dockerfile
1%