Configurable menu entries

This commit is contained in:
Alexander Böhm 2021-03-14 10:31:10 +01:00
parent ef02df7cd8
commit d75acde5e7
5 changed files with 65 additions and 17 deletions

View File

@ -1,6 +1,6 @@
# HW4F Netboot Installer
Server die automatische Installation über das Netzwerks von Ubuntu 20.04 im Rahmen des **https://hardwareforfuture.de(Hardware for Future)** Projekts des dezentrale e.V.
Server die automatische Installation über das Netzwerks von Ubuntu 20.04 im Rahmen des https://hardwareforfuture.de(**Hardware for Future**) Projekts des https://dezentrale.space(dezentrale e.V).
Für den Betrieb wird einmalig eine Internetverbindung benötigt. Der Server wird über Ansible aufgesetzt. Hierfür werden verschiedene Komponenten installiert, u.a. FAI (Fully Automatic Installtion). Mit dem Server wird ein Netz aufgespannt, welches für den Anschluß des zu installierenden Rechner verwendet wird. Wenn die Rechner mit dem Netzwerk verbunden sind, können sie über einen Netzwerkboot (F-Testen beim Start des Rechners) über PXE gebootet werden. PXE lädt die erforderliche Dateien vom Server und der FAI-Installer installiert dann Ubuntu auf den Rechner.
@ -60,6 +60,9 @@ ansible-playbook fai.yml
|server_netmask |Netzmaske |255.255.255.0 |
|apt_cacher_offline_mode |true, um nur den vorhanden Packet-Cache als Repository zu nutzen |false |
|debian_release |Debian Release, was für FAI genutzt werden soll. |buster |
|pxe_preselected_entry |Vorausgewählte iPXE-Eintag |`__exit` (von lokale Datenträge start)|
|pxe_menu_timeout |Timeout für iPXE-Menu in Milisekunden |5000 |
|ipxe_additional_entries |Zusätzliche Einträge für iPXE-Menu |keine |
Beispielsweise kann der Server mit obigen Playbook aufgesetzt werden, eine Rechner mit Ubuntu installiert werden und danach der Server wie folgt in den Offline-Installationsmodus versetzt werden:
@ -80,6 +83,45 @@ Danach das Playbook noch einmal ausführen, um die Konfigration zu aktualisieren
ansible-playbook fai.yml
```
#### Zusätzliche Menü-Einträge im iPXE-Menü
Das vordefinierte Playbook für playbook-vagrant.yml(Vagrant) erhält bereits einen zusätzlichen Eintrag für Memtest.
```
ipxe_additional_entries:
memtest:
name: Memtest86+
files: tools/memtest
kernel: memtest86+-5.31b.bin
# other:
# name: Anzeigetext des Eintrags
# files: path/to/files/to/copy
# kernel: Kernel
# args: Argumente für den Kernel
# initrd:
# - initrd0.img
# - initrd1.img
# - ...
# multiboot:
# - module0.img
# - module1.img
# - ...
pxe_preselected_entry: memtest
```
Dabei werden alle Dateien unter, die im ```files``` ausgewiesen sind, in das PXE-Verzeichnis kopiert. Es wird ein zusätzlichen Menüeintrag angelegt mit dem Label ```memtest``` (Name des Eintrags) und als Anzeigetext aus ```name```. Es sind folgende Felder für jeden Boot-Eintrag möglich:
|**Feld** |**Beschreibung** |**iPXE-Argument** |
|--- |--- |--- |
|files |Dateien für den Eintrag | |
|kernel |Zu ladenden Kernel |```kernel``` |
|args |Argumente des Kernel |an Kernel angehängt |
|initrd |InitRD-Images |```initrd``` |
|multiboot |Images für Multiboot-Kernel |```multiboot``` |
Der vorausgewählt Eintrag kann über ```pxe_preselected_entry``` mit dem Label ausgewählt werden. Um FAI auszuwählen muss ```__fai``` gesetzt werden.
## Details
*TBD*

View File

@ -4,28 +4,32 @@
# interface to the clients to install
dhcp_interface: eth1
# interface for a internet connection
wan_interface: eth0
wan_interface: "{{ ansible_default_ipv4.interface }}"
# customized server name
server_name: faiserver
# ip of the server of the installer network
server_ip: 192.168.33.1
pxe_preselected_entry: __fai
ipxe_additional_entries:
dban:
memtest:
name: Memtest86+
files: tools/memtest
kernel: memtest86+-5.31b.bin
# other:
# files: path/to/files/to/copy
# name: Menu Entry
# initrd:
# - initrd0.img
# - initrd1.img
# - ...
# multiboot:
# - module0.img
# - module1.img
# - ...
# other:
# name: Menu Entry
# files: path/to/files/to/copy
# kernel: a-kernel-image
# args: some arguments
# initrd:
# - initrd0.img
# - initrd1.img
# - ...
# multiboot:
# - module0.img
# - module1.img
# - ...
roles:
- fai

View File

@ -21,3 +21,5 @@ http_mirror_fai_path_prefix: "fai"
ipxe_additional_entries:
pxe_preselected_entry: __exit
pxe_menu_timeout: 5000

View File

@ -17,8 +17,8 @@
content: |
#!ipxe
set boot-root {{ http_mirror_ipxe_root_url }}
set menu-default __exit
set menu-timeout 5000
set menu-default {{ pxe_preselected_entry }}
set menu-timeout {{ pxe_menu_timeout }}
set submenu-timeout ${menu-timeout}
isset ${menu-default} || set menu-default __exit

View File

@ -24,7 +24,7 @@
- "{{ fai_live_vmlinuz }}"
- "{{ fai_live_initrd }}"
- name: generate squashfs image of root files
- name: check for generated squashfs image
stat:
path: "{{ fai_squashfs_path }}"
register: squash_img