Ich entschuldige mich vorab für den folgenden polemischen Beitrag. Aber was Canonical da abgeliefert hat ist ehrlichgesagt eine einzige Katastrophe. Seit 22.04 gibt es den Legacy-Debian-Installer nicht mehr, welcher bei 20.04 noch verfügbar war. Möchte man sauber Hosts über PXE komissionieren, ist bei Ubuntu nun cloud-init, subiquity, auto-install oder wie auch immer sie den Unsinn nennen, angesagt. Hauptsache die Buzzword-Quote stimmt, Funktionalität ist nunmehr nebensächlich. „Cloud-init is the industry standard multi-distribution method for cross-platform cloud instance initialization“…
Die neue YAML-Syntax sollte Verbesserungen bringen, aber das Chaos ist dadurch nur noch größer. root-User lassen sich im „identity“ Dictionary nicht anlegen, automatische Updates im Installationsprozess lassen sich nur mit einem Hack abstellen, die Referenzierung auf user-data und user-meta Files ist völlig undurchdacht, die YAML-Files erfordern nicht-YAML-konforme Syntax um zu funktionieren (wer hat sich die bescheuerte Erfordernis von „#cloud-config“ in der ersten Zeile der user-data YAML ausgedacht?), der Installationsprozess wird ewig in die Länge gezogen, ISO-Images sind zusätzlich zum Kernel und der Initramdisk nun auch bei Installation nötig und als wäre das nicht genug, werden diese in der Standardkonfiguration auch noch doppelt geladen (2×1,3GB) sodass eine Installation mindestens 3GB RAM erfordert, mit Hack dann 2GB. Schöne neue Welt.
Versteht mich bitte nicht falsch, der Debian-Installer hatte auch seine Macken, die Partitionierung war katastrophal, aber über die Jahre hat man sich eben irgendwie arrangiert und konnte von Release zu Release mit leichten Anpassungen springen.
Auto-Install reißt das alles ein um dann alles wieder gleichermaßen beschissen und schlecht dokumentiert wieder aufzubauen. Wofür bitte?
Sei es drum, trotz der schlechten Dokumentation und ohne Präzedenzfall habe ich es mit Hilfe geschafft, ein user-data YAML sowie einen beispielhaften Eintrag in der menu.ipxe zu schaffen, um Ubuntu 22.04 sauber mithilfe von iPXE installieren zu können. Sollte das Beispiel bei euch nicht funktionieren, meldet euch bitte in den Kommentaren.
Für weitere Informationen könnt ihr die Dokumentation von Molnar Peter konsultieren. Meine Beispiele stellen insofern eine Erweiterung der seinen dar, als das es hier konkret um iPXE geht und mein user-data YAML auf meine Bedürfnisse angepasst wurde.
user-data YAML
001 002 003 004 005 006 007 008 009 010 011 012 013 014 015 016 017 018 019 020 021 022 023 024 025 026 027 028 029 030 031 032 033 034 035 036 037 038 039 040 041 042 043 044 045 046 047 048 049 050 051 052 053 054 055 056 057 058 059 060 061 062 063 064 065 066 067 068 069 070 071 072 073 074 075 076 077 078 079 080 081 082 083 084 085 086 087 088 089 090 091 092 093 094 095 096 097 098 099 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 | #cloud-config autoinstall: version: 1 locale: en_US.UTF-8 timezone: Europe/Berlin network: version: 2 renderer: networkd ethernets: ens192: dhcp4: true proxy: http : //mein-deb-proxy : 3128/ apt: sources: saltstack.list: source: deb http : //repo.saltstack.com/py3/ubuntu/20.04/amd64/3004 focal main key: | ----- BEGIN PGP PUBLIC KEY BLOCK----- Version: GnuPG v2 mQENBFOpvpgBCADkP656H41i8fpplEEB8IeLhugyC2rTEwwSclb8tQNYtUiGdna9 m38kb0OS2DDrEdtdQb2hWCnswxaAkUunb2qq18vd3dBvlnI+C4/xu5ksZZkRj+fW tArNR18V+2jkwcG26m8AxIrT+m4M6/bgnSfHTBtT5adNfVcTHqiT1JtCbQcXmwVw WbqS6v/LhcsBE//SHne4uBCK/GHxZHhQ5jz5h+3vWeV4gvxS3Xu6v1IlIpLDwUts kT1DumfynYnnZmWTGc6SYyIFXTPJLtnoWDb9OBdWgZxXfHEcBsKGha+bXO+m2tHA gNneN9i5f8oNxo5njrL8jkCckOpNpng18BKXABEBAAG0MlNhbHRTdGFjayBQYWNr YWdpbmcgVGVhbSA8cGFja2FnaW5nQHNhbHRzdGFjay5jb20+iQE4BBMBAgAiBQJT qb6YAhsDBgsJCAcDAgYVCAIJCgsEFgIDAQIeAQIXgAAKCRAOCKFJ3le/vhkqB/0Q WzELZf4d87WApzolLG+zpsJKtt/ueXL1W1KA7JILhXB1uyvVORt8uA9FjmE083o1 yE66wCya7V8hjNn2lkLXboOUd1UTErlRg1GYbIt++VPscTxHxwpjDGxDB1/fiX2o nK5SEpuj4IeIPJVE/uLNAwZyfX8DArLVJ5h8lknwiHlQLGlnOu9ulEAejwAKt9CU 4oYTszYM4xrbtjB/fR+mPnYh2fBoQO4d/NQiejIEyd9IEEMd/03AJQBuMux62tjA /NwvQ9eqNgLw9NisFNHRWtP4jhAOsshv1WW+zPzu3ozoO+lLHixUIz7fqRk38q8Q 9oNR31KvrkSNrFbA3D89uQENBFOpvpgBCADJ79iH10AfAfpTBEQwa6vzUI3Eltqb 9aZ0xbZV8V/8pnuU7rqM7Z+nJgldibFk4gFG2bHCG1C5aEH/FmcOMvTKDhJSFQUx uhgxttMArXm2c22OSy1hpsnVG68G32Nag/QFEJ++3hNnbyGZpHnPiYgej3FrerQJ zv456wIsxRDMvJ1NZQB3twoCqwapC6FJE2hukSdWB5yCYpWlZJXBKzlYz/gwD/Fr GL578WrLhKw3UvnJmlpqQaDKwmV2s7MsoZogC6wkHE92kGPG2GmoRD3ALjmCvN1E PsIsQGnwpcXsRpYVCoW7e2nW4wUf7IkFZ94yOCmUq6WreWI4NggRcFC5ABEBAAGJ AR8EGAECAAkFAlOpvpgCGwwACgkQDgihSd5Xv74/NggA08kEdBkiWWwJZUZEy7cK WWcgjnRuOHd4rPeT+vQbOWGu6x4bxuVf9aTiYkf7ZjVF2lPn97EXOEGFWPZeZbH4 vdRFH9jMtP+rrLt6+3c9j0M8SIJYwBL1+CNpEC/BuHj/Ra/cmnG5ZNhYebm76h5f T9iPW9fFww36FzFka4VPlvA4oB7ebBtquFg3sdQNU/MmTVV4jPFWXxh4oRDDR+8N 1bcPnbB11b5ary99F/mqr7RgQ+YFF0uKRE3SKa7a+6cIuHEZ7Za+zhPaQlzAOZlx fuBmScum8uQTrEF5+Um5zkwC7EXTdH1co/+/V/fpOtxIg4XO4kcugZefVm5ERfVS MA== =dtMN ----- END PGP PUBLIC KEY BLOCK----- storage: swap: size: 4G config: # Physical disk - type : disk id: drive-0 ptable: gpt wipe: superblock-recursive preserve: false name: '' grub_device: false # EFI partition - type : partition # EFI partition /boot/efi number: 1 id: partition-0 device: drive-0 size: 256M flag: boot grub_device: true - type : format # EFI partition format rules id: format-0 volume: partition-0 fstype: fat32 label: ESP - path : /boot/efi # EFI partition mount rules device: format-0 type: mount id: mount-efi # LVM PV - type : partition # LVM partition (PV) number: 2 id: pv-0 device: drive-0 size: -1 grub_device: false # LVM VG - name : VG # LVM VG (system) devices: [ pv-0 ] preserve: false type: lvm_volgroup id: vg-0 # LVM LV ROOT - name : ROOT # LVM LV (root) volgroup: vg-0 size: 8G wipe: superblock preserve: false type: lvm_partition id: lv-0 - fstype : ext4 # LVM LV root - format rules volume: lv-0 preserve: false type: format id: format-root - path : / # LVM LV root - mount rules device: format-root type: mount id: mount-root # LVM LV VAR - name : VAR # LVM LV (root) volgroup: vg-0 size: 12G wipe: superblock preserve: false type: lvm_partition id: lv-1 - fstype : ext4 # LVM LV root - format rules volume: lv-1 preserve: false type: format id: format-var - path : /var # LVM LV root - mount rules device: format-var type: mount id: mount-var # LVM LV DATA - name : DATA # LVM LV (root) volgroup: vg-0 size: -1 wipe: superblock preserve: false type: lvm_partition id: lv-2 - fstype : ext4 # LVM LV root - format rules volume: lv-2 preserve: false type: format id: format-data - path : /data # LVM LV root - mount rules device: format-data type: mount id: mount-data identity: hostname: testname username: setup password: "$6$.SAlxBpn2Ch0I$dPF3313pydThKpTXoHH/2aebmxilJVkPSMXtE8ZDG4rQTakd2VQTNZHKCVYRcPvzzCF3DX49hQr114jKYo7De." ssh: install-server: true allow-pw: true updates: all packages: - salt-minion - python3-mako - python3-psutil user-data: disable_root: false late-commands: - curtin in-target --target=/target -- sed -ie 's/GRUB_TIMEOUT=.\*/GRUB_TIMEOUT=5/' /etc/default/grub - curtin in-target --target=/target -- sed -i '/^#GRUB_TERMINAL/cGRUB_TERMINAL=console' /etc/default/grub - curtin in-target --target=/target -- sed -i '/^GRUB_CMDLINE_LINUX_DEFAULT/cGRUB_CMDLINE_LINUX_DEFAULT=""' /etc/default/grub - curtin in-target --target=/target -- update-grub |
menu.ipxe
1 2 3 | :jammy-autonet kernel http://seedserver.local/ipxe/jammy/vmlinuz initrd=initrd ip=dhcp cloud-config-url=/dev/null url=http://seedserver.local/jammy-live-server-amd64.iso autoinstall ds=nocloud-net;s=http://seedserver.local/preseed/ |
Wünsche maximale Erfolge!
Es gibt neben dem Debian Installer auch noch die Möglichkeit Debian und Ubuntu mit FAI (Fully Automatic Installation) via PXE oder auch von einem customized ISO zu installieren.
Man kann einen eigenen FAI Server aufsetzten und dann sehr fein die Installation steuern. Zu Anfang empfehle ich aber, die FAI.me Dienst zu nutzen, der einem auf einer Webseite ein customized Installations ISO erzeugt.