# Define required providers terraform { required_version = ">= 0.14.0" required_providers { openstack = { source = "terraform-provider-openstack/openstack" version = "~> 1.53.0" } } } # Configure the OpenStack Provider provider "openstack" { cloud = "dco-platform" } 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" { 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" { 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" { 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" } }