-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Full packer profile for building Ubuntu 22.04 on proxmox Signed-off-by: Padraig Connolly <[email protected]>
- Loading branch information
1 parent
a3b3de0
commit a6ab00a
Showing
5 changed files
with
172 additions
and
0 deletions.
There are no files selected for viewing
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
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,3 @@ | ||
-proxmox_api_url = "https://0.0.0.0:8006/api2/json" # Your Proxmox IP Address | ||
-proxmox_api_token_id = "terraform@pam!terraform" # API Token ID | ||
-proxmox_api_token_secret = "your-api-token-secret" |
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
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1 @@ | ||
datasource_list: [ConfigDrive, NoCloud] |
Empty file.
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
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,31 @@ | ||
#cloud-config | ||
autoinstall: | ||
version: 1 | ||
locale: en_IE | ||
keyboard: | ||
layout: ie | ||
ssh: | ||
install-server: true | ||
allow-pw: true | ||
disable_root: true | ||
ssh_quiet_keygen: true | ||
allow_public_ssh_keys: true | ||
packages: | ||
- qemu-guest-agent | ||
- sudo | ||
storage: | ||
layout: | ||
name: direct | ||
swap: | ||
size: 0 | ||
user-data: | ||
package_upgrade: false | ||
timezone: Europe/Dublin | ||
users: | ||
- name: pjconnol | ||
groups: [adm, sudo] | ||
lock-passwd: false | ||
sudo: ALL=(ALL) NOPASSWD:ALL | ||
shell: /bin/bash | ||
ssh_authorized_keys: | ||
- ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIOuIBibRRwx1pVf25paqIpCZYnZzqMrL5UlE3zDeT8dS |
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
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,137 @@ | ||
# Ubuntu Server jammy | ||
# --- | ||
# Packer Template to create an Ubuntu Server (jammy) on Proxmox | ||
|
||
# Variable Definitions | ||
variable "proxmox_api_url" { | ||
type = string | ||
} | ||
|
||
variable "proxmox_api_token_id" { | ||
type = string | ||
} | ||
|
||
variable "proxmox_api_token_secret" { | ||
type = string | ||
sensitive = true | ||
} | ||
|
||
# Resource Definiation for the VM Template | ||
source "proxmox" "ubuntu-server-jammy" { | ||
|
||
# Proxmox Connection Settings | ||
proxmox_url = "${var.proxmox_api_url}" | ||
username = "${var.proxmox_api_token_id}" | ||
token = "${var.proxmox_api_token_secret}" | ||
# (Optional) Skip TLS Verification | ||
insecure_skip_tls_verify = true | ||
|
||
# VM General Settings | ||
node = "pve" | ||
vm_id = "200" | ||
vm_name = "ubuntu-server-jammy" | ||
template_description = "Ubuntu Server jammy Image" | ||
|
||
# VM OS Settings | ||
# (Option 1) Local ISO File | ||
iso_file = "local:iso/ubuntu-22.04-live-server-amd64.iso" | ||
# - or - | ||
# (Option 2) Download ISO | ||
# iso_url = "https://releases.ubuntu.com/22.04/ubuntu-22.04-live-server-amd64.iso" | ||
# iso_checksum = "84aeaf7823c8c61baa0ae862d0a06b03409394800000b3235854a6b38eb4856f" | ||
iso_storage_pool = "local" | ||
unmount_iso = true | ||
|
||
# VM System Settings | ||
qemu_agent = true | ||
|
||
# VM Hard Disk Settings | ||
scsi_controller = "virtio-scsi-pci" | ||
|
||
disks { | ||
disk_size = "20G" | ||
format = "qcow2" | ||
storage_pool = "local-lvm" | ||
storage_pool_type = "lvm" | ||
type = "virtio" | ||
} | ||
|
||
# VM CPU Settings | ||
cores = "1" | ||
|
||
# VM Memory Settings | ||
memory = "2048" | ||
|
||
# VM Network Settings | ||
network_adapters { | ||
model = "virtio" | ||
bridge = "vmbr0" | ||
firewall = "false" | ||
} | ||
|
||
# VM Cloud-Init Settings | ||
cloud_init = true | ||
cloud_init_storage_pool = "local-lvm" | ||
|
||
# PACKER Boot Commands | ||
boot_command = [ | ||
"<esc><wait>", | ||
"e<wait>", | ||
"<down><down><down><end>", | ||
"<bs><bs><bs><bs><wait>", | ||
"autoinstall ds=nocloud-net\\;s=http://{{ .HTTPIP }}:{{ .HTTPPort }}/ ---<wait>", | ||
"<f10><wait>" | ||
] | ||
boot = "c" | ||
boot_wait = "5s" | ||
|
||
# PACKER Autoinstall Settings | ||
http_directory = "http" | ||
# (Optional) Bind IP Address and Port | ||
http_bind_address = "192.168.8.100" | ||
http_port_min = 8802 | ||
http_port_max = 8802 | ||
|
||
ssh_username = "pjconnol" | ||
|
||
ssh_private_key_file = "~/.ssh/id_ed25519" | ||
|
||
# Raise the timeout, when installation takes longer | ||
ssh_timeout = "20m" | ||
} | ||
|
||
# Build Definition to create the VM Template | ||
build { | ||
|
||
name = "ubuntu-server-jammy" | ||
sources = ["source.proxmox.ubuntu-server-jammy"] | ||
|
||
# Provisioning the VM Template for Cloud-Init Integration in Proxmox #1 | ||
provisioner "shell" { | ||
inline = [ | ||
"while [ ! -f /var/lib/cloud/instance/boot-finished ]; do echo 'Waiting for cloud-init...'; sleep 1; done", | ||
"sudo rm /etc/ssh/ssh_host_*", | ||
"sudo truncate -s 0 /etc/machine-id", | ||
"sudo apt -y autoremove --purge", | ||
"sudo apt -y clean", | ||
"sudo apt -y autoclean", | ||
"sudo cloud-init clean", | ||
"sudo rm -f /etc/cloud/cloud.cfg.d/subiquity-disable-cloudinit-networking.cfg", | ||
"sudo sync" | ||
] | ||
} | ||
|
||
# Provisioning the VM Template for Cloud-Init Integration in Proxmox #2 | ||
provisioner "file" { | ||
source = "files/99-pve.cfg" | ||
destination = "/tmp/99-pve.cfg" | ||
} | ||
|
||
# Provisioning the VM Template for Cloud-Init Integration in Proxmox #3 | ||
provisioner "shell" { | ||
inline = [ "sudo cp /tmp/99-pve.cfg /etc/cloud/cloud.cfg.d/99-pve.cfg" ] | ||
} | ||
|
||
# Add additional provisioning scripts here | ||
# ... | ||
} |