120 lines
3.6 KiB
HCL
120 lines
3.6 KiB
HCL
# Define required providers
|
|
terraform {
|
|
required_version = ">= 0.14.0"
|
|
required_providers {
|
|
openstack = {
|
|
source = "terraform-provider-openstack/openstack"
|
|
version = "~> 1.53.0"
|
|
configuration_aliases = [ openstack.sto4 ]
|
|
}
|
|
}
|
|
}
|
|
|
|
# Configure the OpenStack Provider
|
|
provider "openstack" {
|
|
cloud = "dco-platform"
|
|
}
|
|
provider "openstack" {
|
|
cloud = "sto4-platform"
|
|
alias = "sto4"
|
|
}
|
|
resource "openstack_networking_secgroup_v2" "ssh-jump-tofu-sto4" {
|
|
provider = openstack.sto4
|
|
description = "SSH from jumphost rule for SWAMID machine - managed by tofu"
|
|
name = "ssh-jump-tofu"
|
|
delete_default_rules = false
|
|
}
|
|
resource "openstack_networking_secgroup_v2" "ssh-jump-tofu" {
|
|
description = "SSH from jumphost rule for SWAMID machine - managed by tofu"
|
|
name = "ssh-jump-tofu"
|
|
delete_default_rules = false
|
|
}
|
|
|
|
resource "openstack_networking_secgroup_rule_v2" "v4-jump-sto4" {
|
|
provider = openstack.sto4
|
|
for_each = var.jump_hosts
|
|
direction = "ingress"
|
|
ethertype = "IPv4"
|
|
port_range_min = 22
|
|
port_range_max = 22
|
|
protocol = "tcp"
|
|
remote_ip_prefix = each.value["v4"]
|
|
security_group_id = "${openstack_networking_secgroup_v2.ssh-jump-tofu-sto4.id}"
|
|
|
|
}
|
|
resource "openstack_networking_secgroup_rule_v2" "v4-jump" {
|
|
for_each = var.jump_hosts
|
|
direction = "ingress"
|
|
ethertype = "IPv4"
|
|
port_range_min = 22
|
|
port_range_max = 22
|
|
protocol = "tcp"
|
|
remote_ip_prefix = each.value["v4"]
|
|
security_group_id = openstack_networking_secgroup_v2.ssh-jump-tofu.id
|
|
}
|
|
|
|
resource "openstack_networking_secgroup_rule_v2" "v6-jump-sto4" {
|
|
provider = openstack.sto4
|
|
for_each = var.jump_hosts
|
|
direction = "ingress"
|
|
ethertype = "IPv6"
|
|
port_range_min = 22
|
|
port_range_max = 22
|
|
protocol = "tcp"
|
|
remote_ip_prefix = each.value["v6"]
|
|
security_group_id = openstack_networking_secgroup_v2.ssh-jump-tofu-sto4.id
|
|
}
|
|
resource "openstack_networking_secgroup_rule_v2" "v6-jump" {
|
|
for_each = var.jump_hosts
|
|
direction = "ingress"
|
|
ethertype = "IPv6"
|
|
port_range_min = 22
|
|
port_range_max = 22
|
|
protocol = "tcp"
|
|
remote_ip_prefix = each.value["v6"]
|
|
security_group_id = openstack_networking_secgroup_v2.ssh-jump-tofu.id
|
|
}
|
|
resource "openstack_compute_instance_v2" "ceph-nodes-sto4" {
|
|
provider = openstack.sto4
|
|
count = var.instance_count
|
|
name = "${var.instance_name}-${count.index}.${var.dns_suffix}"
|
|
flavor_name = "${var.instance_type}"
|
|
key_pair = "mifr-yubi"
|
|
security_groups = ["ssh-jump-tofu",]
|
|
image_name = "debian-12"
|
|
user_data = "#cloud-config\ngrowpart:\nmode: false"
|
|
block_device {
|
|
boot_index = 0
|
|
delete_on_termination = true
|
|
destination_type = "local"
|
|
source_type = "image"
|
|
uuid = "5d24aca9-11be-4de1-9770-4a097d68f361"
|
|
volume_size = 20
|
|
}
|
|
|
|
network {
|
|
name = "public"
|
|
}
|
|
}
|
|
resource "openstack_compute_instance_v2" "ceph-nodes" {
|
|
count = var.instance_count
|
|
name = "${var.instance_name}-${count.index}.${var.dns_suffix}"
|
|
flavor_name = "${var.instance_type}"
|
|
key_pair = "mifr-yubi"
|
|
security_groups = ["ssh-jump-tofu",]
|
|
image_name = "debian-12"
|
|
region = "dco1"
|
|
user_data = "#cloud-config\ngrowpart:\nmode: false"
|
|
block_device {
|
|
boot_index = 0
|
|
delete_on_termination = true
|
|
destination_type = "local"
|
|
source_type = "image"
|
|
uuid = "d26c1ad1-90a2-4086-b1d9-08a5f6fe05cb"
|
|
volume_size = 20
|
|
}
|
|
|
|
network {
|
|
name = "public"
|
|
}
|
|
}
|