forked from fediversity/fediversity
		
	Document semi-automated provisioning of VMs
This commit is contained in:
		
							parent
							
								
									46d20a76bc
								
							
						
					
					
						commit
						b90fc3300a
					
				
					 1 changed files with 58 additions and 1 deletions
				
			
		|  | @ -2,7 +2,64 @@ | |||
| 
 | ||||
| This directory contains the definition of the VMs that host our infrastructure. | ||||
| 
 | ||||
| ## NixOps4 | ||||
| ## Provisioning VMs with an initial configuration | ||||
| 
 | ||||
| NOTE[Niols]: This is very manual and clunky. Two things will happen. In the near | ||||
| future, I will improve the provisioning script to make this a bit less clunky. | ||||
| In the far future, NixOps4 will be able to communicate with Proxmox directly and | ||||
| everything will become much cleaner. | ||||
| 
 | ||||
| 1. Choose an id and name for your VMs. It is recommended to choose the first | ||||
|    free id above 100. As for the name, it is recommended to choose `fedi<id>`. | ||||
|    For instance, `fedi117` with id `117`. | ||||
| 
 | ||||
| 2. Add a basic configuration for the machine. These typically go in | ||||
|    `infra/<name>/default.nix`. You can look at other `fedi<id>` VMs to find | ||||
|    inspiration. You probably do not need a `nixos.module` option at this point. | ||||
| 
 | ||||
| 3. Add the machine to a deployment. This takes place in `infra/flake-parts.nix`. | ||||
|    Please remember to also update the table at the end of this file. | ||||
| 
 | ||||
|    FIXME: Generate the table automatically (https://git.fediversity.eu/Fediversity/Fediversity/issues/89) | ||||
| 
 | ||||
| 2. Add a file for each of those VM's public keys, eg. | ||||
|    ``` | ||||
|    touch keys/systems/fedi117.pub | ||||
|    ``` | ||||
|    Those files need to exist during provisioning, but their content matters only | ||||
|    when updating the machines' configuration. | ||||
| 
 | ||||
|    FIXME: Remove this step by making the provisioning script not fail with the | ||||
|    public key does not exist yet. | ||||
| 
 | ||||
| 3. Run the provisioning script: | ||||
|    ``` | ||||
|    sh infra/proxmox-provision.sh 117 | ||||
|    ``` | ||||
|    The script can take several ids at the same time. It requires some | ||||
|    authentication options and provides several more. See `--help`. | ||||
| 
 | ||||
| 4. (Optional) Add a DNS entry for the machine; for instance `fedi117.abundos.eu | ||||
|    A 95.215.187.117`. | ||||
| 
 | ||||
| 5. Grab the public host keys for the machines in question, and add it to the | ||||
|    repository. For instance: | ||||
|    ``` | ||||
|    ssh fedi117.abundos.eu 'sudo cat /etc/ssh/ssh_host_ed25519_key.pub' > keys/systems/fedi117.pub | ||||
|    ``` | ||||
| 
 | ||||
|    FIXME: Make the provisioning script do that for us. | ||||
| 
 | ||||
| 7. Commit the machine's configuration, public key, etc. | ||||
| 
 | ||||
| 8. At this point, the machine contains a very basic configuration that contains | ||||
|    just enough for it to boot and be reachable. Go on to the next section to | ||||
|    update the machine and put an actual configuration. | ||||
| 
 | ||||
|    FIXME: Figure out why the full configuration isn't on the machine at this | ||||
|    point and fix it. | ||||
| 
 | ||||
| ## Updating existing VM configurations | ||||
| 
 | ||||
| Their configuration can be updated via NixOps4. Run | ||||
| 
 | ||||
|  |  | |||
		Loading…
	
	Add table
		
		Reference in a new issue