3.2 KiB
		
	
	
	
	
	
	
	
			
		
		
	
	| status | 
|---|
| draft | 
NixOps4-based Installation Process
This documents explains how NixOps4 could be leveraged to provide a smooth installation experience for a simple, monolithic deployment.
It does not go into detail about the way Nix Panel hooks into this, or whether Nix Panel manages the same NixOps4 deployment that also contains the infrastructure; a single NixOps4 deployment could provide a nice simplification in the early stages of the project.
Components
Required for the setup steps in this document:
- nixops4: generic deployment tool using Nix
- landscaper.iso: installation image that bootstraps a completely new and independent Fedi cluster - a NixOS installer with a handful of extra definitions (@roberth: easy)
- nixops4-modules-ssh-keypair: NixOps4 resource provider that generates keys
- nixops4-pxe-nbp: NixOps4 resource provider that inserts an NBP image into a (local) PXE server configuration
- nixops4-modules-ssh: A module that calls- sshusing- nixops4-resources-local
- nixops4-resources-local: A module that can create files and call commands locally (prototyped)
- nixops4-modules-nixos: A module that calls- nixos-rebuild switch --target-hostor implements similar functionality
Expected needs:
- nixops4-resources-proxmox
- A resource provider that talks to a DNS server's API
Steps
1. landscaper setup
- 
connect your first server into the network 
- 
boot landscaper.isofrom a usb stick, and install NixOS onto this server we'll calllandscaper
landscaper.iso is  a slightly customized NixOS installer that includes the landscaper NixOS module
in the default config that it generates
- mvp: copy and import the landscaper module by hand into the normal NixOS live system
The landscaper module contains
- nixops4 (mvp and initial setup)
- a nixops4 service (if/when nix-panel is capable of managing the infra)
- a tftp server
The NixOS installer puts the template NixOps4 expression in /root/fediversity-network
2. Add a proxmox host
- 
- add a MAC address and IP address to the proxmoxMACsoption (or similar)
- this automatically declares resources that will set up the new server
- 
installation_host_key: a temporary SSH host key pair
- 
installation_pxe_nbp: an entry inlandscaper's PXE server, referring to/including a kernel and initrd that run disko and performs a NixOS installation on the server disk(s)
- 
ssh_host_public_key: a resource that waits for SSH to come up, logs in to replace the host key and sends the returns the new public key as its resource output
- 
nixos: a resource thatnix copy-es a NixOS toplevel, then updates the system profile and activates it
- 
unknown: built-in services like Nix-panel, perhaps depending on the number of proxmoxMACs
 
- 
 
- add a MAC address and IP address to the 
- nixops apply- this starts to create resources,
- up to the point that ssh_host_public_keywaits for the server to boot
 
- turn on the server
- wait for nixops applyto complete
Notes
Unknown: add to step 2 or step 3 (new), depending on the amount of shared infra:
- resources for certain objects in the proxmox api
- this creates nixpanel, and shared infrastructure