From 4f9a72c8df0c0069e89e403a1e789f7f4ee58a61 Mon Sep 17 00:00:00 2001 From: Othman Hendy Suseno Date: Sun, 16 Nov 2025 19:07:37 +0700 Subject: [PATCH] Add installer and uninstaller script --- README.md | 27 +++++++++++++++++++------ install.sh | 56 ++++++++++++++++++++++++++++++++++++++++++++++++++++ proxmox.go | 3 +++ uninstall.sh | 27 +++++++++++++++++++++++++ 4 files changed, 107 insertions(+), 6 deletions(-) create mode 100755 install.sh create mode 100755 uninstall.sh diff --git a/README.md b/README.md index fbfc41c..eb3afa2 100644 --- a/README.md +++ b/README.md @@ -26,21 +26,36 @@ sudo apt install qemu-utils libguestfs-tools ## Installation -### Build from source: +### Quick Install (Recommended): + +```bash +git clone +cd cloud-image +sudo ./install.sh +``` + +Installer akan otomatis: +- Install dependencies (qemu-utils, libguestfs-tools) +- Build binary +- Install ke `/usr/local/bin` + +### Manual Build: ```bash git clone cd cloud-image go build -o proxmox-cloud-image -``` - -### Install globally (Linux): - -```bash sudo cp proxmox-cloud-image /usr/local/bin/ sudo chmod +x /usr/local/bin/proxmox-cloud-image ``` +### Uninstall: + +```bash +cd cloud-image +sudo ./uninstall.sh +``` + Setelah install, bisa langsung dipanggil dari mana aja: ```bash proxmox-cloud-image -h diff --git a/install.sh b/install.sh new file mode 100755 index 0000000..a7b5a4a --- /dev/null +++ b/install.sh @@ -0,0 +1,56 @@ +#!/bin/bash + +set -e + +INSTALL_DIR="/usr/local/bin" +BINARY_NAME="proxmox-cloud-image" +REPO_URL="https://github.com/yourusername/proxmox-cloud-image" + +echo "==========================================" +echo "Proxmox Cloud Image Tool Installer" +echo "==========================================" +echo "" + +if [ "$EUID" -ne 0 ]; then + echo "Error: This script must be run as root (use sudo)" + exit 1 +fi + +echo "Checking dependencies..." +if ! command -v qemu-img &> /dev/null; then + echo "Installing qemu-utils..." + apt-get update + apt-get install -y qemu-utils +fi + +if ! command -v virt-customize &> /dev/null; then + echo "Installing libguestfs-tools..." + apt-get install -y libguestfs-tools +fi + +if ! command -v go &> /dev/null; then + echo "Error: Go is not installed. Please install Go 1.19+ first." + echo "Visit: https://golang.org/doc/install" + exit 1 +fi + +echo "" +echo "Building binary..." +go build -o $BINARY_NAME + +echo "Installing to $INSTALL_DIR..." +cp $BINARY_NAME $INSTALL_DIR/ +chmod +x $INSTALL_DIR/$BINARY_NAME + +echo "" +echo "==========================================" +echo "Installation completed successfully!" +echo "==========================================" +echo "" +echo "You can now use: $BINARY_NAME" +echo "" +echo "Examples:" +echo " $BINARY_NAME -h" +echo " $BINARY_NAME -config config.yaml" +echo " $BINARY_NAME -list-storage -proxmox-host 192.168.1.100" +echo "" diff --git a/proxmox.go b/proxmox.go index f87707d..27c92b4 100644 --- a/proxmox.go +++ b/proxmox.go @@ -197,6 +197,9 @@ func createProxmoxVM(config *Config) error { "--serial0", "socket", "--vga", "serial0", }, + {"qm", "set", fmt.Sprintf("%d", config.VMID), + "--ipconfig0", "ip=dhcp", + }, } // Firewall is now handled as part of the network config (buildNetworkConfig), diff --git a/uninstall.sh b/uninstall.sh new file mode 100755 index 0000000..6376910 --- /dev/null +++ b/uninstall.sh @@ -0,0 +1,27 @@ +#!/bin/bash + +set -e + +INSTALL_DIR="/usr/local/bin" +BINARY_NAME="proxmox-cloud-image" + +echo "==========================================" +echo "Proxmox Cloud Image Tool Uninstaller" +echo "==========================================" +echo "" + +if [ "$EUID" -ne 0 ]; then + echo "Error: This script must be run as root (use sudo)" + exit 1 +fi + +if [ -f "$INSTALL_DIR/$BINARY_NAME" ]; then + echo "Removing $INSTALL_DIR/$BINARY_NAME..." + rm -f "$INSTALL_DIR/$BINARY_NAME" + echo "Uninstallation completed successfully!" +else + echo "Binary not found at $INSTALL_DIR/$BINARY_NAME" + echo "Nothing to uninstall." +fi + +echo ""