forked from fediversity/fediversity
		
	Compare commits
	
		
			7 commits
		
	
	
		
			96f6b1e758
			...
			080950ad0b
		
	
	| Author | SHA1 | Date | |
|---|---|---|---|
| 080950ad0b | |||
| f4d2c3174c | |||
| 14c2f83bec | |||
| 23bcca8e67 | |||
| 87ceb8a081 | |||
| 72ad66edf8 | |||
| e0b868e2ff | 
					 6 changed files with 18 additions and 25 deletions
				
			
		|  | @ -15,7 +15,6 @@ let | |||
|     TF_HTTP_UNLOCK_ADDRESS = TF_HTTP_ADDRESS; | ||||
|     TF_HTTP_ADDRESS = "http://localhost:${backendPort}/state/${fragment}"; | ||||
|   }; | ||||
|   # FIXME generate the image `nixos-generate` was to make, but now do it for a desired `-c configuration.nix` rather than whatever generic thing now | ||||
|   template-deployment = | ||||
|     (import ./setups/template.nix { | ||||
|       inherit sources system modulesPath; | ||||
|  | @ -35,6 +34,8 @@ let | |||
|         inherit (import ./constants.nix) pathToRoot; | ||||
|         nodeName = "pve"; | ||||
|         targetSystem = system; | ||||
|         # for the test use the proxmox host as jump host, | ||||
|         # as we have no static IPs the deployer can reach the deployed VM on | ||||
|         sshOpts = [ | ||||
|           "ProxyCommand=ssh -W %h:%p pve" | ||||
|         ]; | ||||
|  | @ -159,6 +160,7 @@ in | |||
|         enable = true; | ||||
|         settings = { | ||||
|           LISTEN_ADDR = ":${backendPort}"; | ||||
|           # FIXME randomly generate this | ||||
|           KMS_KEY = "tsjxw9NjKUBUlzbTnD7orqIAdEmpGYRARvxD51jtY+o="; | ||||
|         }; | ||||
|       }; | ||||
|  | @ -172,9 +174,10 @@ in | |||
| 
 | ||||
|     cert = pve.succeed("cat /etc/pve/pve-root-ca.pem").strip() | ||||
| 
 | ||||
|     # set up proxmox | ||||
|     pve.succeed("pvesh create /pools --poolid Fediversity") | ||||
| 
 | ||||
|     # allow upload of `import` (template) files | ||||
|     pve.succeed(""" | ||||
|       pvesh create /pools --poolid Fediversity | ||||
|       pvesh set /storage/local --content "vztmpl,rootdir,backup,snippets,import,iso,images" 1>/dev/null | ||||
|     """) | ||||
| 
 | ||||
|  |  | |||
|  | @ -62,6 +62,7 @@ in | |||
|         type = env.resource-mapping.output-type; | ||||
|         default = env.deployment { | ||||
|           deployment-name = "default"; | ||||
|           # normally our template is distinct, but our test cannot download build deps due to sandboxing | ||||
|           configuration = config."example-configuration"; | ||||
|         }; | ||||
|       }; | ||||
|  |  | |||
|  | @ -332,7 +332,7 @@ let | |||
|                   inherit sources system; | ||||
|                   configuration = tf-host.config.nixos-configuration; | ||||
|                 }; | ||||
|                 name = "monkey"; | ||||
|                 name = "fediversity-template"; | ||||
| 
 | ||||
|                 # worse for cross-compilation, better for pre-/post-processing, needs manual `imageSize`, random failures: https://github.com/nix-community/disko/issues/550#issuecomment-2503736973 | ||||
|                 raw = "${machine.config.system.build.diskoImages}/main.raw"; | ||||
|  | @ -367,10 +367,12 @@ let | |||
| 
 | ||||
|                   ls -l ${raw} >&2 | ||||
|                   ls -l /tmp/${name}.qcow2 >&2 | ||||
|                   checksum="$(sha256sum /tmp/${name}.qcow2 | cut -d " " -f1)" | ||||
| 
 | ||||
|                   env ${toString (lib.mapAttrsToList (k: v: "TF_VAR_${k}=\"${toBash v}\"") environment)} \ | ||||
|                   ${toString (lib.mapAttrsToList (k: v: "${k}=\"${toBash v}\"") httpBackend)} \ | ||||
|                   TF_VAR_image=/tmp/${name}.qcow2 \ | ||||
|                   TF_VAR_checksum="$checksum" \ | ||||
|                   tf_env=${tf-env} bash ./deployment/run/tf-proxmox-template/run.sh | ||||
|                 ''; | ||||
|           }; | ||||
|  |  | |||
|  | @ -30,21 +30,11 @@ data "external" "hash" { | |||
|   program = ["sh", "-c", "echo \"{\\\"hash\\\":\\\"$(nix-hash ../../..)\\\"}\""] | ||||
| } | ||||
| 
 | ||||
| # FIXME (un)stream | ||||
| # FIXME handle known-hosts in TF state | ||||
| # FIXME move to host | ||||
| # FIXME switch to base image shared between jobs as upload seems a bottleneck? e.g. by: | ||||
| # - recursive TF | ||||
| # - hash in name over overwrite | ||||
| # won't notice file changes: https://github.com/bpg/terraform-provider-proxmox/issues/677 | ||||
| resource "proxmox_virtual_environment_file" "upload" { | ||||
|   depends_on = [ | ||||
|     data.external.hash, | ||||
|   ] | ||||
|   content_type = "import" | ||||
|   # https://192.168.51.81:8006/#v1:0:=storage%2Fnode051%2Flocal:4::=contentIso::::: | ||||
|   # PVE -> Datacenter -> Storage -> local -> Edit -> General -> Content -> check Import + Disk Images -> OK | ||||
|   # that UI action also adds it in `/etc/pve/storage.cfg` | ||||
|   datastore_id = var.image_datastore_id | ||||
|   node_name    = var.node_name | ||||
|   overwrite = true | ||||
|  | @ -53,8 +43,7 @@ resource "proxmox_virtual_environment_file" "upload" { | |||
|   source_file { | ||||
|     path = var.image | ||||
|     file_name = local.dump_name | ||||
|     # FIXME compute and pass hash (so identical builds don't trigger drift) | ||||
|     # checksum = "sha256" | ||||
|     checksum = var.checksum | ||||
|   } | ||||
| } | ||||
| 
 | ||||
|  |  | |||
|  | @ -24,3 +24,8 @@ variable "category" { | |||
|   description = "Category to be used in naming the base image." | ||||
|   default = "test" | ||||
| } | ||||
| 
 | ||||
| variable "checksum" { | ||||
|   type = string | ||||
|   description = "The SHA256 checksum of the source file." | ||||
| } | ||||
|  |  | |||
|  | @ -14,15 +14,10 @@ provider "proxmox" { | |||
|   endpoint = "https://${var.host}:8006/" | ||||
| 
 | ||||
|   # used only for files and creating custom disks | ||||
|   # FIXME handle known-hosts in TF state | ||||
|   ssh { | ||||
|     agent = true | ||||
|     # uncomment and configure if using api_token instead of password | ||||
|     username = "root" | ||||
|     # node { | ||||
|     #   name = "${var.node_name}" | ||||
|     #   address = "${var.host}" | ||||
|     #   # port = 22 | ||||
|     # } | ||||
|   } | ||||
| } | ||||
| 
 | ||||
|  | @ -34,8 +29,6 @@ data "external" "hash" { | |||
| 
 | ||||
| resource "proxmox_virtual_environment_vm" "nix_vm" { | ||||
|   lifecycle { | ||||
|     # wait, would this not disseminate any changes to this property, | ||||
|     # or just defer syncing when only this changed? | ||||
|     ignore_changes = [ | ||||
|       disk["import_from"], | ||||
|       initialization, | ||||
|  | @ -117,7 +110,7 @@ resource "null_resource" "await_ssh" { | |||
|     proxmox_virtual_environment_vm.nix_vm | ||||
|   ] | ||||
|   provisioner "local-exec" { | ||||
|     command = "env username='root' host='${proxmox_virtual_environment_vm.nix_vm.ipv4_addresses[1][0]}' key_file=${var.key_file} ssh_opts='${var.ssh_opts}' bash ./await-ssh.sh" | ||||
|     command = "env username='root' host='${proxmox_virtual_environment_vm.nix_vm.ipv4_addresses[1][0]}' key_file='${var.key_file}' ssh_opts='${var.ssh_opts}' bash ./await-ssh.sh" | ||||
|   } | ||||
| } | ||||
| 
 | ||||
|  |  | |||
		Loading…
	
	Add table
		
		Reference in a new issue