[readme] update
All checks were successful
Check flake syntax / flake-check (push) Successful in 4m30s
All checks were successful
Check flake syntax / flake-check (push) Successful in 4m30s
This commit is contained in:
75
README.md
75
README.md
@@ -1,44 +1,20 @@
|
|||||||
# malobeo infrastructure
|
# malobeo infrastructure
|
||||||
|
|
||||||
this repository nxios configurations of the digital malobeo infrastructure. it should be used to setup, test, build and deploy different hosts in a reproducible manner.
|
this repository contains nixos configurations of the digital malobeo infrastructure. it should be used to setup, test, build and deploy different hosts in a reproducible manner.
|
||||||
|
|
||||||
the file structure is based on this [blog post](https://samleathers.com/posts/2022-02-03-my-new-network-and-deploy-rs.html)
|
|
||||||
|
|
||||||
## hosts
|
|
||||||
|
|
||||||
#### durruti
|
|
||||||
- nixos-container running on dedicated hetzner server
|
|
||||||
- login via ```ssh -p 222 malobeo@dynamicdiscord.de```
|
|
||||||
- if rebuild switch fails due to biglock do ```mount -o remount,rw /nix/var/nix/db```
|
|
||||||
- currently is running tasklist in detached tmux session
|
|
||||||
- [x] make module with systemd service out of that
|
|
||||||
|
|
||||||
## creating a new host
|
|
||||||
|
|
||||||
### setting up filesystem
|
|
||||||
currently nixos offers no declarative way of setting up filesystems and partitions. that means this has to be done manually for every new host. [to make it as easy as possible we can use this guide to setup an encrypted zfs filesystem](https://openzfs.github.io/openzfs-docs/Getting%20Started/NixOS/Root%20on%20ZFS.html)
|
|
||||||
|
|
||||||
*we could create a shell script out of that*
|
|
||||||
|
|
||||||
### deploying configuration
|
### deploying configuration
|
||||||
|
|
||||||
#### local deployment
|
hosts are deployed automatically from master. The [hydra build server](https://hydra.dynamicdiscord.de/jobset/malobeo/infrastructure) will build new commits and on success, hosts will periodically pull those changes.
|
||||||
``` shell
|
Big changes (like updating flake lock) could be commited to the staging branch first. [Hydra builds staging seperate](https://hydra.dynamicdiscord.de/jobset/malobeo/staging), and on success you can merge into master.
|
||||||
nixos-rebuild switch --use-remote-sudo
|
|
||||||
```
|
|
||||||
|
|
||||||
#### remote deployment
|
### deploy fresh host
|
||||||
|
if you want to deploy a completly new host refer to [docs](https://docs.malobeo.org/anleitung/create.html)
|
||||||
|
|
||||||
you need the hostname and ip address of the host:
|
### testing configuration
|
||||||
``` shell
|
|
||||||
nixos-rebuild switch --flake .#<hostname> --target-host root@<ip_address> --build-host localhost
|
|
||||||
```
|
|
||||||
|
|
||||||
in this case 'localhost' is used as buildhost which can be usefull if the target host is low systemresources
|
|
||||||
|
|
||||||
|
refer to https://docs.malobeo.org/anleitung/microvm.html#testing-microvms-locally
|
||||||
|
|
||||||
## development
|
## development
|
||||||
|
|
||||||
### requirements
|
### requirements
|
||||||
we use flake based configurations for our hosts. if you want to build configurations on you own machine you have to enable flakes first by adding the following to your *configuration.nix* or *nix.conf*
|
we use flake based configurations for our hosts. if you want to build configurations on you own machine you have to enable flakes first by adding the following to your *configuration.nix* or *nix.conf*
|
||||||
``` nix
|
``` nix
|
||||||
@@ -55,46 +31,13 @@ a development shell with the correct environment can be created by running ```ni
|
|||||||
If you're using direnv you can add flake support by following those steps: [link](https://nixos.wiki/wiki/Flakes#Direnv_integration)
|
If you're using direnv you can add flake support by following those steps: [link](https://nixos.wiki/wiki/Flakes#Direnv_integration)
|
||||||
|
|
||||||
### build a configuration
|
### build a configuration
|
||||||
|
|
||||||
to build a configuration run the following command (replace ```<hostname>``` with the actual hostname):
|
to build a configuration run the following command (replace ```<hostname>``` with the actual hostname):
|
||||||
|
|
||||||
``` shell
|
``` shell
|
||||||
nix build .#nixosConfigurations.<hostname>.config.system.build.toplevel
|
nix build .#nixosConfigurations.<hostname>.config.system.build.toplevel
|
||||||
```
|
```
|
||||||
|
|
||||||
### building raspberry image
|
|
||||||
|
|
||||||
for the raspberry it is possible to build the whole configuration as an sd-card image which then can be flashed directly. more information about building arm on nixos can be found [here](https://nixos.wiki/wiki/NixOS_on_ARM).
|
|
||||||
|
|
||||||
to be able to build the image you need to enable qemu emulation on the machine you are building with. therefore it is necessary to add the following to your configuration.nix:
|
|
||||||
|
|
||||||
``` nix
|
|
||||||
boot.binfmt.emulatedSystems = [ "aarch64-linux" ];
|
|
||||||
```
|
|
||||||
|
|
||||||
then you can build the image with:
|
|
||||||
|
|
||||||
``` shell
|
|
||||||
nix build .#nixosConfigurations.rpi1_base_image.config.system.build.sdImage
|
|
||||||
```
|
|
||||||
|
|
||||||
### run a configuration as vm
|
|
||||||
|
|
||||||
to run a vm we have to build it first using the following command (replace ```<hostname>``` with the actual hostname):
|
|
||||||
|
|
||||||
``` shell
|
|
||||||
nix build .#nixosConfigurations.<hostname>.config.system.build.vm
|
|
||||||
```
|
|
||||||
|
|
||||||
afterwards run the following command to start the vm:
|
|
||||||
|
|
||||||
``` shell
|
|
||||||
./result/bin/run-<hostname>-vm
|
|
||||||
```
|
|
||||||
|
|
||||||
### documentation
|
### documentation
|
||||||
|
|
||||||
for documentation we currently just use README.md files.
|
documentation is automatically build from master and can be found here: docs.malobeo.org
|
||||||
|
locally you can run documentation using ```nix run .#docs``` or ```nix run .#docsDev```
|
||||||
the devshell provides the python package ['grip'](https://github.com/joeyespo/grip) which can be used to preview different README.md files in the browser.
|
|
||||||
the usage is simple, just run ```grip``` in the same folder as the README.md you wanna preview. then open your browser at ```http://localhost:6419 ```.
|
|
||||||
|
|||||||
@@ -1,26 +1,20 @@
|
|||||||
# malobeo infrastructure
|
# malobeo infrastructure
|
||||||
|
|
||||||
this repository nxios configurations of the digital malobeo infrastructure. it should be used to setup, test, build and deploy different hosts in a reproducible manner.
|
this repository contains nixos configurations of the digital malobeo infrastructure. it should be used to setup, test, build and deploy different hosts in a reproducible manner.
|
||||||
|
|
||||||
the file structure is based on this [blog post](https://samleathers.com/posts/2022-02-03-my-new-network-and-deploy-rs.html)
|
|
||||||
|
|
||||||
### deploying configuration
|
### deploying configuration
|
||||||
#### local deployment
|
|
||||||
``` shell
|
|
||||||
nixos-rebuild switch --use-remote-sudo
|
|
||||||
```
|
|
||||||
|
|
||||||
#### remote deployment
|
hosts are deployed automatically from master. The [hydra build server](https://hydra.dynamicdiscord.de/jobset/malobeo/infrastructure) will build new commits and on success, hosts will periodically pull those changes.
|
||||||
you need the hostname and ip address of the host:
|
Big changes (like updating flake lock) could be commited to the staging branch first. [Hydra builds staging seperate](https://hydra.dynamicdiscord.de/jobset/malobeo/staging), and on success you can merge into master.
|
||||||
``` shell
|
|
||||||
nixos-rebuild switch --flake .#<hostname> --target-host root@<ip_address> --build-host localhost
|
|
||||||
```
|
|
||||||
|
|
||||||
in this case 'localhost' is used as buildhost which can be usefull if the target host is low systemresources
|
### deploy fresh host
|
||||||
|
if you want to deploy a completly new host refer to [docs](https://docs.malobeo.org/anleitung/create.html)
|
||||||
|
|
||||||
|
### testing configuration
|
||||||
|
|
||||||
|
refer to https://docs.malobeo.org/anleitung/microvm.html#testing-microvms-locally
|
||||||
|
|
||||||
## development
|
## development
|
||||||
|
|
||||||
### requirements
|
### requirements
|
||||||
we use flake based configurations for our hosts. if you want to build configurations on you own machine you have to enable flakes first by adding the following to your *configuration.nix* or *nix.conf*
|
we use flake based configurations for our hosts. if you want to build configurations on you own machine you have to enable flakes first by adding the following to your *configuration.nix* or *nix.conf*
|
||||||
``` nix
|
``` nix
|
||||||
@@ -37,46 +31,13 @@ a development shell with the correct environment can be created by running ```ni
|
|||||||
If you're using direnv you can add flake support by following those steps: [link](https://nixos.wiki/wiki/Flakes#Direnv_integration)
|
If you're using direnv you can add flake support by following those steps: [link](https://nixos.wiki/wiki/Flakes#Direnv_integration)
|
||||||
|
|
||||||
### build a configuration
|
### build a configuration
|
||||||
|
|
||||||
to build a configuration run the following command (replace ```<hostname>``` with the actual hostname):
|
to build a configuration run the following command (replace ```<hostname>``` with the actual hostname):
|
||||||
|
|
||||||
``` shell
|
``` shell
|
||||||
nix build .#nixosConfigurations.<hostname>.config.system.build.toplevel
|
nix build .#nixosConfigurations.<hostname>.config.system.build.toplevel
|
||||||
```
|
```
|
||||||
|
|
||||||
### building raspberry image
|
|
||||||
|
|
||||||
for the raspberry it is possible to build the whole configuration as an sd-card image which then can be flashed directly. more information about building arm on nixos can be found [here](https://nixos.wiki/wiki/NixOS_on_ARM).
|
|
||||||
|
|
||||||
to be able to build the image you need to enable qemu emulation on the machine you are building with. therefore it is necessary to add the following to your configuration.nix:
|
|
||||||
|
|
||||||
``` nix
|
|
||||||
boot.binfmt.emulatedSystems = [ "aarch64-linux" ];
|
|
||||||
```
|
|
||||||
|
|
||||||
then you can build the image with:
|
|
||||||
|
|
||||||
``` shell
|
|
||||||
nix build .#nixosConfigurations.rpi1_base_image.config.system.build.sdImage
|
|
||||||
```
|
|
||||||
|
|
||||||
### run a configuration as vm
|
|
||||||
|
|
||||||
to run a vm we have to build it first using the following command (replace ```<hostname>``` with the actual hostname):
|
|
||||||
|
|
||||||
``` shell
|
|
||||||
nix build .#nixosConfigurations.<hostname>.config.system.build.vm
|
|
||||||
```
|
|
||||||
|
|
||||||
afterwards run the following command to start the vm:
|
|
||||||
|
|
||||||
``` shell
|
|
||||||
./result/bin/run-<hostname>-vm
|
|
||||||
```
|
|
||||||
|
|
||||||
### documentation
|
### documentation
|
||||||
|
|
||||||
for documentation we currently just use README.md files.
|
documentation is automatically build from master and can be found here: docs.malobeo.org
|
||||||
|
locally you can run documentation using ```nix run .#docs``` or ```nix run .#docsDev```
|
||||||
the devshell provides the python package ['grip'](https://github.com/joeyespo/grip) which can be used to preview different README.md files in the browser.
|
|
||||||
the usage is simple, just run ```grip``` in the same folder as the README.md you wanna preview. then open your browser at ```http://localhost:6419 ```.
|
|
||||||
|
|||||||
Reference in New Issue
Block a user