Code Monkey home page Code Monkey logo

Comments (1)

jessefmoore avatar jessefmoore commented on August 26, 2024

never mind solved it.
basically, swap out qcow2 with raw and proxmox to proxmox-iso
AND here is the command for others.

packer build -var-file=credentials.pkr.hcl ubuntu-server-jammy.pkr.hcl

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-iso" "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 = "cyber"
vm_id = "400"
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.1-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 = "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 = [
    "<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 = "0.0.0.0"
# http_port_min = 8802
# http_port_max = 8802

ssh_username = "serveradmin"

# (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/ansiblehost"

# Raise the timeout, when installation takes longer
ssh_timeout = "20m"

}

Build Definition to create the VM Template

build {

name = "ubuntu-server-jammy"
sources = ["proxmox-iso.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 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" ]
}

# Add additional provisioning scripts here
# ...

}

from boilerplates.

Related Issues (20)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.