aboutsummaryrefslogtreecommitdiff
path: root/packer/ubuntu-server-noble
diff options
context:
space:
mode:
authorclyhtsuriva <aimeric@adjutor.xyz>2025-01-30 21:07:07 +0100
committerclyhtsuriva <aimeric@adjutor.xyz>2025-01-30 21:07:07 +0100
commit3a63650aa95666b1b557250bbc59611747254ffa (patch)
treedfda340bf42ffcbaa188fcd151987c1c62aa0ada /packer/ubuntu-server-noble
parenta3cf8b4df83b83ed497f387a539f8530b7dc9888 (diff)
Adds first packer tests (ubuntu & debian)
Diffstat (limited to 'packer/ubuntu-server-noble')
-rw-r--r--packer/ubuntu-server-noble/files/99-pve.cfg1
-rw-r--r--packer/ubuntu-server-noble/http/meta-data0
-rw-r--r--packer/ubuntu-server-noble/http/user-data35
-rw-r--r--packer/ubuntu-server-noble/ubuntu-server-noble.pkr.hcl154
4 files changed, 190 insertions, 0 deletions
diff --git a/packer/ubuntu-server-noble/files/99-pve.cfg b/packer/ubuntu-server-noble/files/99-pve.cfg
new file mode 100644
index 0000000..e5477bc
--- /dev/null
+++ b/packer/ubuntu-server-noble/files/99-pve.cfg
@@ -0,0 +1 @@
+datasource_list: [ConfigDrive, NoCloud]
diff --git a/packer/ubuntu-server-noble/http/meta-data b/packer/ubuntu-server-noble/http/meta-data
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/packer/ubuntu-server-noble/http/meta-data
diff --git a/packer/ubuntu-server-noble/http/user-data b/packer/ubuntu-server-noble/http/user-data
new file mode 100644
index 0000000..952e269
--- /dev/null
+++ b/packer/ubuntu-server-noble/http/user-data
@@ -0,0 +1,35 @@
+#cloud-config
+autoinstall:
+ version: 1
+ locale: en_US
+ keyboard:
+ layout: us
+ ssh:
+ install-server: true
+ allow-pw: true
+ disable_root: true
+ ssh_quiet_keygen: true
+ allow_public_ssh_keys: true
+ packages:
+ - qemu-guest-agent
+ - sudo
+ - neovim
+ - tmux
+ storage:
+ layout:
+ name: direct
+ swap:
+ size: 0
+ user-data:
+ package_upgrade: true
+ timezone: Europe/Paris
+ users:
+ - name: mas
+ groups: [adm, sudo]
+ lock-passwd: false
+ sudo: ALL=(ALL) NOPASSWD:ALL
+ shell: /bin/bash
+ # passwd: your-password
+ # - or -
+ ssh_authorized_keys:
+ - ecdsa-sha2-nistp256 AAAAE2VjZHNhLXNoYTItbmlzdHAyNTYAAAAIbmlzdHAyNTYAAABBBCtB9NZgJMVovVR4foT0OOV9GdHeHZoPtK1TGko2W4wli/reKjpUYBhlSPWbaWD9WUbl0RRqdzkODy1fB001zxs= mas@TMV2
diff --git a/packer/ubuntu-server-noble/ubuntu-server-noble.pkr.hcl b/packer/ubuntu-server-noble/ubuntu-server-noble.pkr.hcl
new file mode 100644
index 0000000..5ba2019
--- /dev/null
+++ b/packer/ubuntu-server-noble/ubuntu-server-noble.pkr.hcl
@@ -0,0 +1,154 @@
+# Ubuntu Server Noble (24.04.1)
+# ---
+# Packer Template to create an Ubuntu Server (Noble 24.04.1) 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-iso" "ubuntu-server-noble-test-1" {
+
+ # 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 = "101"
+ vm_name = "ubuntu-server-noble-test-1"
+ template_description = "Ubuntu Server Noble Image Test 1"
+
+ # VM OS Settings
+ # (Option 1) Local ISO File
+ # iso_file = "local:iso/ubuntu-24.04.1-live-server-amd64.iso"
+ # - or -
+ # (Option 2) Download ISO
+ # iso_url = "https://releases.ubuntu.com/24.04/ubuntu-24.04-live-server-amd64.iso"
+ # iso_checksum = "8762f7e74e4d64d72fceb5f70682e6b069932deedb4949c6975d0f0fe0a91be3"
+ # iso_storage_pool = "local"
+ # unmount_iso = true
+ boot_iso {
+ type = "scsi"
+ iso_file = "local:iso/ubuntu-24.04.1-live-server-amd64.iso"
+ unmount = true
+ iso_checksum = "sha512:3d518612aabbdb77fd6b49cb55b824fed11e40540e4af52f5f26174257715c93740f83079ea618b4d933081f0b1bc69d32b7885b7c75bc90da5ad3fe1814cfd4"
+ }
+
+
+ # VM System Settings
+ qemu_agent = true
+
+ # VM Hard Disk Settings
+ scsi_controller = "virtio-scsi-pci"
+
+ disks {
+ disk_size = "20G"
+ format = "raw"
+ storage_pool = "local-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 = "10s"
+ communicator = "ssh"
+
+ # PACKER Autoinstall Settings
+ http_directory = "http"
+ # (Optional) Bind IP Address and Port
+ # http_bind_address = "0.0.0.0"
+ # http_port_min = 8802
+ # http_port_max = 8802
+
+ ssh_username = "mas"
+
+ # (Option 1) Add your Password here
+ # ssh_password = "your-password"
+ # - or -
+ # (Option 2) Add your Private SSH KEY file here
+ ssh_private_key_file = "~/.ssh/id_ecdsa"
+
+ # Raise the timeout, when installation takes longer
+ ssh_timeout = "30m"
+ ssh_pty = true
+}
+
+# Build Definition to create the VM Template
+build {
+
+ name = "ubuntu-server-noble-test-1"
+ sources = ["source.proxmox-iso.ubuntu-server-noble-test-1"]
+
+ # 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 rm -f /etc/netplan/00-installer-config.yaml",
+ "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" ]
+ }
+
+ # Random personal test, ID #4
+ provisioner "shell" {
+ inline = [ "id" ]
+ }
+}