No description
Find a file
2023-09-16 14:22:46 +00:00
.gitlab/issue_templates misc: added other important info 2023-08-11 08:04:24 +00:00
applications feat: earth has been revived to calculate the Question of Life, the Universe and Everything. 2023-09-16 01:35:26 +01:00
machines feat: earth has been revived to calculate the Question of Life, the Universe and Everything. 2023-09-16 01:35:26 +01:00
secrets feat: earth has been revived to calculate the Question of Life, the Universe and Everything. 2023-09-16 01:35:26 +01:00
.gitattributes git: enforce use of LF since we have linux servers 2023-08-07 02:11:07 +01:00
.gitignore fix: eol conversion round 2 2023-01-25 11:48:44 +00:00
.gitlab-ci.yml ci: revert last 2023-08-11 07:52:33 +01:00
flake.lock [skip ci] Updated flake for skynet_ldap_backend 2023-09-16 14:22:46 +00:00
flake.nix feat: splitting up the user side of skynet and the main websites 2023-09-15 20:36:07 +01:00
ITD_Firewall.csv account: update the address used for authentication 2023-08-06 19:00:02 +01:00
README.md doc: add some rough documentation for the cluster 2023-08-07 00:42:32 +01:00

Skynet

This is teh core config for teh skynet cluster which uses NixOS.

Dev

Prep

  1. Install Nix
  2. Enable Flakes

The system ye use does nto matter much, I (@silver) use nix in wsl and it works grand.

Shell

Now ye got nix installed and flakes enabled run nix develop in the root folder (same place this readme is).
The dev dependencies you need to work with the project will be automatically installed.
The specific config for this can be found here.

Specifically it installs Colmena and Agenix.
Colmena is a build and deployment tool, Agenix is for secret management.

All following commands are inside the shell.

Colmena

Building

To build all nodes (servers) run:

colmena build

To build a specific one

colmena build --on skynet

To build a group (for example the dns servers)

colmena build --on @active-dns

Deploy

Deploying is putting (apply-ing) the config tat was built onto the server, there is no need to build first, it will automatically do so.

While the recommended way of deploying is using the CI/CD process there are times when you will have to manually deploy the config.
One such case is the @active-gitlab group if either Gitlab or Gitlab-runner got updated.
Another is if ye have fecked up DNS.

colmena apply --on @active-gitlab

The CI/CD pipeline has a manual job that can be triggered to update @active-gitlab if you know it wont cause issues.

Agenix

Agenix is for storing secrets in an encrypted manner using ssh keys.

All these commands require you to be in the secrets folder cd secrets

Prep

  1. Go to yer .ssh folder and see if you have a id_ed25519 key (tutorial)
  2. Make a pull request to add (id_ed25519.pub) to the secrets config.
  3. An existing admin will pull, run agenix --rekey and commit changes.
  4. Once committed and pushed up and merged in, you will be able to edit secrets.

id_ed25519 is preferred due to its neatness and security (Yes @silver is pedantic.)

Editing

When editing a terminal editor will open (nano).
You must use teh path defined in the secrets.nix file.

agenix -e stream_ulfm.age
agenix -e ldap/self_service.age
agenix -e gitlab/runners/runner01.age

Updating inputs

Occasionally you will want to update the inputs for the project.
It is best to do this every few months or so, there is always a risk of things changing so a small pain often is better than a nightmare if left longer.
As seen in this merge request the layout of one config changed which had to be fixed.

We should be updating nixpkgs at least once a semester, ideally to teh next NixOS release so we cna show ITD our servers are patched and up to date.

nix flake lock --update-input nixpkgs