93 lines
2.4 KiB
HCL
93 lines
2.4 KiB
HCL
|
|
variable "project_id" {}
|
|
variable "network_name" {}
|
|
variable "server_name" {}
|
|
|
|
variable "loadbalancer_name" {}
|
|
variable "target_pool_name" {}
|
|
variable "target_port" {}
|
|
variable "target_display_name" {}
|
|
variable "listener_port" {}
|
|
variable "listener_protocol" {}
|
|
variable "network_role" {}
|
|
|
|
variable "obs_display_name" {}
|
|
variable "obs_username" {}
|
|
variable "obs_password" {}
|
|
|
|
resource "stackit_network" "network" {
|
|
project_id = var.project_id
|
|
name = var.network_name
|
|
ipv4_nameservers = ["8.8.8.8"]
|
|
ipv4_prefix = "192.168.2.0/25"
|
|
routed = "true"
|
|
}
|
|
|
|
resource "stackit_network_interface" "network_interface" {
|
|
project_id = stackit_network.network.project_id
|
|
network_id = stackit_network.network.network_id
|
|
name = "name"
|
|
}
|
|
|
|
resource "stackit_public_ip" "public_ip" {
|
|
project_id = var.project_id
|
|
network_interface_id = stackit_network_interface.network_interface.network_interface_id
|
|
lifecycle {
|
|
ignore_changes = [
|
|
network_interface_id
|
|
]
|
|
}
|
|
}
|
|
|
|
resource "stackit_server" "server" {
|
|
project_id = var.project_id
|
|
availability_zone = "eu01-1"
|
|
name = var.server_name
|
|
machine_type = "t1.1"
|
|
boot_volume = {
|
|
size = 32
|
|
source_type = "image"
|
|
source_id = "59838a89-51b1-4892-b57f-b3caf598ee2f"
|
|
delete_on_termination = "true"
|
|
}
|
|
network_interfaces = [stackit_network_interface.network_interface.network_interface_id]
|
|
user_data = "#!/bin/bash"
|
|
}
|
|
|
|
resource "stackit_loadbalancer" "loadbalancer" {
|
|
project_id = var.project_id
|
|
name = var.loadbalancer_name
|
|
target_pools = [
|
|
{
|
|
name = var.target_pool_name
|
|
target_port = var.target_port
|
|
targets = [
|
|
{
|
|
display_name = var.target_display_name
|
|
ip = stackit_network_interface.network_interface.ipv4
|
|
}
|
|
]
|
|
}
|
|
]
|
|
listeners = [
|
|
{
|
|
port = var.listener_port
|
|
protocol = var.listener_protocol
|
|
target_pool = var.target_pool_name
|
|
}
|
|
]
|
|
networks = [
|
|
{
|
|
network_id = stackit_network.network.network_id
|
|
role = var.network_role
|
|
}
|
|
]
|
|
external_address = stackit_public_ip.public_ip.ip
|
|
}
|
|
|
|
resource "stackit_loadbalancer_observability_credential" "obs_credential" {
|
|
project_id = var.project_id
|
|
display_name = var.obs_display_name
|
|
username = var.obs_username
|
|
password = var.obs_password
|
|
}
|