2023-04-26 23:58:51 +03:00
|
|
|
# forge
|
2023-04-27 22:40:18 +03:00
|
|
|
|
2023-04-27 05:11:52 +03:00
|
|
|
On-premises Universal Blue
|
2023-04-27 00:00:56 +03:00
|
|
|
|
2023-04-27 22:40:18 +03:00
|
|
|
This repo is intended to provide the service units necessary to set up a
|
|
|
|
self-hosted OS forge for custom images.
|
|
|
|
|
2023-05-01 19:30:14 +03:00
|
|
|
> **Warning**
|
|
|
|
> This project is "work in progress" and not ready for production
|
|
|
|
|
2023-04-27 22:40:18 +03:00
|
|
|
## Vision
|
2023-04-27 05:11:52 +03:00
|
|
|
|
|
|
|
Imagine something like a home lab or a university lab:
|
|
|
|
|
|
|
|
1. Deploy forge
|
2023-04-27 22:40:18 +03:00
|
|
|
2. Go into the WebUI, clone in your favorite uBlue repo and make changes
|
|
|
|
3. Forge automatically starts to build the images
|
2023-04-27 05:11:52 +03:00
|
|
|
4. PXE boot the clients, select ublue in the menu
|
|
|
|
5. Eat tacos
|
|
|
|
6. Return to a fully deployed lab with centralized package management
|
|
|
|
|
2023-04-27 22:40:18 +03:00
|
|
|
## What we have so far
|
|
|
|
|
|
|
|
We are still working on making the vision a reality. The following has been
|
|
|
|
implemented so far:
|
|
|
|
|
|
|
|
### Certificate Authority
|
|
|
|
|
|
|
|
We use a [Minica](https://github.com/jsha/minica) as simple CA to generate a
|
|
|
|
key pair and a root certificate for `*.ublue.local`. The wildcard certificate is
|
|
|
|
then made available to all other components and are valid for 2 years and 30 days.
|
|
|
|
|
2023-04-28 21:03:25 +03:00
|
|
|
### Reverse Proxy
|
|
|
|
|
|
|
|
As an entry point for all components we use [Caddy](https://caddyserver.com/) as
|
|
|
|
a reverse proxy. Based on URL routing it will redirect the traffic to the
|
|
|
|
right container instance.
|
|
|
|
|
2023-04-27 22:40:18 +03:00
|
|
|
### Container Registry
|
|
|
|
|
|
|
|
As container registry we make use of the [Docker Registry 2.0](https://hub.docker.com/_/registry/)
|
|
|
|
implementation for storing and distributing container images
|
|
|
|
|
2023-04-28 21:03:25 +03:00
|
|
|
The container registry is available at `registry.ublue.local`
|
2023-04-27 05:11:52 +03:00
|
|
|
|
2023-05-01 19:30:14 +03:00
|
|
|
### WebUI
|
|
|
|
|
|
|
|
As a WebUI we use [Ansible Semaphore](https://www.ansible-semaphore.com/).
|
|
|
|
|
|
|
|
The WebUI is available at `forge.ublue.local`
|
|
|
|
|
|
|
|
You can use the the user `ublue` and password `ublue` to login.
|
|
|
|
|
|
|
|
> **Warning**
|
|
|
|
> At the moment there's only a dummy project included. Tasks for real life usage
|
|
|
|
> will be included soon.
|
|
|
|
|
2023-05-04 20:05:33 +03:00
|
|
|
## Handling the forge
|
2023-04-27 05:11:52 +03:00
|
|
|
|
2023-05-04 20:05:33 +03:00
|
|
|
You can use the `forge.sh` to **setup**, **heat-up** and **cool-down** the forge.
|
|
|
|
|
|
|
|
| Command | Description |
|
|
|
|
| ---------------------- | -------------------------------------------- |
|
|
|
|
| `./forge.sh setup` | Setup the forge for the first time or update |
|
|
|
|
| `./forge.sh heat-up` | Start the forge |
|
|
|
|
| `./forge.sh cool-down` | Stop the forge |
|