forked from ChristianLempa/boilerplates
-
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.
- Loading branch information
alfredo cedeno
committed
Jul 25, 2024
1 parent
3c2021e
commit a9a688c
Showing
4 changed files
with
175 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 @@ | ||
datasource_list: [ConfigDrive, NoCloud] |
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 @@ | ||
|
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,33 @@ | ||
#cloud-config | ||
autoinstall: | ||
version: 1 | ||
locale: en_US | ||
keyboard: | ||
layout: de | ||
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/Berlin | ||
users: | ||
- name: your-user-name | ||
groups: [adm, sudo] | ||
lock-passwd: false | ||
sudo: ALL=(ALL) NOPASSWD:ALL | ||
shell: /bin/bash | ||
# passwd: your-password | ||
# - or - | ||
# ssh_authorized_keys: | ||
# - your-ssh-key |
140 changes: 140 additions & 0 deletions
140
packer/proxmox/ubuntu-server-noble/ubuntu-server-noble.pkr.hcl
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,140 @@ | ||
# Ubuntu Server Focal | ||
# --- | ||
# Packer Template to create an Ubuntu Server (Focal) 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" { | ||
|
||
# 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 = "your-proxmox-node" | ||
vm_id = "100" | ||
vm_name = "ubuntu-server-noble" | ||
template_description = "Ubuntu Server Noble Image" | ||
|
||
# VM OS Settings | ||
# (Option 1) Local ISO File | ||
# iso_file = "local:iso/ubuntu-24.04-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 | ||
|
||
# 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" | ||
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 = [ | ||
"c<wait>", | ||
"linux /casper/vmlinuz --- autoinstall ds=\"nocloud-net;seedfrom=http://{{.HTTPIP}}:{{.HTTPPort}}/\"", | ||
"<enter><wait>", | ||
"initrd /casper/initrd", | ||
"<enter><wait>", | ||
"boot","<enter>"] | ||
|
||
boot_wait = "10s" | ||
|
||
# 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 = "your-user-name" | ||
|
||
# (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_rsa" | ||
|
||
# Raise the timeout, when installation takes longer | ||
ssh_timeout = "20m" | ||
} | ||
|
||
# Build Definition to create the VM Template | ||
build { | ||
|
||
name = "ubuntu-server-noble" | ||
sources = ["source.proxmox-iso.ubuntu-server-noble"] | ||
|
||
# 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-get -y autoremove --purge", | ||
"sudo apt-get -y clean", | ||
"sudo apt-get -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 | ||
# ... | ||
} |