Luigit
repositories / bugabinga.net

bugabinga.net

personal infrastructure for bugabinga!

owned by admin

modules/klops/toad.tf

Raw
locals {
  toad_source_hash = md5(join("", [
    for f in fileset("${path.root}/services/toad", "**") : filesha256("${path.root}/services/toad/${f}")
  ]))
  toad_quadlets_hash = md5(join("", [
    for f in concat(
      tolist(fileset("${path.root}/services/toad/deploy", "*.container")),
      tolist(fileset("${path.root}/services/toad/deploy", "*.network")),
    ) : filesha256("${path.root}/services/toad/deploy/${f}")
  ]))
  toad_enrollment_hash = filesha256("${path.module}/toad/enrollment.json")
  toad_gateway_hash = md5(join("", [
    filesha256("${path.root}/services/toad/deploy/gateway.Caddyfile"),
    filesha256("${path.module}/toad/ingress.env"),
    filesha256("${path.root}/assets/nugu.css"),
  ]))
  toad_deployment_hash = md5(join("", [
    filesha256("${path.root}/scripts/local/deploy-toad.sh"),
    filesha256("${path.root}/scripts/local/build-remote-image.sh"),
    filesha256("${path.root}/scripts/local/klops.sh"),
    filesha256("${path.root}/scripts/remote/build-rootless-image.sh"),
    filesha256("${path.root}/services/toad/deploy/setup-user.sh"),
    filesha256("${path.root}/services/toad/deploy/start.sh"),
  ]))
}

resource "null_resource" "klops_toad" {
  count = var.klops_ssh_host != "" ? 1 : 0

  depends_on = [null_resource.klops_setup]

  triggers = {
    source_hash      = local.toad_source_hash
    quadlets_hash    = local.toad_quadlets_hash
    enrollment_hash  = local.toad_enrollment_hash
    gateway_hash     = local.toad_gateway_hash
    deployment_hash  = local.toad_deployment_hash
    deployment_logic = filesha256("${path.module}/toad.tf")
  }

  provisioner "local-exec" {
    interpreter = ["/bin/bash", "-c"]
    command     = "${abspath(path.root)}/scripts/local/deploy-toad.sh ${var.klops_ssh_host} ${var.klops_ssh_port} ${var.klops_ssh_user} ${abspath(path.root)}/services/toad/deploy ${abspath(path.module)}/toad/enrollment.json ${abspath(path.root)}/services/toad/deploy/gateway.Caddyfile ${abspath(path.module)}/toad/ingress.env ${abspath(path.root)}/assets/nugu.css ${abspath(path.root)}/services/toad"
  }
}