1
+ packer {
2
+ required_plugins {
3
+ name = {
4
+ version = " ~> 1"
5
+ source = " github.com/hashicorp/proxmox"
6
+ }
7
+ }
8
+ }
9
+
10
+ variable "proxmox_api_url" {
11
+ type = string
12
+ }
13
+
14
+ variable "proxmox_api_token_id" {
15
+ type = string
16
+ }
17
+
18
+ variable "proxmox_api_token_secret" {
19
+ type = string
20
+ sensitive = true
21
+ }
22
+
23
+ # Resource Definiation for the VM Template
24
+ source "proxmox-clone" "ubuntu-server-jammy" {
25
+
26
+ # Proxmox Connection Settings
27
+ proxmox_url = " ${ var . proxmox_api_url } "
28
+ username = " ${ var . proxmox_api_token_id } "
29
+ token = " ${ var . proxmox_api_token_secret } "
30
+ insecure_skip_tls_verify = true
31
+
32
+ # VM General Settings
33
+ node = " pve2"
34
+ clone_vm_id = " 8101"
35
+ vm_id = " 9636"
36
+ vm_name = " ubuntu-server-jammy"
37
+ template_description = " Ubuntu Server jammy Image"
38
+
39
+ # VM System Settings
40
+ qemu_agent = true
41
+
42
+ # VM Hard Disk Settings
43
+ scsi_controller = " virtio-scsi-pci"
44
+
45
+ disks {
46
+ disk_size = " 5G"
47
+ format = " raw"
48
+ storage_pool = " Fast500Gb"
49
+ type = " virtio"
50
+ }
51
+
52
+ # VM CPU Settings
53
+ cores = " 2"
54
+ cpu_type = " x86-64-v2-AES"
55
+
56
+ # VM Memory Settings
57
+ memory = " 2048"
58
+
59
+ # VM Network Settings
60
+ network_adapters {
61
+ model = " virtio"
62
+ bridge = " vmbr0"
63
+ firewall = " false"
64
+ }
65
+
66
+
67
+ ssh_username = " mafyuh"
68
+ ssh_private_key_file = " ~/.ssh/id_rsa"
69
+ }
70
+
71
+
72
+ build {
73
+
74
+ name = " ubuntu-server-jammy"
75
+ sources = [" source.proxmox-clone.ubuntu-server-jammy" ]
76
+
77
+
78
+ provisioner "shell" {
79
+ inline = [
80
+ " while [ ! -f /var/lib/cloud/instance/boot-finished ]; do echo 'Waiting for cloud-init...'; sleep 1; done" ,
81
+ " sudo rm /etc/ssh/ssh_host_*" ,
82
+ " sudo truncate -s 0 /etc/machine-id" ,
83
+ " sudo apt -y autoremove --purge" ,
84
+ " sudo apt -y clean" ,
85
+ " sudo apt -y autoclean" ,
86
+ " sudo cloud-init clean" ,
87
+ " sudo rm -f /etc/cloud/cloud.cfg.d/subiquity-disable-cloudinit-networking.cfg" ,
88
+ " sudo rm -f /etc/netplan/00-installer-config.yaml" ,
89
+ " sudo sync"
90
+ ]
91
+ }
92
+
93
+
94
+ provisioner "file" {
95
+ source = " files/pve.cfg"
96
+ destination = " /tmp/pve.cfg"
97
+ }
98
+
99
+
100
+ provisioner "shell" {
101
+ inline = [ " sudo cp /tmp/pve.cfg /etc/cloud/cloud.cfg.d/pve.cfg" ]
102
+ }
103
+
104
+ # Provisioning the VM Template with Docker Installation #4
105
+ provisioner "shell" {
106
+ inline = [
107
+ " sudo apt-get install -y ca-certificates curl gnupg lsb-release nfs-common qemu-guest-agent net-tools" ,
108
+ " curl -fsSL https://get.docker.com | sudo sh" ,
109
+ " echo \" alias dcu='docker compose up -d'\" >> ~/.bashrc" ,
110
+ " echo \" alias dcd='docker compose down'\" >> ~/.bashrc" ,
111
+ " git config --global user.name \" Mafyuh\" " ,
112
+ " git config --global user.email \" matt@mafyuh.com\" " ,
113
+ " sudo apt-get -y update"
114
+ ]
115
+ }
116
+ }
0 commit comments