64 lines
1.8 KiB
Terraform
64 lines
1.8 KiB
Terraform
|
# 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"
|
||
|
}
|
||
|
}
|