More than a documentation, this is an example of installing Tinkerbell in a homelab. The homelab is made of 10 Intel NUCs, with one of them picked to be the Provisioner machine running:
- Tink Server
- Tink CLI
- And everything that runs as part of the docker-compose in sandbox
This page is inspired by Aaron a community member who wrote 'Tinkerbell or iPXE boot on OVH'.
The jq is a command line based JSON processor that allows to transform, filter, slice, map, or perform other operations on JSON data. This tutorial demonstrates how to install jq on Ubuntu 20.04. Run the following commands to update the package lists and install jq.
In this project we will use Sandbox and everything it depends on. Pick a server, a laptop, or as in this example, an Intel NUC.
- $ jq -version jq-1.6. If the command does not work, you may have to install the EPEL repository, then run the following command. Enter y when prompted. $ sudo yum install epel-release Loaded plugins: changelog, fastestmirror, langpacks, priorities, product-id, search-disabled-repos, subscription-manager This system is not registered with an entitlement server.
- $ brew install jq $ which jq /usr/local/bin/jq $ jq -version jq-1.6 Docker $ which docker /usr/local/bin/docker $ docker -version Docker version 18.09.1.
- Docker is the next thing that is needed for Home Assistant Supervised. I will show you how to install it on a Raspberry Pi. If you have different device go to docker.com and check which is the best way to install it for your setup. For the Raspberry Pi, execute the following to get the official Docker installation script.
This guide also provides a little more of an explanation with very little automation for what happens under the hood in guides like:
This guide assumes:
- You are familiar with the underline operating system you decided to use.
- You can access the device where you want to install Tinkerbell Provisioner using SSH or Serial console.
To get Tinkerbell, clone the
sandbox repository or download the latestrelease. At time of writing it is v0.5.0.
In this case we are using the latest sandbox release that today is v0.4.0. It is important to checkout a specific version and have a look at the changelog when you update. Tinkerbell is under development, but we guarantee as best as we can that tags are good and working end-to-end.
Install Jq Docker Download
Generate the Configuration File
The sandbox sets up Tinkerbell using the
setup.sh relies on a
.env file that can be generated running the command:
In this case, the
eth1. The output of this command will be stored inside
./.env. It will look like this:
./.env file has some explanatory comments, but there are a few things to note about the contents. The environment variables in the
Tinkerbell Stack version block pin the various parts of the stack to a specific version. You can think of it as a release bundle.
If you are developing or you want to test a different version of a particular tool let's say Hegel, you can build and push a docker image, replace
TINKERBELL_TINK_HEGEL_IMAGE with your tag and you are good to go.
Tinkerbell needs a static and predictable IP, that's why the
setup.sh script specifies and sets its own with
TINKEBELL_HOST_IP. It is used by Boots to serve the operating system installation environment, for example. And Sandbox provisions (via Docker Compose) an Nginx server that you can use to serve any file you want (OSIE is served via that Nginx).
If your Tinkerbell host IP and LAN CIDR is different than
192.168.1.1/29, youcan set the following environment variables before running the script:
setup.sh script does a bunch of manipulation to your local environment, so first weneed to install the required dependencies:
Run the Setup Script
Before running the setup.sh script, there are a few handy things to know about it.
Install Jq Alpine Docker
setup.sh script's main responsibility is to setup the network. It creates a certificate that will be used to setup the registry (this will may change soon). It downloads OSIE and places it inside the Nginx weboot (
You can use the webroot for your own purposes, it is part of
gitignore and other than OSIE you can serve other operating systems that you want to install in your other servers, or even public ssh keys (whatever you need a link for).
If you're managing machines on a physical network (as in, not Vagrant VMs), youcan set the environment variable
TINKERBELL_SKIP_NETWORKING to a non-emptyvalue to bypass virtual networking setup.
Now to execute
Load the configuration file:
and run it:
At the end of the command you have everything you need to start up the TinkerbellProvisioner Stack and we use docker-compose for that.
Install Jq Docker Linux
Time to Party
Install Jq Docker Download
At this point let me point you to the 'Local with Vagrant' setup guide because you have everything you need to play with Tinkerbell. Enjoy