locals { config = yamldecode(file("${get_terragrunt_dir()}/config.yaml")) local_images = yamldecode(file("${get_terragrunt_dir()}/images.yaml")) local_networks = yamldecode(file("${get_terragrunt_dir()}/networks.yaml")) local_profiles = yamldecode(file("${get_terragrunt_dir()}/profiles.yaml")) local_storage_pools = yamldecode(file("${get_terragrunt_dir()}/storage_pools.yaml")) local_storage_volumes = yamldecode(file("${get_terragrunt_dir()}/storage_volumes.yaml")) node_name = basename(get_terragrunt_dir()) } # on the image server we want to use localised settings mostly, not all the globals # dont deep merge include "root" { path = find_in_parent_folders("root.hcl") } terraform { source = "${get_repo_root()}/modules/node" } inputs = { images = local.local_images networks = local.local_networks profiles = local.local_profiles storage_pools = local.local_storage_pools storage_volumes = local.local_storage_volumes node_name = local.node_name node_addr = local.config.node_addr node_port = local.config.node_port } generate "provider" { path = "provider.tf" if_exists = "overwrite_terragrunt" contents = <<-EOF provider "incus" { generate_client_certificates = true accept_remote_certificate = true remote { name = "${basename(get_terragrunt_dir())}" scheme = "https" address = "${local.config.node_addr}" port = "${local.config.node_port}" token = "${get_env("INCUS_TOKEN_${upper(local.node_name)}")}" default = true } } EOF }