Skip to content

Commit

Permalink
update stack details
Browse files Browse the repository at this point in the history
Signed-off-by: Gaurav Gahlot <[email protected]>
  • Loading branch information
gauravgahlot committed Apr 22, 2021
1 parent 5d58c4b commit 4d1c31b
Showing 1 changed file with 41 additions and 19 deletions.
60 changes: 41 additions & 19 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -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

0 comments on commit 4d1c31b

Please sign in to comment.