WIP: Add more documentation/procedures #31

Draft
silver wants to merge 22 commits from fyp_procedures into main
Showing only changes of commit 4e3ca7c896 - Show all commits

View file

@ -0,0 +1,84 @@
# Updating Servers (NixOS)
A short guide on how to update NixOS servers.
This is required at least once a semester in order to keep the systems up to date.
These are some of the easiest servers we have to update.
This is how you update it locally, and then deploy.
## Update
Invoke the devshell for the NixOS repo locally on your computer (TODO: Setup nix and into to devshell).
This will give you all the tools you need to update the NixOS servers.
In that shell you can run these commands.
```shell
# this will update every input, sometimes that is not desired
nix flake update
# This will update a single input, nixpkgs which will update the OS's
nix flake update nixpkgs colmena
# Update multiple at once, these are the core tools and utilities
# Recommended command
nix flake update nixpkgs flake-utils agenix arion alejandra colmena
```
## Build
Now that the inputs have been updated it is time to build it locally to ensure no errors pop up.
For any errors that pop up you can use ``--key-result`` in order to explore the system output.
```shell
# This will build all the servers locally
colmena build
# Build a single one
colmena build --on glados
# Build a logical group of them
colmena build --on @active-dns
# Build all but keep the outputs in ``.gcroots``
# This is useful if you need to explore the config locally
colmena build --keep-result
```
## Deploy
It is now time to commit and deploy the updates.
### Manually
Most of the flags from the build step above apply for teh deploy step.
You dont need to have the files committed to do this, so it cna be useful for testing.
```shell
# This will build all the servers locally
colmena deploy
# Build a single one
colmena deploy --on glados
# Build a logical group of them
colmena deploy --on @active-dns
```
### Pipeline
To deploy via the pipeline simply commit and push to Forgejo.
The pipeline will build and deploy to almost all the servers.
Downside of this is slow iteration for testing, but it is useful if you are pretty sure of teh changes.
#### Git Server/Runner
The CI/CD pipelines we have run on Glados and Wheatly, as such the pipelines are not able to update these two servers on their own.
These need to be updated manually using any of these commands:
```shell
# This will deploy all the servers
colmena deploy
# Deploy a single one
colmena deploy --on glados wheatly
# Deploy a logical group of them
colmena deploy --on @active-git
```