diff --git a/.gitignore b/.gitignore index c31df9c6..09277b03 100644 --- a/.gitignore +++ b/.gitignore @@ -18,7 +18,6 @@ crash.*.log *.tfvars *.tfvars.json !*.auto.tfvars -!geoserver*.tfvars # Ignore override files as they are usually used to override resources locally and so # are not checked in override.tf diff --git a/openstack-tf/d4s-dev/geoserver/geoserver_plan.zip b/openstack-tf/d4s-dev/geoserver/geoserver_plan.zip new file mode 100644 index 00000000..c5e987ef Binary files /dev/null and b/openstack-tf/d4s-dev/geoserver/geoserver_plan.zip differ diff --git a/openstack-tf/modules/common_variables/variables.tf b/openstack-tf/modules/common_variables/variables.tf index 7ed8c057..42aea9ad 100644 --- a/openstack-tf/modules/common_variables/variables.tf +++ b/openstack-tf/modules/common_variables/variables.tf @@ -205,3 +205,19 @@ variable "smartexecutor_addresses" { module "ssh_settings" { source = "../../modules/ssh-key-ref" } + +# Added by Francesco +variable "flavor_list" { + type = map(string) + default = { + c1_small = "c1.small" #RAM 2 - VCPUs 2 + c1_medium = "c1.medium" #RAM 4 - VCPUs 4 + c1_large = "c1.large" #RAM 8 - VCPUs 8 + m1_medium = "m1.medium" #RAM 4 - VCPUs 2 + m1_large = "m1.large" #RAM 8 - VCPUs 4 + m1_xlarge = "m1.xlarge" #RAM 16 - VCPUs 8 + m2_small = "m2.small" #RAM 8 - VCPUs 2 + m2_medium = "m2.medium" #RAM 16 - VCPUs 4 + m2_large = "m2.large" #RAM 32 - VCPUs 8 + } +} diff --git a/openstack-tf/modules/geoserver/geoserver.tf b/openstack-tf/modules/geoserver/geoserver.tf index 45dff344..4d883c97 100644 --- a/openstack-tf/modules/geoserver/geoserver.tf +++ b/openstack-tf/modules/geoserver/geoserver.tf @@ -1,15 +1,60 @@ +# Creates single geoserver instance + +# # Geoserver attached volume - used for 'geoserver_data' +# resource "openstack_blockstorage_volume_v3" "geoserver_data_vol" { +# name = var.geoserver_basic_data.vol_data_name +# size = var.geoserver_basic_data.vol_data_size +# } + +# # Geoserver instance +# resource "openstack_compute_instance_v2" "geoserver" { +# name = var.geoserver_basic.name +# availability_zone_hints = var.availability_zones_names.availability_zone_no_gpu +# flavor_name = var.geoserver_basic.flavor +# key_pair = module.ssh_settings.ssh_key_name +# security_groups = [var.security_group_list.default, var.security_group_list.http_and_https_from_the_load_balancers] +# block_device { +# uuid = var.ubuntu_1804.uuid +# source_type = "image" +# volume_size = 10 +# boot_index = 0 +# destination_type = "volume" +# delete_on_termination = false +# } +# network { +# name = var.main_private_network.name +# } +# network { +# name = var.shared_postgresql_server_data.network_name +# } +# user_data = file("${var.ubuntu1804_data_file}") +# } + + +# # Attach the additional volume +# resource "openstack_compute_volume_attach_v2" "geoserver_data_attach_vol" { +# instance_id = openstack_compute_instance_v2.geoserver.id +# volume_id = openstack_blockstorage_volume_v3.geoserver_data_vol.id +# device = var.geoserver_basic_data.vol_data_device +# depends_on = [openstack_compute_instance_v2.geoserver] +# } + + +# Creates all the geoserver instances with volumes declared in the locals.geoserver_instances # Geoserver attached volume - used for 'geoserver_data' -resource "openstack_blockstorage_volume_v3" "geoserver_data_vol" { - name = var.geoserver_basic_data.vol_data_name - size = var.geoserver_basic_data.vol_data_size +resource "openstack_blockstorage_volume_v3" "geoserver_data_volume" { + for_each = local.geoserver_instances + name = each.value.vol_data_name + size = each.value.vol_data_size } # Geoserver instance resource "openstack_compute_instance_v2" "geoserver" { - name = var.geoserver_basic.name + for_each = local.geoserver_instances + name = each.value.name availability_zone_hints = var.availability_zones_names.availability_zone_no_gpu - flavor_name = var.geoserver_basic.flavor + flavor_name = each.value.flavor key_pair = module.ssh_settings.ssh_key_name security_groups = [var.security_group_list.default, var.security_group_list.http_and_https_from_the_load_balancers] block_device { @@ -32,8 +77,9 @@ resource "openstack_compute_instance_v2" "geoserver" { # Attach the additional volume resource "openstack_compute_volume_attach_v2" "geoserver_data_attach_vol" { - instance_id = openstack_compute_instance_v2.geoserver.id - volume_id = openstack_blockstorage_volume_v3.geoserver_data_vol.id + for_each = local.geoserver_instances + instance_id = openstack_compute_instance_v2.geoserver[each.key].id + volume_id = openstack_blockstorage_volume_v3.geoserver_data_volume[each.key].id device = var.geoserver_basic_data.vol_data_device depends_on = [openstack_compute_instance_v2.geoserver] } diff --git a/openstack-tf/modules/geoserver/instances/geoserver-geoportal.tfvars b/openstack-tf/modules/geoserver/instances/geoserver-geoportal.tfvars deleted file mode 100644 index 5cacfe19..00000000 --- a/openstack-tf/modules/geoserver/instances/geoserver-geoportal.tfvars +++ /dev/null @@ -1,12 +0,0 @@ - -geoserver_basic = { - name = "geoserver-geoportal" - description = "Geoserver geoportal instance" - flavor = "c1.medium" -} - -geoserver_basic_data = { - vol_data_name = "geoserver_data_volume" - vol_data_size = "40" - vol_data_device = "/dev/vdb" -} diff --git a/openstack-tf/modules/geoserver/variables-geoserver.tf b/openstack-tf/modules/geoserver/variables-geoserver.tf index a685d92e..c437ae1b 100644 --- a/openstack-tf/modules/geoserver/variables-geoserver.tf +++ b/openstack-tf/modules/geoserver/variables-geoserver.tf @@ -15,3 +15,16 @@ variable "geoserver_basic_data" { vol_data_device = "/dev/vdb" } } + +locals { + geoserver_instances = { + "geona" = { name = "geoserver-geona", description = "Geoserver geona instance", flavor = var.flavor_list.m1_xlarge, vol_data_name = "geoserver-geona_data_volume", vol_data_size = "50" }, + "esquiline" = { name = "geoserver-esquiline", description = "Geoserver esquiline instance", flavor = var.flavor_list.m2_small, vol_data_name = "geoserver-esquiline_data_volume", vol_data_size = "20" }, + "grsf" = { name = "geoserver-grsf", description = "Geoserver grsf instance", flavor = var.flavor_list.m1_large, vol_data_name = "geoserver-grsf_data_volume", vol_data_size = "40" }, + "protectedareaimpactmaps" = { name = "geoserver-protectedareaimpactmaps", description = "Geoserver protectedareaimpactmaps instance", flavor = var.flavor_list.c1_large, vol_data_name = "geoserver-protectedareaimpactmaps_data_volume", vol_data_size = "70" }, + "sdi-lab" = { name = "geoserver-sdi-lab", description = "Geoserver sdi-lab instance", flavor = var.flavor_list.m1_large, vol_data_name = "geoserver-sdi-lab_data_volume", vol_data_size = "100" }, + "tunaatlas" = { name = "geoserver-tunaatlas", description = "Geoserver tunaatlas instance", flavor = var.flavor_list.m1_large, vol_data_name = "geoserver-tunaatlas_data_volume", vol_data_size = "60" }, + "wecafc-firms" = { name = "geoserver-wecafc-firms", description = "Geoserver wecafc-firms instance", flavor = var.flavor_list.m1_large, vol_data_name = "geoserver-wecafc-firms_data_volume", vol_data_size = "40" }, + "aquacultureatlas" = { name = "geoserver-aquacultureatlas", description = "Geoserver aquacultureatlas instance", flavor = var.flavor_list.m1_large, vol_data_name = "geoserver-aquacultureatlas_data_volume", vol_data_size = "50" } + } +}