You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardexpand all lines: IMAGE_STORE.md
+1-1
Original file line number
Diff line number
Diff line change
@@ -11,7 +11,7 @@ The actual directory layout should look like:
11
11
12
12
Where `<imagesdir>` is `/` for the master branch and `/${CI_COMMIT_REF_SLUG}/` for branches and merge requests.
13
13
14
-
`<os>` is the name of the os in use, we currently only have `ubuntu` and `firewall`, where `firewall` is derived from the `ubuntu` image.
14
+
`<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).
15
15
16
16
`<major.minor>` specifies the major and minor number of the OS, which is case of ubuntu "19.10", "19.10", "20.04" and so on. This version must follow the semantic versioning specification, whereas we tolerate a leading zero for the minor version which is quite common for some OSes.
This project builds operating system images usable for bare metal server provisioning with [metal-stack](https://metal-stack.io).
4
-
Every OS image is build from a Dockerfile, exported to a lz4 compressed tarball, and uploaded to <https://images.metal-stack.io/>.
3
+
This project builds operating system images that can be used for bare metal server deployments with [metal-stack](https://metal-stack.io).
4
+
Every OS image is built from a Dockerfile, exported to a lz4 compressed tarball, and uploaded to <https://images.metal-stack.io/>.
5
5
6
-
For security scanning those images are also pushed to [quay.io/metalstack](https://quay.io/user/metalstack).
6
+
More information about the image store is available in [IMAGE_STORE.md](./IMAGE_STORE.md).
7
7
8
-
Further information about the image store is available at [IMAGE_STORE.md](./IMAGE_STORE.md).
8
+
Information about our initial architectural decisions can be found in [ARCHITECTURE.md](./ARCHITECTURE.md).
9
9
10
-
Information about our initial architectural decisions may be found in [ARCHITECTURE.md](./ARCHITECTURE.md).
10
+
## Supported Images
11
+
12
+
Currently these images are supported:
13
+
14
+
1. Debian 12
15
+
1. Ubuntu 22.04
16
+
1. Firewall 3.0-ubuntu (based on Ubuntu 22.04)
17
+
1. Nvidia (based on Debian 12)
18
+
19
+
## Unsupported Images
20
+
21
+
We also publish images that we need for special purposes but do not officially support. Use at your own risk.
22
+
23
+
1. CentOS 7
24
+
1. Almalinux 9
25
+
26
+
### GPU Support
27
+
28
+
With the nvidia image a worker has GPU support. Please check our official documentation on [docs.metal-stack.io](https://docs.metal-stack.io/stable/overview/gpu-support/) on how to get this running on Kubernetes.
29
+
30
+
## How new images become usable in a metal-stack partition
31
+
32
+
Images are synchronized to partitions using a service called [metal-image-cache-sync](https://github.com/metal-stack/metal-image-cache-sync). The service mirrors the public operating system images to the management servers and transparently serves the metal images within a partition.
33
+
34
+
Released images are tagged with the release date and can be accessed using the following image URL pattern:
These URLs can be used to define an image at the metal-api.
11
47
12
48
## Local development and integration testing
13
49
14
-
Before you can start developing changes for metal-images or even introduce new operating systems, you have to install the following tools:
50
+
Please also refer to our documentation on docs.metal-stack.io on [Build Your Own Images](https://docs.metal-stack.io/stable/overview/os/#Building-Your-Own-Images) to check for the contract an OS image is expected to fulfill.
51
+
52
+
Before you can start developing changes for metal-images or even introduce new operating systems, you should install the following tools:
15
53
16
54
-**docker**: for sure
17
55
-**kvm**: hypervisor used for integration tests
@@ -36,76 +74,45 @@ make centos
36
74
37
75
# for nvidia images
38
76
make nvidia
77
+
78
+
# for almalinux images
79
+
make almalinux
39
80
```
40
81
41
82
For integration testing the images are started as [firecracker vm](https://firecracker-microvm.github.io/) with [weaveworks/ignite](https://github.com/weaveworks/ignite) and basic properties like interfaces to other metal-stack components, kernel parameters, internet reachability, DNS resolution etc. are checked with [goss](https://github.com/aelsabbahy/goss) in a GitHub action workflow. The integration tests are also executed when you build an image locally with.
42
83
43
-
## Supported Images
44
-
45
-
Currently these images are supported:
84
+
### Debugging Image Provisioning
46
85
47
-
1. Debian 12
48
-
1. Ubuntu 22.04
49
-
1. Firewall 3.0-ubuntu (based on Ubuntu 22.04)
50
-
1. Nvidia (based on Debian 12)
86
+
In some cases it may be necessary to manually figure out the commands for provisioning a machine image. To do this in a real server environment, it is possible to hook into the metal-hammer through the machine's serial console.
51
87
52
-
### GPU Support
88
+
You can interrupt the metal-hammer at any time by sending a keyboard interrupt. The metal-hammer takes a short pause before booting into the operating system kernel, which is a good time to send the interrupt.
53
89
54
-
With the nvidia image a worker has GPU support. The cluster user must execute the following commands to get GPU support in Kubernetes:
90
+
To prevent the machine from rebooting, you should immediately issue the following command:
If you want to enter the operating system through `chroot`, you need to remount some file systems that were mounted by the metal-hammer during provisioning:
88
97
89
-
1. Centos 7.0
90
-
91
-
## Schedule
92
-
93
-
Builds from the master branch are scheduled on every sunday night at 1:10 o'clock to get fresh metal-images every week.
94
-
95
-
## How new images get usable in a metal-stack partition
96
-
97
-
Images are synced to partitions with a service that mirrors the public bucket and which runs on the management servers of partitions.
98
-
99
-
Released Images are accessible with under this image URL, where `20230710` here is the tag of this repository.
# maybe you can mount further file systems here, which was not possible in the u-root environment of the metal-hammer
114
+
vgchange -ay
115
+
mount /dev/csi-lvm/varlib /var/lib/
116
+
```
110
117
111
-
Those URLs can be used to define an image at the metal-api.
118
+
Keep in mind that you are still running on the metal-hammer kernel, which is different from the kernel that will be run in the operating system after provisioning. For further information on the metal-stack machine provisioning sequence, check out documentation on [docs.metal-stack.io](https://docs.metal-stack.io/stable/overview/architecture/#Machine-Provisioning-Sequence). The kernel used by the metal-hammer is built on our own inside the [kernel repository](https://github.com/metal-stack/kernel).
0 commit comments