Skip to content

Commit 88073c5

Browse files
authored
Update docs. [skip ci] (#418)
1 parent f73b679 commit 88073c5

4 files changed

Lines changed: 18 additions & 40 deletions

File tree

ARCHITECTURE.md

Lines changed: 9 additions & 32 deletions
Original file line numberDiff line numberDiff line change
@@ -11,35 +11,12 @@
1111
* build an image based on the published docker images of OS vendors
1212
* add necessary packages and services in a Dockerfile for the OS to provide:
1313
* 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

CONTRIBUTING.md

Lines changed: 0 additions & 3 deletions
This file was deleted.

IMAGE_STORE.md

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -4,12 +4,12 @@ The metal-images tarballs are stored on <https://images.metal-stack.io/>. The ta
44
The actual directory layout should look like:
55

66
```bash
7-
<imagesdir>/<os>/<major.minor>/<patch>/img.tar.lz4
8-
<imagesdir>/<os>/<major.minor>/<patch>/img.tar.lz4.md5
9-
<imagesdir>/<os>/<major.minor>/<patch>/packages.txt
7+
<imagesdir>/<os>/<major.minor>/img.tar.lz4
8+
<imagesdir>/<os>/<major.minor>/img.tar.lz4.md5
9+
<imagesdir>/<os>/<major.minor>/packages.txt
1010
```
1111

12-
Where `<imagesdir>` is `/` for the master branch and `/${CI_COMMIT_REF_SLUG}/` for branches and merge requests.
12+
Where `<imagesdir>` is `stable` for the master branch, `<patch>` for releases and `pull_requests/<pr-number>-<branch-name>` for pull requests.
1313

1414
`<os>` is the name of the os in use, some images like `firewall` are derived from another os image (in this case the `ubuntu` image).
1515

README.md

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@
66
[![Build](https://github.com/metal-stack/metal-images/actions/workflows/docker.yaml/badge.svg?branch=master)](https://github.com/metal-stack/metal-images/actions)
77
[![Slack](https://img.shields.io/badge/slack-metal--stack-brightgreen.svg?logo=slack)](https://metal-stack.slack.com/)
88

9-
This project builds operating system images that can be used for bare metal server deployments with [metal-stack](https://metal-stack.io).
9+
This project builds officially supported operating system images that can be used for bare metal server deployments with [metal-stack](https://metal-stack.io).
1010
Every OS image is built from a `Dockerfile`, exported to a `lz4` compressed tarball, and uploaded to [images.metal-stack.io](https://images.metal-stack.io/).
1111

1212
More information about the image store is available in [IMAGE_STORE.md](./IMAGE_STORE.md).
@@ -28,6 +28,10 @@ We also publish images that we need for special purposes but do not officially s
2828

2929
1. Almalinux 9
3030

31+
## Building Custom Images (Out-Of-Tree)
32+
33+
It is fully possible to build custom operating system images and provision them through the metal-stack without directly contributing them to this repository. Please find information [in the official docs](https://metal-stack.io/docs/next/operating-systems#building-your-own-images) and in the [image builder contract](./ARCHITECTURE.md).
34+
3135
### GPU Support
3236

3337
GPU support for workers are available by using the `debian-nvidia` images. Please check our official documentation at [metal-stack.io](https://metal-stack.io/docs/gpu-workers) how to get this running on Kubernetes.

0 commit comments

Comments
 (0)