provider "stackit" { default_region = var.stackit_region service_account_key_path = var.stackit_service_account_key_path } resource "stackit_key_pair" "example_keypair" { name = "example-keypair" public_key = chomp(file("~/.ssh/id_rsa.pub")) } locals { servers = flatten([ for zone, count in { eu01-3 = 3, eu01-1 = 3, eu01-2 = 2 } : [ for index in range(count) : { name = "example-server-${zone}-${index}" availability_zone = zone } ] ]) } # Create network for each server resource "stackit_network" "example_network" { for_each = { for server in local.servers : server.name => server } project_id = var.stackit_project_id name = "${each.value.name}-network" ipv4_prefix_length = 24 ipv4_nameservers = ["1.1.1.1", "8.8.8.8"] } # Create NIC for each server resource "stackit_network_interface" "example_nic" { for_each = { for server in local.servers : server.name => server } project_id = var.stackit_project_id network_id = stackit_network.example_network[each.key].network_id security = false } # Create server resource "stackit_server" "example_server" { for_each = { for server in local.servers : server.name => server } project_id = var.stackit_project_id name = each.value.name boot_volume = { size = 64 source_type = "image" source_id = "a2c127b2-b1b5-4aee-986f-41cd11b41279" // Ubuntu 24.04 performance_class = "storage_premium_perf12" } availability_zone = each.value.availability_zone machine_type = "n3.14d.g1" network_interfaces = [ stackit_network_interface.example_nic[each.key].network_interface_id ] } # Create public IP for each server resource "stackit_public_ip" "example_public_ip" { for_each = { for server in local.servers : server.name => server } project_id = var.stackit_project_id network_interface_id = stackit_network_interface.example_nic[each.key].network_interface_id } # Output public IPs output "public_ips" { value = { for name, public_ip in stackit_public_ip.example_public_ip : name => public_ip.ip } }