-
-
Save mofelee/578e7d7e88107af49c1ead3767f198df to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#!/bin/bash | |
export SRC_IMG="https://cloud.debian.org/images/cloud/bookworm/latest/debian-12-generic-amd64.qcow2" | |
export IMG_NAME="debian-12-generic-amd64.qcow2" | |
export TEMPL_NAME="debian12-generic" | |
export VMID="9001" | |
export MEM="1024" | |
export DISK_SIZE="8G" | |
export DISK_STOR="local-lvm" | |
export NET_BRIDGE="vmbr0" |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#!/bin/bash | |
export SRC_IMG="https://cloud-images.ubuntu.com/lunar/current/lunar-server-cloudimg-amd64-disk-kvm.img" | |
export IMG_NAME="lunar-server-cloudimg-amd64-disk-kvm.qcow2" | |
export TEMPL_NAME="ubuntu2304-cloud" | |
export VMID="9002" | |
export MEM="1024" | |
export DISK_SIZE="8G" | |
export DISK_STOR="local-lvm" | |
export NET_BRIDGE="vmbr0" |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#!/bin/bash | |
export SRC_IMG="https://cloud-images.ubuntu.com/jammy/current/jammy-server-cloudimg-amd64-disk-kvm.img" | |
export IMG_NAME="jammy-server-cloudimg-amd64-disk-kvm.qcow2" | |
export TEMPL_NAME="ubuntu2204-cloud" | |
export VMID="9000" | |
export MEM="1024" | |
export DISK_SIZE="8G" | |
export DISK_STOR="local-lvm" | |
export NET_BRIDGE="vmbr0" |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#!/bin/bash | |
wget -O $IMG_NAME $SRC_IMG |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#!/bin/bash | |
apt update | |
apt install -y libguestfs-tools | |
virt-customize --install qemu-guest-agent -a $IMG_NAME |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#!/bin/bash | |
# Must run on Proxmox VE 8 server | |
# Not sure how to handle a cluster - either run on each node or copy template after creating on one? | |
# e.g. $ ssh [email protected] < proxmox-create-cloud-template.sh | |
# SRC_IMG="https://cloud-images.ubuntu.com/jammy/current/jammy-server-cloudimg-amd64-disk-kvm.img" | |
# IMG_NAME="jammy-server-cloudimg-amd64-disk-kvm.qcow2" | |
# TEMPL_NAME="ubuntu2204-cloud" | |
# VMID="9000" | |
# MEM="1024" | |
# DISK_SIZE="8G" | |
# DISK_STOR="local-lvm" | |
# NET_BRIDGE="vmbr0" | |
# Install libguesetfs-tools to modify cloud image | |
# apt update | |
# apt install -y libguestfs-tools | |
# Download kvm image and rename | |
# Ubuntu img is actually qcow2 format and Proxmox doesn't like wrong extensions | |
# wget -O $IMG_NAME $SRC_IMG | |
# Ubuntu cloud img doesn't include qemu-guest-agent required for packer to get IP details from proxmox | |
# Add any additional packages you want installed in the template | |
# virt-customize --install qemu-guest-agent -a $IMG_NAME | |
# Create cloud-init enabled Proxmox VM with DHCP addressing | |
qm create $VMID --name $TEMPL_NAME --memory $MEM --net0 virtio,bridge=$NET_BRIDGE | |
qm importdisk $VMID $IMG_NAME $DISK_STOR | |
qm set $VMID --scsihw virtio-scsi-pci --scsi0 $DISK_STOR:vm-$VMID-disk-0 | |
qm set $VMID --ide2 $DISK_STOR:cloudinit | |
qm set $VMID --boot c --bootdisk scsi0 | |
qm set $VMID --serial0 socket --vga serial0 | |
qm set $VMID --ipconfig0 ip=dhcp | |
qm resize $VMID scsi0 $DISK_SIZE | |
# Convert to template | |
qm template $VMID | |
# Remove downloaded image | |
rm $IMG_NAME | |
# Next, use packer to clone this template and customize it! | |
# References | |
# https://gist.github.com/mike1237/cce83a74f898b11c2cec911204568cf9 | |
# https://gist.github.com/chriswayg/43fbea910e024cbe608d7dcb12cb8466 | |
# https://whattheserver.com/proxmox-cloud-init-os-template-creation/ | |
# https://norocketscience.at/deploy-proxmox-virtual-machines-using-cloud-init/ | |
# https://pve.proxmox.com/wiki/Cloud-Init_Support | |
# https://blog.dustinrue.com/2020/05/going-deeper-with-proxmox-cloud-init/ |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
variable "proxmox_host_node" { | |
type = string | |
} | |
variable "proxmox_password" { | |
type = string | |
sensitive = true | |
} | |
variable "proxmox_source_template" { | |
type = string | |
} | |
variable "proxmox_template_name" { | |
type = string | |
} | |
variable "proxmox_url" { | |
type = string | |
} | |
variable "proxmox_username" { | |
type = string | |
default = "root@pam" | |
} | |
source "proxmox-clone" "test-cloud-init" { | |
insecure_skip_tls_verify = true | |
full_clone = false | |
template_name = "${var.proxmox_template_name}" | |
clone_vm = "${var.proxmox_source_template}" | |
os = "l26" | |
cores = "1" | |
memory = "512" | |
scsi_controller = "virtio-scsi-pci" | |
ssh_username = "ubuntu" | |
qemu_agent = true | |
network_adapters { | |
bridge = "vmbr0" | |
model = "virtio" | |
} | |
node = "${var.proxmox_host_node}" | |
username = "${var.proxmox_username}" | |
password = "${var.proxmox_password}" | |
proxmox_url = "${var.proxmox_url}" | |
} | |
build { | |
sources = ["source.proxmox-clone.test-cloud-init"] | |
provisioner "shell" { | |
inline = ["sudo cloud-init clean"] | |
} | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment