Puncte:0

Folosind Packer pentru a implementa Ubuntu 20.04 pe Proxmox

drapel us

Problemă

TLDR: Am acest lucru care face cea mai mare parte a instalării automate (cred?), dar continuă să afișeze instalarea GUI după ce trece prin Instalarea automată. Căutăm orice informații despre motivul pentru care continuă să afișeze GUI. /TLDR

Versiune mai lungă: Încerc să îmi dau seama cum să implementez ubuntu (și eventual alte distribuții) în Proxmox utilizând Hashicorp Packer. Am majoritatea configurațiilor configurate și funcționează... cam? Se „instalează” cu succes, dar nu poate termina configurarea inițială, continuă să treacă prin AutoInstall, dar apoi deschide în continuare instalarea GUI. De la trecerea manuală prin GUI, după ce termină porțiunea de instalare automată, se pare că totul este deja completat (minus porțiunea de identitate a utilizatorului, adică FullName/Username/etc). Se pare că nici măcar nu trebuie să găsească o adresă IP, cum ar fi atunci când parcurgeți doar GUI, așa că cred că DHCP funcționează bine?

Am încercat să mă uit la alte câteva întrebări similare, dar soluțiile lor nu au funcționat pentru mine (încă).

Teorii

Am câteva teorii, dar niciuna nu pare să funcționeze corect sau nu sunt sigur cum să le testez.

  1. Am uitat ceva în datele utilizatorului (yaml) și încearcă să afișeze GUI din această cauză.
  2. Îmi lipsește un parametru de configurare din .pkr.hcl fișier care este necesar pentru ca proxmox să configureze corect vm-ul?
  3. Ceva este ciudat cu versiunea Ubuntu pe care o folosesc, poate am nevoie de un ISO diferit? Dar lucrurile pe care le-am citit spun doar că Cloud-init caracteristica doar schimbă moștenirea preseed.cfg pentru datele utilizatorului (yaml), așa că am îndoieli cu privire la această teorie.
  4. Trebuie să setez o funcție de kernel? Sincer, nu sunt sigur de unde să încep aici, sunt, de asemenea, destul de sigur că dacă acesta ar fi fost cazul, aș fi văzut ceva despre asta în altă parte. Dar hei, poate că m-am uitat în locuri greșite?
  5. The datele utilizatorului fișierul nu este încărcat corect în Ubuntu?

Rezultate pline de speranță

  1. Dacă știți sosul magic, vă rog să mă bucurați de el :)
  2. Dacă știți cum să faceți ca Ubuntu 20.04 să redirecționeze unele dintre jurnalele sale în timpul instalării, astfel încât să pot arunca o privire mai profundă, ar fi apreciat! Același lucru pentru o înregistrare mai bună a packerilor (în afară de - depanare, am încercat deja). Am încercat /var/log/installer, dar nu cred că am o înțelegere fermă a ceea ce se întâmplă. Dar nu văd nicio eroare, în afară de o eroare a cheii SSH și nu văd nicio indicație de datele utilizatorului descărcare sau eșecuri la descărcare.
  3. Dacă aveți idei despre cum să testați unele dintre teoriile mele sau orice alte teorii, mi-ar plăcea să le aud!
  4. Dacă puteți vedea ce greșesc în fișierele de configurare de mai jos, vă rugăm să le indicați! Am încercat să fac asta într-un SILO de câteva zile și sunt lângă un zid de care nu știu cum să trec

Actualizări (în desfășurare)

  1. găsite seed from http://192.168.0.144:80/user-data nu este acceptat de DataSourceNoCloud [seed=None][dsmode=net] în /var/log/cloud-init.log căutând de ce a revenit, orice sfat ar fi apreciat :)
  2. Ok, așa că mi-am dat seama de ce a apărut eroarea de mai sus, se pare că nu era în format YAML adecvat. Tocmai am aruncat fișierul într-un formatator YAML și apoi l-am copiat lipit înapoi în fișierul meu țintă.
  3. Acum eroarea este că fișierul YAML încărcat este gol /var/lib/cloud/seed/nocloud/user-data, din nou as aprecia orice sfat :)

Aluzie

Dacă sunteți suficient de cool pentru a încerca să reproduceți aceste lucruri sau dacă v-ați împiedicat de asta după ce (sperăm) a primit răspuns, ușurează-ți viața folosind un exemplu.auto.pkrvars.hcl fişier.

Versiuni

Proxmox: Proxmox VE 7.1-4
Windows: Windows 10 Pro: 10.0.19043.0
Ambalator: 1.7.10

Exemplu.pkr.hcl

ambalator {
  pluginuri_necesare {
    proxmox = {
      versiune = " >= 1.0.1"
      sursă = „github.com/hashicorp/proxmox”
    }
  }
}

sursa „proxmox-iso” „proxmox-ubuntu-20” {
  proxmox_url = „https://proxmox.lan:8006/api2/json”
  vm_name = "packer-ubuntu-20"
  iso_url = „http://iso.repo.lan/ubuntu-20.04.3-live-server-amd64.iso”
  iso_checksum = "f8e3086f3cea0fb3fefb29937ab5ed9d19e767079633960ccb50e76153effc98"
  nume utilizator = "${var.pm_user}"
  parola = "${var.pm_pass}"
  token = „${var.pm_token}”
  nod = "proxmox"
  iso_storage_pool = "local"

  ssh_username = "${var.ssh_user}"
  ssh_password = "${var.ssh_pass}"
  ssh_timeout = "20m"
  ssh_pty = adevărat
  ssh_handshake_attempts = 20

  boot_wait = "5s"
  http_directory = "http" # Pornește un server http local, servește fișierul Preseed
  boot_command = [
    „<esc><wait><esc><wait><f6><wait><esc><wait>”,
    „<bs><bs><bs><bs><bs>”,
    "ip=${cidrhost("192.168.0.0/24", 9)}::${cidrhost("192.168.0.0/24", 1)}:${cidrnetmask("192.168.0.0/24")}: :::${cidrhost("192.168.0.0/24", 1)} ",
    "autoinstall ds=nocloud-net;s=http://{{ .HTTPIP }}:{{ .HTTPPort }}/",
    „--- <enter>”
  ]

  insecure_skip_tls_verify = adevărat

  template_name = "packer-ubuntu-20"
  template_description = „a generat de ambalaj ubuntu-20.04.3-server-amd64”
  unmount_iso = adevărat

  pool = "ambalator"
  memorie = 4096
  miezuri = 1
  prize = 1
  os = "l26"
  qemu_agent = adevărat
  cloud_init = adevărat
  # scsi_controller = "virtio-scsi-pci"
  discuri {
    tip = "scsi"
    disk_size = "30G"
    stocare_pool = "local-lvm"
    storage_pool_type = "lvm"
    format = "raw"
  }
  adaptoare_rețea {
    punte = "vmbr0"
    model = "virtio"
    firewall = adevărat
    # vlan_tag = 1
  }
}

construi {
  surse = ["source.proxmox-iso.proxmox-ubuntu-20"]
  provider „shell” {
    inline = [
      „în timp ce [ ! -f /var/lib/cloud/instance/boot-finished ]; face ecou „Așteptând cloud-init...”; sleep 1; gata”,
      "ls /"
    ]
  }
}

vars.pkr.hcl

variabila „pm_user” {
  tip = șir
  description = "Nume utilizator Proxmox"
  implicit = „packer@pam!<api-tag>”
}
variabila „pm_pass” {
  tip = șir
  description = "Parola utilizator Proxmox"
  implicit = "ambalator"
}
variabila „pm_token” {
  tip = șir
  description = „Proxmox API Token”
}
variabila „ssh_user” {
  tip = șir
  description = "Utilizator SSH"
  implicit = "ambalator"
}
variabila „ssh_pass” {
  tip = șir
  description = „Parola SSH”
  implicit = "ambalator"
}
variabila „vm_name” {
  tip = șir
  descriere = „Nume VM”
  implicit = "packer_hostname"
}

http/user-data

autoinstalare:
  versiunea: 1
  local: en_US.UTF-8
  tastatură:
    layout: en
    varianta: noi
  identitate:
    Nume gazdă: packer-ubuntu-20
    parola: „$6$exDY1mhS4KUYCE/2$zmn9ToZwTKLhCw.b4/b.ZRTIZM30JZ4QrOQ2aOXJ8yk96xpcCof0kxKwuX1kqLG/ygbJ1f8wxED22bTL4F46P0”
    nume de utilizator: ubuntu
    nume real: ubuntu
  reîmprospătare-instalare: 
    actualizare: fals
  ssh:
    server de instalare: da
    allow-pw: da
  pachete:
    - qemu-guest-agent
  depozitare:
    aspect:
      nume: direct
    schimb:
      dimensiune: 0

Surse

https://www.aerialls.eu/posts/ubuntu-server-2004-image-packer-subiquity-for-proxmox/
https://ubuntu.com/server/docs/install/autoinstall-reference
https://cloudinit.readthedocs.io/en/latest/topics/datasources/nocloud.html
https://cloudinit.readthedocs.io/en/latest/topics/modules.html#write-files
https://cloudalbania.com/posts/2022-01-homelab-with-proxmox-and-packer/

Puncte:0
drapel us

Răspuns

Din fericire, am căutat într-o direcție complet eronată SMH.
Problema este că nu am citit Cloud-init Întrebări frecvente destul de aproape. Tot ce trebuia să fac a fost să adaug #cloud-config ca prima linie din mea datele utilizatorului fişier.

Configurațiile de mai jos vor funcționa, pentru oricine este interesat.

Am pus documentele complete aici. Simțiți-vă liber să citiți cu atenție dacă sunteți interesat https://github.com/aRustyDev/packer

Exemplu.pkr.hcl

ambalator {
  pluginuri_necesare {
    proxmox = {
      versiune = " >= 1.0.1"
      sursă = „github.com/hashicorp/proxmox”
    }
  }
}

sursa „proxmox-iso” „proxmox-ubuntu-20” {
  proxmox_url = „https://proxmox.lan:8006/api2/json”
  vm_name = "packer-ubuntu-20"
  iso_url = „http://iso.repo.lan/ubuntu-20.04.3-live-server-amd64.iso”
  iso_checksum = "f8e3086f3cea0fb3fefb29937ab5ed9d19e767079633960ccb50e76153effc98"
  nume utilizator = "${var.pm_user}"
  parola = "${var.pm_pass}"
  token = „${var.pm_token}”
  nod = "proxmox"
  iso_storage_pool = "local"

  ssh_username = "${var.ssh_user}"
  ssh_password = "${var.ssh_pass}"
  ssh_timeout = "20m"
  ssh_pty = adevărat
  ssh_handshake_attempts = 20

  boot_wait = "5s"
  http_directory = "http" # Pornește un server http local, servește fișierul Preseed
  boot_command = [
    „<esc><wait><esc><wait><f6><wait><esc><wait>”,
    „<bs><bs><bs><bs><bs>”,
    "ip=${cidrhost("192.168.0.0/24", 9)}::${cidrhost("192.168.0.0/24", 1)}:${cidrnetmask("192.168.0.0/24")}: :::${cidrhost("192.168.0.0/24", 1)} ",
    " autoinstall ds=nocloud-net;s=http://httpd.proxmox.local:80/preseed/ubuntu-20/",
    „--- <enter>”
  ]

  insecure_skip_tls_verify = adevărat

  template_name = "packer-ubuntu-20"
  template_description = „a generat de ambalaj ubuntu-20.04.3-server-amd64”
  unmount_iso = adevărat

  pool = "ambalator"
  memorie = 4096
  miezuri = 1
  prize = 1
  os = "l26"
  qemu_agent = adevărat
  discuri {
    tip = "scsi"
    disk_size = "30G"
    stocare_pool = "local-lvm"
    storage_pool_type = "lvm"
    format = "raw"
  }
  adaptoare_rețea {
    punte = "vmbr0"
    model = "virtio"
    firewall = adevărat
  }
}

construi {
  surse = ["source.proxmox-iso.proxmox-ubuntu-20"]
  furnizorul „shell” {
    inline = [
      „în timp ce [ ! -f /var/lib/cloud/instance/boot-finished ]; face ecou „Așteptând cloud-init...”; sleep 1; gata”,
      "ls /"
    ]
  }
}

vars.pkr.hcl

variabila „pm_user” {
  tip = șir
  description = "Nume utilizator Proxmox"
  implicit = „packer@pam!<api-tag>”
}
variabila „pm_pass” {
  tip = șir
  description = "Parola utilizator Proxmox"
  implicit = "ambalator"
}
variabila „pm_token” {
  tip = șir
  description = „Proxmox API Token”
}
variabila „ssh_user” {
  tip = șir
  description = "Utilizator SSH"
  implicit = "ambalator"
}
variabila „ssh_pass” {
  tip = șir
  description = „Parola SSH”
  implicit = "ambalator"
}
variabila „vm_name” {
  tip = șir
  descriere = „Nume VM”
  implicit = "packer_hostname"
}

http/user-data

#cloud-config
autoinstalare:
  versiunea: 1
  local: en_US.UTF-8
  tastatură:
    layout: en
    varianta: noi
  identitate:
    Nume gazdă: packer-ubuntu-20
    parola: „$6$exDY1mhS4KUYCE/2$zmn9ToZwTKLhCw.b4/b.ZRTIZM30JZ4QrOQ2aOXJ8yk96xpcCof0kxKwuX1kqLG/ygbJ1f8wxED22bTL4F46P0”
    nume de utilizator: ubuntu
    nume real: ubuntu
  reîmprospătare-instalare: 
    actualizare: fals
  ssh:
    server de instalare: da
    allow-pw: da
  pachete:
    - qemu-guest-agent
  depozitare:
    aspect:
      nume: direct
    schimb:
      dimensiune: 0
David avatar
drapel cn
Răspunsurile nu includ publicitate, vă rugăm să eliminați.

Postează un răspuns

Majoritatea oamenilor nu înțeleg că a pune multe întrebări deblochează învățarea și îmbunătățește legătura interpersonală. În studiile lui Alison, de exemplu, deși oamenii își puteau aminti cu exactitate câte întrebări au fost puse în conversațiile lor, ei nu au intuit legătura dintre întrebări și apreciere. În patru studii, în care participanții au fost implicați în conversații ei înșiși sau au citit transcrieri ale conversațiilor altora, oamenii au avut tendința să nu realizeze că întrebarea ar influența – sau ar fi influențat – nivelul de prietenie dintre conversatori.