manila shares for swarm stacks.

This commit is contained in:
Andrea Dell'Amico 2024-03-05 18:34:15 +01:00
parent 7204c84c36
commit 8b05c335dd
Signed by untrusted user: andrea.dellamico
GPG Key ID: 147ABE6CEB9E20FF
3 changed files with 155 additions and 0 deletions

View File

@ -0,0 +1,115 @@
# NFS shares required by
# Create a NFS share
resource "openstack_sharedfilesystem_share_v2" "webodv_private_data" {
name = "sobigdata_webodv_private_data"
description = "NFS share for the sobigdata webodv private data"
share_proto = "NFS"
size = 1000
}
# Allow access to the NFS share
resource "openstack_sharedfilesystem_share_access_v2" "webodv_mgr_private_data_share_access" {
for_each = { for nfs_ip in data.terraform_remote_state.main_infrastructure.outputs.swarm_managers_nfs_ip_ports : join("", nfs_ip.all_fixed_ips) => nfs_ip }
share_id = openstack_sharedfilesystem_share_v2.webodv_private_data.id
access_type = "ip"
access_to = each.key
access_level = "rw"
}
resource "openstack_sharedfilesystem_share_access_v2" "webodv_workers_private_data_share_access" {
for_each = { for nfs_ip in data.terraform_remote_state.main_infrastructure.outputs.swarm_workers_nfs_ip_ports : join("", nfs_ip.all_fixed_ips) => nfs_ip }
share_id = openstack_sharedfilesystem_share_v2.webodv_private_data.id
access_type = "ip"
access_to = each.key
access_level = "rw"
}
resource "openstack_sharedfilesystem_share_v2" "webodv_home_data" {
name = "sobigdata_webodv_home_data"
description = "NFS share for the sobigdata webodv home data"
share_proto = "NFS"
size = 10
}
# Allow access to the NFS share
resource "openstack_sharedfilesystem_share_access_v2" "webodv_mgr_home_data_share_access" {
for_each = { for nfs_ip in data.terraform_remote_state.main_infrastructure.outputs.swarm_managers_nfs_ip_ports : join("", nfs_ip.all_fixed_ips) => nfs_ip }
share_id = openstack_sharedfilesystem_share_v2.webodv_home_data.id
access_type = "ip"
access_to = each.key
access_level = "rw"
}
resource "openstack_sharedfilesystem_share_access_v2" "webodv_workers_home_data_share_access" {
for_each = { for nfs_ip in data.terraform_remote_state.main_infrastructure.outputs.swarm_workers_nfs_ip_ports : join("", nfs_ip.all_fixed_ips) => nfs_ip }
share_id = openstack_sharedfilesystem_share_v2.webodv_home_data.id
access_type = "ip"
access_to = each.key
access_level = "rw"
}
resource "openstack_sharedfilesystem_share_v2" "webodv_public_data" {
name = "sobigdata_webodv_home_data"
description = "NFS share for the sobigdata webodv home data"
share_proto = "NFS"
size = 10
}
# Allow access to the NFS share
resource "openstack_sharedfilesystem_share_access_v2" "webodv_mgr_public_data_share_access" {
for_each = { for nfs_ip in data.terraform_remote_state.main_infrastructure.outputs.swarm_managers_nfs_ip_ports : join("", nfs_ip.all_fixed_ips) => nfs_ip }
share_id = openstack_sharedfilesystem_share_v2.webodv_public_data.id
access_type = "ip"
access_to = each.key
access_level = "rw"
}
resource "openstack_sharedfilesystem_share_access_v2" "webodv_workers_public_data_share_access" {
for_each = { for nfs_ip in data.terraform_remote_state.main_infrastructure.outputs.swarm_workers_nfs_ip_ports : join("", nfs_ip.all_fixed_ips) => nfs_ip }
share_id = openstack_sharedfilesystem_share_v2.webodv_public_data.id
access_type = "ip"
access_to = each.key
access_level = "rw"
}
output "webodv_nfs_private_data" {
value = openstack_sharedfilesystem_share_v2.webodv_private_data
}
output "webodv_nfs_private_data_mgr_acls" {
value = openstack_sharedfilesystem_share_access_v2.webodv_mgr_private_data_share_access
sensitive = true
}
output "webodv_nfs_private_data_workers_acls" {
value = openstack_sharedfilesystem_share_access_v2.webodv_workers_private_data_share_access
sensitive = true
}
output "webodv_nfs_home_data" {
value = openstack_sharedfilesystem_share_v2.webodv_home_data
}
output "webodv_nfs_home_data_mgr_acls" {
value = openstack_sharedfilesystem_share_access_v2.webodv_mgr_home_data_share_access
sensitive = true
}
output "webodv_nfs_home_data_workers_acls" {
value = openstack_sharedfilesystem_share_access_v2.webodv_workers_home_data_share_access
sensitive = true
}
output "webodv_nfs_public_data" {
value = openstack_sharedfilesystem_share_v2.webodv_public_data
}
output "webodv_nfs_public_data_mgr_acls" {
value = openstack_sharedfilesystem_share_access_v2.webodv_mgr_public_data_share_access
sensitive = true
}
output "webodv_nfs_public_data_workers_acls" {
value = openstack_sharedfilesystem_share_access_v2.webodv_workers_public_data_share_access
sensitive = true
}

View File

@ -0,0 +1,37 @@
# Define required providers
terraform {
required_version = ">= 0.14.0"
required_providers {
openstack = {
source = "terraform-provider-openstack/openstack"
version = "~> 1.53.0"
}
}
}
data "terraform_remote_state" "privnet_dns_router" {
backend = "local"
config = {
path = "../project-setup/terraform.tfstate"
}
}
data "terraform_remote_state" "main_infrastructure" {
backend = "local"
config = {
path = "../basic-infrastructure/terraform.tfstate"
}
}
# SSH settings
module "ssh_settings" {
source = "../../modules/ssh-key-ref"
}
#
# Uses common_variables as module
#
module "common_variables" {
source = "../../modules/common_variables"
}

View File

@ -0,0 +1,3 @@
provider "openstack" {
cloud = "d4s-production"
}