WIP: Add more documentation/procedures #31
1 changed files with 84 additions and 0 deletions
84
src/procedures/skynet/server_update_nixos.md
Normal file
84
src/procedures/skynet/server_update_nixos.md
Normal 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
|
||||
```
|
Loading…
Reference in a new issue