siderolabs / sidero

Sidero Metal is a bare metal provisioning system with support for Kubernetes Cluster API.
https://www.sidero.dev
Mozilla Public License 2.0
409 stars 63 forks source link

Documentation for ServerClass #728

Open steverfrancis opened 2 years ago

steverfrancis commented 2 years ago

Feature Request How are ServerClass qualifiers set? And what are the possible keys?

Description Docs currently say "There are currently two keys: cpu, systemInformation" cpu supports at least the fields manufacturer and version systemInformation supports version

(these are all the documentation examples.)

What else is in those fields? How are they populated? If the docs said "These keys are populated from the output of hwinfo, dmesg, or ipmi, or sysctl, or dmidecode" (or whatever it actually is) then people would be able to easily see what fields are or should be present, and what values to expect.

Ah - I found in "Resources" that there is "a "discovery" process in which it registers with the management plane and provides SMBIOS information such as the CPU manufacturer and version, and memory information."

So I'd suggest something like: "The systeminformation keys are set from the SMBios hardware information. On a regular linux system, this information is exposed by running dmidecode -t system. Any of the key/value pairs can be used in specifying qualifier filters."

But... if it is in fact reporting SMBios like from dmidecode -t system - how do you get memory information, as the docs say you can do? That is a separate class from system.... and there are no examples. Can other query classes (other than CPU and system) be used?

ossfellow commented 2 years ago

I am indeed struggling with this very same topic. For brand new bare metal servers located in a remote data centre, how can one know identify or query valid ServerClass qualifiers?

smira commented 2 years ago

@masoudbahar the easiest is to get Servers registered first, inspect the Server.spec to see properties available and build ServerClass based on the information provided.

ossfellow commented 2 years ago

@smira, I did use your recommendation successfully; thank you. I was running some tests and noticed that SMBIOS also provides the server uuid, which at least on physical servers is supposed/guaranteed to be unique. uuid is also available in server management tools like HP iLO (so is serial number). So, it seems it could be used as a precise qualifier for machine resources, when needed (e.g. cases with special hardware or function). Did you have any reservations about including/excluding it, when you decided on Talos selected list of qualifiers?

smira commented 2 years ago

you could assign specific labels to specific Servers by UUID, and use that labels in qualifiers I guess