|
11 | 11 | * build an image based on the published docker images of OS vendors |
12 | 12 | * add necessary packages and services in a Dockerfile for the OS to provide: |
13 | 13 | * sudo functionality |
14 | | - * a SSH-Server |
15 | | - * the FRR-Suite for BGP (the servers act as a BGP router/speaker) |
16 | | - * yq for reading YAML-Files |
17 | | -* provide a `install.sh` file within the image that will be invoked by the `metal-hammer` |
18 | | - * writes the `/etc/fstab` based on the UUIDs of the connected disks |
19 | | - * setup UEFI-Boot |
20 | | - * create an OS user with sudo rights |
21 | | - * set the SSH public keys that are allowed to log into the system |
22 | | - * sets the hostname |
23 | | - * sets the network configuration of the server (IP-Addresses at loopback device, ASN for BGP) |
24 | | - * sets the token used for phoning home to the metal-api |
25 | | - |
26 | | -The `install.sh` has to be implemented for every OS. Between `install.sh` and the `metal-hammer` component exists this contract: |
27 | | - |
28 | | -* the `metal-hammer` writes the file `/etc/metal/install.yaml` which contains data, that is not known during build time and can be customized by users of the `metal-api` |
29 | | - |
30 | | - ```yaml |
31 | | - --- |
32 | | - hostname: some |
33 | | - ipaddress: 10.0.0.2/32 |
34 | | - asn: 420000001 |
35 | | - sshpublickeys: "" |
36 | | - ``` |
37 | | -
|
38 | | -* `install.sh` is expected to create the file `/etc/metal/boot-info.yaml` which contains data, that the `metal-hammer` will use for the `kexec-reboot` of the server. |
39 | | - |
40 | | - ```yaml |
41 | | - --- |
42 | | - initrd: |
43 | | - cmdline: |
44 | | - kernel: |
45 | | - ``` |
| 14 | + * an SSH-Server |
| 15 | + * the [FRR-Suite](https://frrouting.org/) for BGP (the servers act as a BGP router/speaker) |
| 16 | + * [ignition](https://www.flatcar.org/docs/latest/provisioning/ignition/) for userdata execution |
| 17 | + * `mdadm` for raid fsl configuration |
| 18 | + * `lvm` for volume group fsl provisioning |
| 19 | + * `grub` for bootloader installation |
| 20 | + * `timesyncd` for NTP time synchronization |
| 21 | +* these services will be configured by the [os-installer](https://github.com/metal-stack/os-installer) invoked during machine provisioning by the metal-hammer |
| 22 | +* for out-of-tree custom images, build owners might want to provide a `/etc/metal/os-installer.yaml` file within the image that can provide special instructions for the os-installer |
0 commit comments