ceph-ops/main.tf
2024-04-19 15:36:43 +02:00

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"
}
}