diff --git a/hcloud.tf b/hcloud.tf index da4615a..b3ca4b0 100644 --- a/hcloud.tf +++ b/hcloud.tf @@ -1,6 +1,11 @@ +data "hcloud_images" "talos_image" { + with_selector = "type=infra,os=talos,version=${var.talos_version},cluster=${var.talos_cluster_name}" +} + data "hcloud_image" "talos_image" { - with_selector = "type=infra,os=talos,version=${var.talos_version}" + with_selector = "type=infra,os=talos,version=${var.talos_version},cluster=${var.talos_cluster_name}" + depends_on = [terraform_data.packer_image] } resource "hcloud_network" "private_net" { diff --git a/packer.tf b/packer.tf new file mode 100644 index 0000000..3b8d440 --- /dev/null +++ b/packer.tf @@ -0,0 +1,34 @@ +data "talos_image_factory_extensions_versions" "this" { + # get the latest talos version + talos_version = var.talos_version + filters = { + names = [ + "iscsi-tools", + "util-linux-tools", + ] + } +} + +resource "talos_image_factory_schematic" "this" { + schematic = yamlencode( + { + customization = { + systemExtensions = { + officialExtensions = data.talos_image_factory_extensions_versions.this.extensions_info.*.name + } + } + } + ) +} + +resource "terraform_data" "packer_image" { + count = (length(data.hcloud_images.talos_image) == 0) ? 1 : 0 + triggers_replace = [talos_image_factory_schematic.this.id, var.talos_version, var.talos_cluster_name] + + provisioner "local-exec" { + when = create + working_dir = "${path.module}/packer/" + #command = "packer build ${local.image_source_build_params} ${local.image_target_build_params} -var region=${var.builder_region} -var project_id=${var.builder_project_id} -var zone=${var.builder_zone} -var network_project_id=${local.builder_network_project_id} -var network_name=${var.builder_network_name} -var subnet_name=${var.builder_subnet_name} image.pkr.hcl" + command = "packer build -var cluster_name=${var.talos_cluster_name} -var version=${var.talos_version} -var schematic_id=${talos_image_factory_schematic.this.id} talos_image.pkr.hcl" + } +} \ No newline at end of file