many things
This commit is contained in:
		
							parent
							
								
									18a08d623b
								
							
						
					
					
						commit
						a7fad6c9c6
					
				
					 43 changed files with 1246 additions and 54 deletions
				
			
		
							
								
								
									
										199
									
								
								10-pre-k8s/k3s-agent.tf
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										199
									
								
								10-pre-k8s/k3s-agent.tf
									
										
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,199 @@ | |||
| 
 | ||||
| locals { | ||||
|   kernel = "/assets/fedora-coreos/fedora-coreos-${var.os_version}-live-kernel-x86_64" | ||||
|   initrd = "/assets/fedora-coreos/fedora-coreos-${var.os_version}-live-initramfs.x86_64.img" | ||||
|   rootfs = "${var.matchbox_http_endpoint}/assets/fedora-coreos/fedora-coreos-${var.os_version}-live-rootfs.x86_64.img" | ||||
| 
 | ||||
| } | ||||
| 
 | ||||
| # module "virtnode" { | ||||
| #   source = "../terraform-modules/coreos-agent" | ||||
| #  | ||||
| #   name       = "virtnode" | ||||
| #   pool       = "default" | ||||
| #   base_image = "http://matchbox.lab.cowley.tech:8080/assets/fedora-coreos/fedora-coreos-39.20231101.3.0-qemu.x86_64.qcow2" | ||||
| #   memory     = 2048 | ||||
| #   vcpu       = 1 | ||||
| #   disk_size  = 30 | ||||
| #  | ||||
| #   bridge   = "br6" | ||||
| #   ignition = data.ignition_config.worker.rendered | ||||
| # } | ||||
| 
 | ||||
| resource "matchbox_profile" "worker" { | ||||
|   name   = "worker" | ||||
|   kernel = local.kernel | ||||
|   initrd = [ | ||||
|     "--name main ${local.initrd}" | ||||
|   ] | ||||
|   args = [ | ||||
|     "ip=dhcp", | ||||
|     "initrd=main", | ||||
|     "coreos.live.rootfs_url=${local.rootfs}", | ||||
|     "coreos.inst.install_dev=/dev/vda", | ||||
|     "coreos.inst.ignition_url=${var.matchbox_http_endpoint}/ignition?uuid=$${uuid}&mac=$${mac:hexhyp}", | ||||
|     "console=tty0", | ||||
|     "console=ttyS0", | ||||
|   ] | ||||
|   raw_ignition = data.ignition_config.worker.rendered | ||||
| } | ||||
| 
 | ||||
| resource "matchbox_profile" "nuc" { | ||||
|   name   = "nuc" | ||||
|   kernel = local.kernel | ||||
|   initrd = [ | ||||
|     "--name main ${local.initrd}" | ||||
|   ] | ||||
|   args = [ | ||||
|     "ip=dhcp", | ||||
|     "initrd=main", | ||||
|     "coreos.live.rootfs_url=${local.rootfs}", | ||||
|     "coreos.inst.install_dev=/dev/sda", | ||||
|     "coreos.inst.ignition_url=${var.matchbox_http_endpoint}/ignition?uuid=$${uuid}&mac=$${mac:hexhyp}", | ||||
|     "console=tty0", | ||||
|     "console=ttyS0", | ||||
|   ] | ||||
|   raw_ignition = data.ignition_config.nuc.rendered | ||||
| } | ||||
| 
 | ||||
| resource "matchbox_group" "nuc" { | ||||
|   for_each = var.nucs | ||||
| 
 | ||||
|   name    = each.key | ||||
|   profile = matchbox_profile.nuc.name | ||||
|   selector = { | ||||
|     #  mac = "c0:3f:d5:63:7b:3c" | ||||
|     mac = each.value | ||||
|   } | ||||
| } | ||||
| 
 | ||||
| resource "matchbox_group" "slowworker" { | ||||
|   for_each = var.slowworkers | ||||
| 
 | ||||
|   name    = each.key | ||||
|   profile = matchbox_profile.worker.name | ||||
|   selector = { | ||||
|     mac = each.value | ||||
|   } | ||||
| 
 | ||||
| } | ||||
| 
 | ||||
| resource "matchbox_group" "worker" { | ||||
|   name    = "worker" | ||||
|   profile = matchbox_profile.worker.name | ||||
|   selector = { | ||||
|     mac = "52:54:00:c3:51:e8" | ||||
|   } | ||||
| 
 | ||||
| } | ||||
| 
 | ||||
| data "ignition_user" "core" { | ||||
|   name = "core" | ||||
|   ssh_authorized_keys = [ | ||||
|     "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIPTIgRUxUcj4K6E9xwwuxWyRaR4tkf57cgWkk5eWTnck ccowley@pinebook", | ||||
|     "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIK3jy6l2FSrkUoOVLGP4Spvz+X1sQbt5zY/CpWTRpzRi ccowley@lat5320ccowley.ubisoft.org", | ||||
|     var.ssh_authorized_key | ||||
|   ] | ||||
| } | ||||
| 
 | ||||
| data "ignition_config" "worker" { | ||||
|   users = [ | ||||
|     data.ignition_user.core.rendered | ||||
|   ] | ||||
|   systemd = [ | ||||
|     data.ignition_systemd_unit.qemu_ga.rendered, | ||||
|     data.ignition_systemd_unit.k3s_install.rendered, | ||||
|     data.ignition_systemd_unit.worker-images-clean-service.rendered, | ||||
|     data.ignition_systemd_unit.worker-images-clean-timer.rendered | ||||
|   ] | ||||
|   files = [ | ||||
|     data.ignition_file.worker-options.rendered, | ||||
|     data.ignition_file.k3s_agent_install_script.rendered, | ||||
|     data.ignition_file.worker-images-clean.rendered | ||||
|   ] | ||||
| } | ||||
| data "ignition_config" "nuc" { | ||||
|   users = [ | ||||
|     data.ignition_user.core.rendered | ||||
|   ] | ||||
|   systemd = [ | ||||
|     data.ignition_systemd_unit.kvm_install.rendered, | ||||
|     data.ignition_systemd_unit.k3s_install.rendered, | ||||
|     data.ignition_systemd_unit.worker-images-clean-service.rendered, | ||||
|     data.ignition_systemd_unit.worker-images-clean-timer.rendered | ||||
|   ] | ||||
|   files = [ | ||||
|     data.ignition_file.nuc-worker-options.rendered, | ||||
|     data.ignition_file.k3s_agent_install_script.rendered, | ||||
|     data.ignition_file.worker-images-clean.rendered | ||||
|   ] | ||||
| } | ||||
| 
 | ||||
| data "ignition_systemd_unit" "qemu_ga" { | ||||
|   name    = "qemu-ga-install.service" | ||||
|   content = file("${path.module}/units/qemu-ga.service") | ||||
| } | ||||
| 
 | ||||
| data "ignition_file" "k3s_agent_install_script" { | ||||
|   path = "/opt/k3s-agent-install.sh" | ||||
|   mode = 700 | ||||
|   content { | ||||
|     content = templatefile( | ||||
|       "${path.module}/files/k3s-agent-install.sh", | ||||
|       { | ||||
|         "k3s_token" = var.k3s_agent_token | ||||
|       } | ||||
|     ) | ||||
|   } | ||||
| } | ||||
| 
 | ||||
| data "ignition_systemd_unit" "k3s_install" { | ||||
|   name = "k3s-install.service" | ||||
|   depends_on = [ | ||||
|     data.ignition_file.k3s_agent_install_script | ||||
|   ] | ||||
|   content = file("${path.module}/units/k3s-install.service") | ||||
| } | ||||
| 
 | ||||
| data "ignition_systemd_unit" "kvm_install" { | ||||
|   name = "kvm-install.service" | ||||
|   content = file("${path.module}/units/kvm-install.service") | ||||
| } | ||||
| 
 | ||||
| data "ignition_file" "nuc-worker-options" { | ||||
|   path = "/etc/rancher/k3s/config.yaml" | ||||
|   content { | ||||
|     content = file("${path.module}/files/k3s-nuc-worker-config.yaml") | ||||
|   } | ||||
| } | ||||
| data "ignition_file" "worker-options" { | ||||
|   path = "/etc/rancher/k3s/config.yaml" | ||||
|   content { | ||||
|     content = file("${path.module}/files/k3s-worker-config.yaml") | ||||
|   } | ||||
| } | ||||
| 
 | ||||
| data "ignition_file" "worker-images-clean" { | ||||
|   path = "/opt/k3s-image-clean.sh" | ||||
|   mode = 700 | ||||
|   content { | ||||
|     content = file("${path.module}/files/k3s-clean-images.sh") | ||||
|   } | ||||
| } | ||||
| 
 | ||||
| data "ignition_systemd_unit" "worker-images-clean-service" { | ||||
|   name = "clean-images.service" | ||||
|   depends_on = [ | ||||
|     data.ignition_file.worker-images-clean | ||||
|   ] | ||||
|   content = file("${path.module}/units/clean-images.service") | ||||
| } | ||||
| 
 | ||||
| data "ignition_systemd_unit" "worker-images-clean-timer" { | ||||
|   name = "clean-images.timer" | ||||
|   depends_on = [ | ||||
|     data.ignition_file.worker-images-clean, | ||||
|     data.ignition_systemd_unit.worker-images-clean-service, | ||||
|   ] | ||||
|   content = file("${path.module}/units/clean-images.timer") | ||||
| } | ||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue
	
	 Chris Cowley
						Chris Cowley