From 7f6d3b2c15ef13b479ae28a2429f84b5f0e51986 Mon Sep 17 00:00:00 2001 From: Gaurav Gahlot Date: Tue, 20 Apr 2021 19:34:17 +0530 Subject: [PATCH] update stack details Signed-off-by: Gaurav Gahlot --- README.md | 60 +++++++++++++++++++++++++++++++++++++------------------ 1 file changed, 41 insertions(+), 19 deletions(-) diff --git a/README.md b/README.md index c291ec3cf..bd87c8f97 100644 --- a/README.md +++ b/README.md @@ -7,34 +7,56 @@ This repository is [Experimental](https://github.com/packethost/standards/blob/master/experimental-statement.md) 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. -It is comprised of following five major components: +## What's Powering Tinkerbell? -1. A DHCP server ([boots](https://github.com/tinkerbell/boots)) -2. A workflow engine (tink, this repository) -3. A metadata service ([hegel](https://github.com/tinkerbell/hegel)) -4. An in-memory installation environment([osie](https://github.com/tinkerbell/osie)) -5. A controller/handler of BMC interactions([pbnj](https://github.com/tinkerbell/pbnj)) +The Tinkerbell stack consists of several microservices, and a gRPC API: -The workflow engine is comprised of a server and a CLI, which communicates over gRPC. -The CLI is used to create a workflow and its building blocks: templates and targeted hardware. +### Tink + +[Tink][1] 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 + +[Boots][2] 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 + +[Hegel][3] 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 + +[OSIE][4] is Tinkerbell's default an in-memory installation environment for bare metal. +It installs operating systems and handles deprovisioning. + +### Hook + +[Hook][5] 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 + +[PBnJ][6] is an optional microservice that can communicate with baseboard management controllers (BMCs) to control power and boot settings. ## Building -Use `make help` Luke. +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. -## Workflow - -A workflow is a framework responsible for handling flexible, bare metal provisioning, that is... - -- standalone and does not need the Packet API to function -- contains `Boots`, `Tink`, `Hegel`, `OSIE`, `PBnJ` and workers -- can bootstrap any remote worker using `Boots + Hegel + OSIE + PBnJ` -- can run any set of actions as Docker container runtimes -- receive, manipulate, and save runtime data - ## Website For complete documentation, please visit the Tinkerbell project hosted at [tinkerbell.org](https://tinkerbell.org). + +[1]: https://github.com/tinkerbell/tink +[2]: https://github.com/tinkerbell/boots +[3]: https://github.com/tinkerbell/hegel +[4]: https://github.com/tinkerbell/osie +[5]: https://github.com/tinkerbell/hook +[6]: https://github.com/tinkerbell/pbnj