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") }