Proxmox Module: create_template function

This commit is contained in:
Candifloss 2026-07-23 19:54:51 +05:30
parent 1b2904afcd
commit 2c8c63bbc4
3 changed files with 132 additions and 12 deletions

View File

@ -1,7 +1,15 @@
# Default temporary Internet settings. # Default temporary Internet settings.
set -g PROXMOX_TEMP_INTERNET_BRIDGE vmbr1 set -g VM_TEMP_NET_BRIDGE vmbr1
set -g PROXMOX_TEMP_INTERNET_MODEL virtio set -g VM_TEMP_NET_MODEL virtio
set -g PROXMOX_TEMP_INTERNET_IP "192.0.2.100/24" set -g VM_TEMP_NET_IP "192.0.2.100/24"
set -g PROXMOX_TEMP_INTERNET_GATEWAY "192.0.2.1" set -g VM_TEMP_NET_GATEWAY "192.0.2.1"
# Default template settings.
set -g VM_TEMPLATE_BRIDGE vmbr0
set -g VM_TEMPLATE_BRIDGES vmbr0 vmbr1 vmbr2
set -g VM_TEMPLATE_IMAGE "/root/os_images/debian-13-generic-amd64.qcow2"
set -g VM_TEMPLATE_STORAGE netapp-lvm

View File

@ -0,0 +1,112 @@
function create_template --description "Create a Debian cloud-init template"
if contains -- $argv[1] -h --help
echo "Usage: create_template <vmid> <name> [bridge] [image] [storage]"
return 0
end
set -l vmid $argv[1]
set -l name $argv[2]
set -l bridge $argv[3]
set -l image $argv[4]
set -l storage $argv[5]
echo "Proxmox Debian Template Creator"
echo
# Required values
if test -z "$vmid"
read -l -P "Template ID: " vmid
end
if test -z "$vmid"
echo "Error: Template ID is required."
return 1
end
if test -z "$name"
echo "Example: debian13tmpl"
read -l -P "Template Name: " name
end
if test -z "$name"
echo "Error: Template name is required."
return 1
end
# Optional values with configured defaults
test -n "$bridge"; or set bridge $VM_TEMPLATE_BRIDGE
test -n "$image"; or set image $VM_TEMPLATE_IMAGE
test -n "$storage"; or set storage $VM_TEMPLATE_STORAGE
if test -z "$bridge"
echo "Error: VM_TEMPLATE_BRIDGE is not configured."
return 1
end
if test -z "$image"
echo "Error: VM_TEMPLATE_IMAGE is not configured."
return 1
end
if test -z "$storage"
echo "Error: VM_TEMPLATE_STORAGE is not configured."
return 1
end
# Prompt for bridge if it wasn't supplied
if test -z "$argv[3]"
set -l options (string join "/" $VM_TEMPLATE_BRIDGES)
read -l -P "Bridge [$options]: " tmp
if test -n "$tmp"
set bridge $tmp
end
end
echo
echo "Template ID: $vmid"
echo "Name: $name"
echo "Bridge: $bridge"
echo "Image: $image"
echo "Storage: $storage"
echo
read -l -P "Continue? [y/N]: " confirm
if test "$confirm" != y
echo "Aborted."
return 1
end
qm create $vmid \
--name $name \
--ostype l26 \
--machine q35 \
--cpu host \
--cores 2 \
--memory 2048 \
--agent enabled=1 \
--scsihw virtio-scsi-single \
--net0 "virtio,bridge=$bridge"
or return
qm set $vmid \
--scsi0 "$storage:0,import-from=$image,discard=on,ssd=1,iothread=1" \
--ide2 "$storage:cloudinit" \
--boot order=scsi0 \
--serial0 socket \
--vga serial0 \
--ipconfig0 ip=dhcp
or return
qm template $vmid
or return
echo
echo "Template '$name' ($vmid) created successfully."
end

View File

@ -19,28 +19,28 @@ function temp_internet --description "Temporarily add or remove Internet access
set -l bridge $argv[5] set -l bridge $argv[5]
set -l model $argv[6] set -l model $argv[6]
test -n "$ip"; or set ip $PROXMOX_TEMP_INTERNET_IP test -n "$ip"; or set ip $VM_TEMP_NET_IP
test -n "$gateway"; or set gateway $PROXMOX_TEMP_INTERNET_GATEWAY test -n "$gateway"; or set gateway $VM_TEMP_NET_GATEWAY
test -n "$bridge"; or set bridge $PROXMOX_TEMP_INTERNET_BRIDGE test -n "$bridge"; or set bridge $VM_TEMP_NET_BRIDGE
test -n "$model"; or set model $PROXMOX_TEMP_INTERNET_MODEL test -n "$model"; or set model $VM_TEMP_NET_MODEL
if test -z "$ip" if test -z "$ip"
echo "Error: No IP specified and PROXMOX_TEMP_INTERNET_IP is not configured." echo "Error: VM_TEMP_NET_IP is not configured."
return 1 return 1
end end
if test -z "$gateway" if test -z "$gateway"
echo "Error: No gateway specified and PROXMOX_TEMP_INTERNET_GATEWAY is not configured." echo "Error: VM_TEMP_NET_GATEWAY is not configured."
return 1 return 1
end end
if test -z "$bridge" if test -z "$bridge"
echo "Error: PROXMOX_TEMP_INTERNET_BRIDGE is not configured." echo "Error: VM_TEMP_NET_BRIDGE is not configured."
return 1 return 1
end end
if test -z "$model" if test -z "$model"
echo "Error: PROXMOX_TEMP_INTERNET_MODEL is not configured." echo "Error: VM_TEMP_NET_MODEL is not configured."
return 1 return 1
end end