Compare commits

..

3 commits

Author SHA1 Message Date
e50ce7235d dev
Some checks failed
CI / TruffleHog Secrets Scan (push) Successful in 16s
CI / Terraform Format & Validate (push) Failing after 17s
2025-07-10 16:46:32 +02:00
688d552a5d adjustments
Some checks failed
CI / TruffleHog Secrets Scan (push) Successful in 7s
CI / Terraform Format & Validate (push) Failing after 40s
2025-07-01 16:36:07 +02:00
78961a6349 order h100 gpu
Some checks failed
CI / Terraform Format & Validate (push) Failing after 8s
CI / TruffleHog Secrets Scan (push) Successful in 7s
2025-06-26 15:53:16 +02:00
2 changed files with 56 additions and 41 deletions

View file

@ -1,6 +1,6 @@
variable "stackit_project_id" { variable "stackit_project_id" {
type = string type = string
default = "XXXXX-XXXX-XXXX-XXXX-XXXXXXX" default = "2b3c1df5-4cb0-4d5e-aed1-3abf211c4c43"
} }
variable "stackit_region" { variable "stackit_region" {
@ -10,5 +10,5 @@ variable "stackit_region" {
variable "stackit_service_account_key_path" { variable "stackit_service_account_key_path" {
type = string type = string
default = "./keys/stackit-sa.json" default = "./keys/stackit-sa-nvl.json"
} }

View file

@ -8,53 +8,68 @@ resource "stackit_key_pair" "example_keypair" {
public_key = chomp(file("~/.ssh/id_rsa.pub")) public_key = chomp(file("~/.ssh/id_rsa.pub"))
} }
resource "stackit_volume" "example_volume" { locals {
project_id = var.stackit_project_id servers = flatten([
size = 72 for zone, count in {
source = { eu01-3 = 3,
type = "image" eu01-1 = 3,
// ubuntu 24.04 eu01-2 = 2
id = "a2c127b2-b1b5-4aee-986f-41cd11b41279" } : [
} for index in range(count) : {
performance_class = "storage_premium_perf12" name = "example-server-${zone}-${index}"
name = "example-volume" availability_zone = zone
availability_zone = "eu01-m" }
} ]
])
resource "stackit_network_interface" "example_nic" {
project_id = var.stackit_project_id
network_id = stackit_network.example_network.network_id
security = false
}
resource "stackit_server" "example_server" {
project_id = var.stackit_project_id
name = "example-server"
boot_volume = {
source_type = "volume"
source_id = stackit_volume.example_volume.volume_id
}
availability_zone = "eu01-m"
// change on the machine type does not affect the underlying volume
machine_type = "g1.4"
keypair_name = stackit_key_pair.example_keypair.name
network_interfaces = [
stackit_network_interface.example_nic.network_interface_id
]
} }
# Create network for each server
resource "stackit_network" "example_network" { resource "stackit_network" "example_network" {
for_each = { for server in local.servers : server.name => server }
project_id = var.stackit_project_id project_id = var.stackit_project_id
name = "example-network" name = "${each.value.name}-network"
ipv4_prefix_length = 24 ipv4_prefix_length = 24
ipv4_nameservers = ["1.1.1.1", "8.8.8.8"] ipv4_nameservers = ["1.1.1.1", "8.8.8.8"]
} }
resource "stackit_public_ip" "example_public_ip" { # Create NIC for each server
project_id = var.stackit_project_id resource "stackit_network_interface" "example_nic" {
network_interface_id = stackit_network_interface.example_nic.network_interface_id 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
} }
output "public_ip" { # Create server
value = stackit_public_ip.example_public_ip.ip 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 }
} }