wip - docs (#34)

This commit is contained in:
Stephan Lüscher 2024-05-10 16:25:57 +00:00
parent 4f2130bcce
commit 6cdf77b447
No known key found for this signature in database
GPG key ID: 445779060FF3D3CF
5 changed files with 121 additions and 79 deletions

View file

@ -39,7 +39,7 @@ The reverse proxy dashboard is available at <https://traefik.ublue.local>
### Container Registry ### Container Registry
As container registry we make use of the [Docker Registry 2.0](https://hub.docker.com/_/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 implementation for storing and distributing container images.
The container registry API is available at <https://registry.ublue.local/v2> The container registry API is available at <https://registry.ublue.local/v2>
@ -47,11 +47,14 @@ The container registry API is available at <https://registry.ublue.local/v2>
The blacksmith's work is done with [Ansible](https://docs.ansible.com/ansible/latest/index.html). The blacksmith's work is done with [Ansible](https://docs.ansible.com/ansible/latest/index.html).
The shiny GUI is missing but this should not shy us away. See [usage](#usage) for instructions. There are two methods of operating the forge, either via a GUI available at <https://forge.ublue.local>
or via [just command runner](https://github.com/casey/just).
Detailed usage instructions are available in the [documentation](./docs/index.md) section.
## Handling the forge ## Handling the forge
You can use the `forge.sh` to **setup**, **heat-up** and **cool-down** the forge. You can use the `forge.sh` to **setup**, **heat-up** or **cool-down** the forge.
<!-- markdownlint-disable MD013 --> <!-- markdownlint-disable MD013 -->
@ -62,33 +65,3 @@ You can use the `forge.sh` to **setup**, **heat-up** and **cool-down** the forge
| `./forge.sh cool-down` | Stop the forge | | `./forge.sh cool-down` | Stop the forge |
<!-- markdownlint-enable MD013 --> <!-- markdownlint-enable MD013 -->
### Usage
Once the forge has been setup the following recipes are available via [just command runner](https://github.com/casey/just).
<!-- markdownlint-disable MD013 -->
| Just recipe | Input argument | Default argument value | Description |
| --------------------- | ----------------------- | ------------------------------------------- | -------------------------------------------- |
| `forge_project-clone` | `forge_config_var_file` | $HOME/ublue-os_forge/forge_default_vars.env | Clone git project repository |
| `forge_project-build` | `forge_config_var_file` | $HOME/ublue-os_forge/forge_default_vars.env | Build container image and upload to registry |
<!-- markdownlint-enable MD013 -->
All available settings for the `forge_config_var_file` are documented in the [variables.md](./docs/variables.md)
file. To launch a recipe you simple run:
```sh
just -f forge.just {{ recipe_name }} {{ forge_config_var_file }}
```
**_Example:_**
```sh
just -f forge.just forge_project-clone ~/ublue-os_forge/my-forge-project.env
```
In case you don't have [just command runner](https://github.com/casey/just) available.
Have a look at the [forge.just](./forge.just) file. It easy enough to understand which commands
are executed via the just recipes.

1
docs/gui.md Normal file
View file

@ -0,0 +1 @@
# Usage with GUI

67
docs/index.md Normal file
View file

@ -0,0 +1,67 @@
# Universal Blue - Forge
On-premises Universal Blue. This repository is intended to provide the service units
necessary to set up a self-hosted OS forge for custom images.
## Configuration
Since we are using ansible in the background, all user configurations are loaded via
[`extra-vars`](https://docs.ansible.com/ansible/latest/playbook_guide/playbooks_variables.html#defining-variables-at-runtime)
at runtime. No worries on how things are plugged together, you only have to know where
to create your configuration files. That's all.
So, during forge setup a podman volume `ublue-os_forge-data` is created. All user configuration
etc. is stored there. You can inspect the volume with:
```sh
podman volume inspect ublue-os_forge-data
[
{
"Name": "ublue-os_forge-data",
"Driver": "local",
"Mountpoint": "/var/home/stephan/.local/share/containers/storage/volumes/ublue-os_forge-data/_data",
"CreatedAt": "2024-05-06T21:25:28.818751853+02:00",
"Labels": {},
"Scope": "local",
"Options": {},
"MountCount": 0,
"NeedsCopyUp": true,
"LockNumber": 98
}
]
```
Under the `"Mountpoint:"` you find the actual path on your file system. I would recommend you
symlink this folder to a path more rememberable. For example you can do:
```sh
FORGE_POD_DATA_DIR="$(podman volume inspect ublue-os_forge-data | jq -r '.[0].Mountpoint')"
ln -s $FORGE_POD_DATA_DIR $HOME/ublue-os_forge-data
```
In that folder you will find an example configuration similar to this:
```yaml
## ublue-os forge extra-vars example configuration
## For more details got to https://github.com/ublue-os/forge/blob/main/docs/variables.md
---
forge_git_repository_url: https://github.com/ublue-os/bluefin.git
forge_git_repository_destination: /var/home/stephan/.local/share/containers/storage/volumes/ublue-os_forge-data/_data/data/bluefin
forge_git_repository_version: main
forge_registry_url: registry.ublue.local
```
This file acts as a template. Simple copy it and modify it to your liking. For each project
you want to handle with the forge you can create a dedicated file.
Details about the available variables are documented [here](./variables.md).
## Usage
There are two methods of operating the forge, either via a GUI available at <https://forge.ublue.local>
or via [just command runner](https://github.com/casey/just).
More details about either usage are available here:
- [GUI](./gui.md)
- [just command runner](./just.md)

30
docs/just.md Normal file
View file

@ -0,0 +1,30 @@
# Usage with just command runner
If you don't want to use the [GUI](gui.md) we provide the following recipes
via [just command runner](https://github.com/casey/just).
<!-- markdownlint-disable MD013 -->
| Just recipe | Input argument | Description |
| --------------------- | ----------------------- | -------------------------------------------- |
| `forge_project-clone` | `forge_config_var_file` | Clone git project repository |
| `forge_project-build` | `forge_config_var_file` | Build container image and upload to registry |
<!-- markdownlint-enable MD013 -->
All available settings for the `forge_config_var_file` are documented in the [variables.md](./variables.md)
file. To launch a recipe you simple run:
```sh
just -f forge.just {{ recipe_name }} {{ forge_config_var_file }}
```
**_Example:_**
```sh
just -f forge.just forge_project-clone ~/ublue-os_forge/my-forge-project.env
```
In case you don't have [just command runner](https://github.com/casey/just) available.
Have a look at the [forge.just](../forge.just) file. It easy enough to understand which commands
are executed via the just recipes.

View file

@ -1,52 +1,23 @@
# Variables # Variables
The following sections contains all important variables defined for daily usage. The following sections contains all important variables defined for daily usage.
All variables mentioned here can be declared in a line-delimited file of environment variables. All variables mentioned here can be declared in a yaml configuration file.
An example file on the host system with all variables available will be created on setup Have a look at the [configuration](./index.md#configuration) chapter for details
for you. By default it can be found under `$HOME/ublue-os_forge/forge_default_vars.env`. on where to find the configuration directory.
On playbook launch the variable file will be imported into the ansible container so that The following configuration variables are available and can be set to your liking:
<!-- markdownlint-disable MD013 -->
| Name | Type | Default value | Description |
| ---------------------------------- | ---- | ------------------------------------------------- | ---------------------------------------------------------------- |
| `forge_git_repository_url` | str | <https://github.com/ublue-os/bluefin.git> | Git repository url |
| `forge_git_repository_destination` | str | `{{ forge_data_volume_mountpoint }}`/data/bluefin | Git destination where repository is cloned to. </br> **_Note:_** |
| `forge_git_repository_version` | str | main | Git repository branch or tag or commit version |
| `forge_registry_url` | str | registry.ublue.local | Container registry url |
<!-- markdownlint-enable MD013 -->
On playbook launch your variable file will be imported into the ansible container so that
the settings are available during playbook execution. the settings are available during playbook execution.
## group_vars/all/data.yml
In the [data.yml](../ansible/group_vars/all/data.yml) all variables are defined
which are used in the context of the data handling.
<!-- markdownlint-disable MD013 -->
| name | type | environment variable | default value | description |
| ---------------------------------------- | ---- | -------------------- | ------------------------------------------- | --------------------------------------------- |
| `forge_data_path` | str | `FORGE_DATA_PATH` | $HOME/ublue-os_forge | Path where forge will store files per default |
| `forge_data_default_variables_file_path` | str | | $HOME/ublue-os_forge/forge_default_vars.env | Path to default configuration file |
<!-- markdownlint-enable MD013 -->
## group_vars/all/git.yml
In the [git.yml](../ansible/group_vars/all/git.yml/) all variables are defined which are
used in the context of the git repositories.
<!-- markdownlint-disable MD013 -->
| name | type | environment variable | default value | description |
| ---------------------------------- | ---- | ---------------------------------- | ----------------------------------------- | ---------------------------------------------- |
| `forge_git_repository_url` | str | `FORGE_GIT_REPOSITORY_URL` | <https://github.com/ublue-os/bluefin.git> | Git repository url |
| `forge_git_repository_destination` | str | `FORGE_GIT_REPOSITORY_DESTINATION` | $HOME/ublue-os/forge/bluefin | Git destination where repository is cloned to |
| `forge_git_repository_version` | str | `FORGE_GIT_REPOSITORY_VERSION` | main | Git repository branch or tag or commit version |
<!-- markdownlint-enable MD013 -->
## group_vars/all/registry.yml
In the [registry.yml](../ansible/group_vars/all/registry.yml) all variables are defined
which are used in the context of the container registry.
<!-- markdownlint-disable MD013 -->
| name | type | environment variable | default value | description |
| -------------------- | ---- | -------------------- | -------------------- | ---------------------- |
| `forge_registry_url` | str | `FORGE_REGISTRY_URL` | registry.ublue.local | Container registry url |
<!-- markdownlint-enable MD013 -->