This repository is Experimental meaning that it's based on untested ideas or techniques and not yet established or finalized or involves a radically new and innovative style! This means that support is best effort (at best!) and we strongly encourage you to NOT use this in production.
Tinkerbell is licensed under the Apache License, Version 2.0. See LICENSE for the full license text. Some of the projects used by the Tinkerbell project may be governed by a different license, please refer to its specific license.
Tinkerbell is part of the CNCF Projects.
The Tinkerbell community meets bi-weekly on Tuesday. The meeting details can be found here.
Community Resources:
The Tinkerbell stack consists of several microservices, and a gRPC API:
Tink is the short-hand name for the tink-server, tink-worker, and tink-cli.
tink-worker
and tink-server
communicate over gRPC, and are responsible for processing workflows.
The CLI is the user-interactive piece for creating workflows and their building blocks, templates and hardware data.
Boots is Tinkerbell's DHCP server. It handles DHCP requests, hands out IPs, and serves up iPXE. It uses the Tinkerbell client to pull and push hardware data. It only responds to a predefined set of MAC addresses so it can be deployed in an existing network without interfering with existing DHCP infrastructure.
Hegel is the metadata service used by Tinkerbell and OSIE. It collects data from both and transforms it into a JSON format to be consumed as metadata.
OSIE is Tinkerbell's default an in-memory installation environment for bare metal. It installs operating systems and handles deprovisioning.
Hook is the newly introduced alternative to OSIE. It's the next iteration of the in-memory installation environment to handle operating system installation and deprovisioning.
PBnJ is an optional microservice that can communicate with baseboard management controllers (BMCs) to control power and boot settings.
Use make help
.
The most interesting targets are make all
(or just make
) and make images
.
make all
builds all the binaries for your host OS and CPU to enable running directly.
make images
will build all the binaries for Linux/x86_64 and build docker images with them.
Rather than adding a bunch of command line options or a config file, OpenTelemetry is configured via environment variables. The most relevant ones are below, for others see https://github.com/equinix-labs/otel-init-go
Currently this is just for tracing, metrics needs to be discussed with the community.
Env Variable | Required | Default |
---|---|---|
OTEL_EXPORTER_OTLP_ENDPOINT |
n | localhost |
OTEL_EXPORTER_OTLP_INSECURE |
n | false |
OTEL_LOG_LEVEL |
n | info |
To work with a local opentelemetry-collector, try the following. For examples of how to set up the collector to relay to various services take a look at otel-cli
export OTEL_EXPORTER_OTLP_ENDPOINT=localhost:4317
export OTEL_EXPORTER_OTLP_INSECURE=true
./cmd/tink-server/tink-server <stuff>
For complete documentation, please visit the Tinkerbell project hosted at tinkerbell.org.