Managed image_ref as map of string

This commit is contained in:
Francesco Mangiacrapa 2023-12-05 11:22:22 +01:00
parent 37ad816a69
commit 74516812b3
12 changed files with 112 additions and 93 deletions

View File

@ -41,20 +41,15 @@ resource "openstack_compute_servergroup_v2" "geoportal" {
module "smartgears_service_generic" { module "smartgears_service_generic" {
source = "../../modules/generic_smartgears_service" source = "../../modules/generic_smartgears_service"
# Here, you can overwrite the openstack_vm_data_scripts to run for ubuntuXYZ.sh
# user_data_var_file = {
# user_data_file = "../../openstack_vm_data_scripts/ubuntu2204.sh"
# }
smartgears_service_instances_map = { smartgears_service_instances_map = {
geoportal_service = { geoportal_service = {
name = "geoportal-cms", name = "geoportal-cms",
description = "The Geoportal instance", description = "The Geoportal instance",
flavor = "m1.medium", flavor = module.common_variables.flavor_list.m1_medium,
networks = ["d4s-dev-cloud-main", "postgresql-srv-net"], networks = ["d4s-dev-cloud-main", module.common_variables.networks_list.shared_postgresql],
security_groups = ["default", "http and https from the load balancers"], security_groups = [module.common_variables.security_group_list.default, module.common_variables.security_group_list.http_and_https_from_the_load_balancers],
server_groups_ids = [openstack_compute_servergroup_v2.geoportal.id], server_groups_ids = [openstack_compute_servergroup_v2.geoportal.id],
image_uuid = "7ed6a2cd-2b07-482e-8ce4-f018dff16c89" #ubuntu_18_04.uuid of DEV image_ref = module.common_variables.ubuntu_1804
} }
} }
} }

View File

@ -17,112 +17,116 @@ data "terraform_remote_state" "privnet_dns_router" {
} }
} }
#
# Uses common_variables as module
#
module "common_variables" {
source = "../../modules/common_variables"
}
module "geo_service" { module "geo_service" {
source = "../../modules/geo_services" source = "../../modules/geo_services"
# Here, you can overwrite the openstack_vm_data_scripts to run for ubuntuXYZ.sh
# user_data_var_file = {
# user_data_file = "../../openstack_vm_data_scripts/ubuntu2204.sh"
# }
geo_service_instances_map = { geo_service_instances_map = {
geona = { geona = {
name = "geoserver-geona", name = "geoserver-geona",
description = "Geoserver geona instance", description = "Geoserver geona instance",
flavor = "m1.xlarge", flavor = module.common_variables.flavor_list.m1_large,
networks = ["d4s-dev-cloud-main", "postgresql-srv-net"], networks = ["d4s-dev-cloud-main", module.common_variables.networks_list.shared_postgresql],
security_groups = ["default", "http and https from the load balancers"], security_groups = [module.common_variables.security_group_list.default, module.common_variables.security_group_list.http_and_https_from_the_load_balancers],
server_groups_ids = [], server_groups_ids = [],
image_uuid = "7ed6a2cd-2b07-482e-8ce4-f018dff16c89" #ubuntu_18_04.uuid of DEV image_ref = module.common_variables.ubuntu_1804
vol_data_name = "geoserver-geona_data_volume", vol_data_name = "geoserver-geona_data_volume",
vol_data_size = "50" vol_data_size = "50"
}, },
esquiline = { esquiline = {
name = "geoserver-esquiline", name = "geoserver-esquiline",
description = "Geoserver esquiline instance", description = "Geoserver esquiline instance",
flavor = "m2.small", flavor = module.common_variables.flavor_list.m2_small,
networks = ["d4s-dev-cloud-main", "postgresql-srv-net"], networks = ["d4s-dev-cloud-main", module.common_variables.networks_list.shared_postgresql],
security_groups = ["default", "http and https from the load balancers"], security_groups = [module.common_variables.security_group_list.default, module.common_variables.security_group_list.http_and_https_from_the_load_balancers],
server_groups_ids = [], server_groups_ids = [],
image_uuid = "7ed6a2cd-2b07-482e-8ce4-f018dff16c89" #ubuntu_18_04.uuid of DEV image_ref = module.common_variables.ubuntu_1804
vol_data_name = "geoserver-esquiline_data_volume", vol_data_name = "geoserver-esquiline_data_volume",
vol_data_size = "20" vol_data_size = "20"
}, },
ariadne = { ariadne = {
name = "geoserver-ariadne", name = "geoserver-ariadne",
description = "Geoserver ariadne instance", description = "Geoserver ariadne instance",
flavor = "m2.small", flavor = module.common_variables.flavor_list.m2_small,
networks = ["d4s-dev-cloud-main", "postgresql-srv-net"], networks = ["d4s-dev-cloud-main", module.common_variables.networks_list.shared_postgresql],
security_groups = ["default", "http and https from the load balancers"], security_groups = [module.common_variables.security_group_list.default, module.common_variables.security_group_list.http_and_https_from_the_load_balancers],
server_groups_ids = [], server_groups_ids = [],
image_uuid = "7ed6a2cd-2b07-482e-8ce4-f018dff16c89" #ubuntu_18_04.uuid of DEV image_ref = module.common_variables.ubuntu_1804
vol_data_name = "geoserver-ariadne_data_volume", vol_data_name = "geoserver-ariadne_data_volume",
vol_data_size = "20" vol_data_size = "20"
}, },
grsf = { grsf = {
name = "geoserver-grsf", name = "geoserver-grsf",
description = "Geoserver grsf instance", description = "Geoserver grsf instance",
flavor = "m1.large", flavor = module.common_variables.flavor_list.m1_large,
networks = ["d4s-dev-cloud-main", "postgresql-srv-net"], networks = ["d4s-dev-cloud-main", module.common_variables.networks_list.shared_postgresql],
security_groups = ["default", "http and https from the load balancers"], security_groups = [module.common_variables.security_group_list.default, module.common_variables.security_group_list.http_and_https_from_the_load_balancers],
server_groups_ids = [], server_groups_ids = [],
image_uuid = "7ed6a2cd-2b07-482e-8ce4-f018dff16c89" #ubuntu_18_04.uuid of DEV image_ref = module.common_variables.ubuntu_1804
vol_data_name = "geoserver-grsf_data_volume", vol_data_name = "geoserver-grsf_data_volume",
vol_data_size = "40" vol_data_size = "40"
}, },
protectedareaimpactmaps = { protectedareaimpactmaps = {
name = "geoserver-protectedareaimpactmaps", name = "geoserver-protectedareaimpactmaps",
description = "Geoserver protectedareaimpactmaps instance", description = "Geoserver protectedareaimpactmaps instance",
flavor = "c1.large", flavor = module.common_variables.flavor_list.c1_large,
networks = ["d4s-dev-cloud-main", "postgresql-srv-net"], networks = ["d4s-dev-cloud-main", module.common_variables.networks_list.shared_postgresql],
security_groups = ["default", "http and https from the load balancers"], security_groups = [module.common_variables.security_group_list.default, module.common_variables.security_group_list.http_and_https_from_the_load_balancers],
server_groups_ids = [], server_groups_ids = [],
image_uuid = "7ed6a2cd-2b07-482e-8ce4-f018dff16c89" #ubuntu_18_04.uuid of DEV image_ref = module.common_variables.ubuntu_1804
vol_data_name = "geoserver-protectedareaimpactmaps_data_volume", vol_data_name = "geoserver-protectedareaimpactmaps_data_volume",
vol_data_size = "70" vol_data_size = "70"
} }
sdi-lab = { sdi-lab = {
name = "geoserver-sdi-lab", name = "geoserver-sdi-lab",
description = "Geoserver sdi-lab instance", description = "Geoserver sdi-lab instance",
flavor = "m1.large", flavor = module.common_variables.flavor_list.m1_large,
networks = ["d4s-dev-cloud-main", "postgresql-srv-net"], networks = ["d4s-dev-cloud-main", module.common_variables.networks_list.shared_postgresql],
security_groups = ["default", "http and https from the load balancers"], security_groups = [module.common_variables.security_group_list.default, module.common_variables.security_group_list.http_and_https_from_the_load_balancers],
server_groups_ids = [], server_groups_ids = [],
image_uuid = "7ed6a2cd-2b07-482e-8ce4-f018dff16c89" #ubuntu_18_04.uuid of DEV image_ref = module.common_variables.ubuntu_1804
vol_data_name = "geoserver-sdi-lab_data_volume", vol_data_name = "geoserver-sdi-lab_data_volume",
vol_data_size = "100" vol_data_size = "100"
} }
tunaatlas = { tunaatlas = {
name = "geoserver-tunaatlas", name = "geoserver-tunaatlas",
description = "Geoserver tunaatlas instance", description = "Geoserver tunaatlas instance",
flavor = "m1.large", flavor = module.common_variables.flavor_list.m1_large,
networks = ["d4s-dev-cloud-main", "postgresql-srv-net"], networks = ["d4s-dev-cloud-main", module.common_variables.networks_list.shared_postgresql],
security_groups = ["default", "http and https from the load balancers"], security_groups = [module.common_variables.security_group_list.default, module.common_variables.security_group_list.http_and_https_from_the_load_balancers],
server_groups_ids = [], server_groups_ids = [],
image_uuid = "7ed6a2cd-2b07-482e-8ce4-f018dff16c89" #ubuntu_18_04.uuid of DEV image_ref = module.common_variables.ubuntu_1804
vol_data_name = "geoserver-tunaatlas_data_volume", vol_data_name = "geoserver-tunaatlas_data_volume",
vol_data_size = "60" vol_data_size = "60"
} }
wecafc-firms = { wecafc-firms = {
name = "geoserver-wecafc-firms", name = "geoserver-wecafc-firms",
description = "Geoserver wecafc-firms instance", description = "Geoserver wecafc-firms instance",
flavor = "m1.large", flavor = module.common_variables.flavor_list.m1_large,
networks = ["d4s-dev-cloud-main", "postgresql-srv-net"], networks = ["d4s-dev-cloud-main", module.common_variables.networks_list.shared_postgresql],
security_groups = ["default", "http and https from the load balancers"], security_groups = [module.common_variables.security_group_list.default, module.common_variables.security_group_list.http_and_https_from_the_load_balancers],
server_groups_ids = [], server_groups_ids = [],
image_uuid = "7ed6a2cd-2b07-482e-8ce4-f018dff16c89" #ubuntu_18_04.uuid of DEV image_ref = module.common_variables.ubuntu_1804
vol_data_name = "geoserver-wecafc-firms_data_volume", vol_data_name = "geoserver-wecafc-firms_data_volume",
vol_data_size = "40" vol_data_size = "40"
} }
aquacultureatlas = { aquacultureatlas = {
name = "geoserver-aquacultureatlas", name = "geoserver-aquacultureatlas",
description = "Geoserver aquacultureatlas instance", description = "Geoserver aquacultureatlas instance",
flavor = "m1.large", flavor = module.common_variables.flavor_list.m1_large,
networks = ["d4s-dev-cloud-main", "postgresql-srv-net"], networks = ["d4s-dev-cloud-main", module.common_variables.networks_list.shared_postgresql],
security_groups = ["default", "http and https from the load balancers"], security_groups = [module.common_variables.security_group_list.default, module.common_variables.security_group_list.http_and_https_from_the_load_balancers],
server_groups_ids = [], server_groups_ids = [],
image_uuid = "7ed6a2cd-2b07-482e-8ce4-f018dff16c89" #ubuntu_18_04.uuid of DEV image_ref = module.common_variables.ubuntu_1804
vol_data_name = "geoserver-aquacultureatlas_data_volume", vol_data_name = "geoserver-aquacultureatlas_data_volume",
vol_data_size = "50" vol_data_size = "50"
} }

View File

@ -40,25 +40,24 @@ module "smartgears_service_generic" {
smartgears_service_instances_map = { smartgears_service_instances_map = {
# URI-Resolver instance 1 # URI-Resolver instance 1
uri_resolver_service_i1 = { uri_resolver_service_i1 = {
name = "data", name = "data-1",
description = "The data instance", description = "The data instance",
flavor = "m1.medium", flavor = module.common_variables.flavor_list.m1_medium,
networks = ["d4s-dev-cloud-main"], networks = ["d4s-dev-cloud-main"],
security_groups = ["default", "http and https from the load balancers"], security_groups = [module.common_variables.security_group_list.default, module.common_variables.security_group_list.http_and_https_from_the_load_balancers],
server_groups_ids = [openstack_compute_servergroup_v2.uri-resolver.id], server_groups_ids = [openstack_compute_servergroup_v2.uri-resolver.id],
image_uuid = "7ed6a2cd-2b07-482e-8ce4-f018dff16c89" #ubuntu_18_04.uuid of DEV image_ref = module.common_variables.ubuntu_1804
}, },
# URI-Resolver instance 2 # URI-Resolver instance 2
uri_resolver_service_i2 = { uri_resolver_service_i2 = {
name = "data1", name = "data-2",
description = "The data1 instance", description = "The data1 instance",
flavor = "m1.medium", flavor = module.common_variables.flavor_list.m1_medium,
networks = ["d4s-dev-cloud-main"], networks = ["d4s-dev-cloud-main"],
security_groups = ["default", "http and https from the load balancers"], security_groups = [module.common_variables.security_group_list.default, module.common_variables.security_group_list.http_and_https_from_the_load_balancers],
server_groups_ids = [openstack_compute_servergroup_v2.uri-resolver.id], server_groups_ids = [openstack_compute_servergroup_v2.uri-resolver.id],
image_uuid = "7ed6a2cd-2b07-482e-8ce4-f018dff16c89" #ubuntu_18_04.uuid of DEV image_ref = module.common_variables.ubuntu_1804
} }
} }
} }

View File

@ -160,7 +160,24 @@ output "octavia_information" {
value = var.octavia_information value = var.octavia_information
} }
#Added by Francesco
output "policy_list" { output "policy_list" {
value = var.policy_list value = var.policy_list
} }
#Added by Francesco
output "flavor_list" {
value = var.flavor_list
}
#Added by Francesco
output "security_group_list" {
value = var.security_group_list
}
#Added by Francesco
output "networks_list" {
value = var.networks_list
}

View File

@ -120,16 +120,18 @@ variable "ubuntu_1804" {
type = map(string) type = map(string)
default = { default = {
name = "Ubuntu-Bionic-18.04" name = "Ubuntu-Bionic-18.04"
uuid = "7ed6a2cd-2b07-482e-8ce4-f018dff16c89" uuid = "7ed6a2cd-2b07-482e-8ce4-f018dff16c89"
user_data_file = "../../openstack_vm_data_scripts/ubuntu1804.sh"
} }
} }
variable "ubuntu_2204" { variable "ubuntu_2204" {
type = map(string) type = map(string)
default = { default = {
name = "Ubuntu-Jammy-22.04" name = "Ubuntu-Jammy-22.04"
uuid = "54768889-8556-4be4-a2eb-82a4d9b34627" uuid = "54768889-8556-4be4-a2eb-82a4d9b34627"
user_data_file = "../../openstack_vm_data_scripts/ubuntu2204.sh"
} }
} }

View File

@ -0,0 +1,24 @@
# This file is maintained automatically by "terraform init".
# Manual edits may be lost in future updates.
provider "registry.terraform.io/terraform-provider-openstack/openstack" {
version = "1.53.0"
constraints = "~> 1.53.0"
hashes = [
"h1:YLGvYkSuagyP5orUTyKNK+JhzS17EFTUDpZ5R5/fFv4=",
"zh:09da7ca98ffd3de7b9ce36c4c13446212a6e763ba1162be71b50f95d453cb68e",
"zh:14041bcbb87312411d88612056ed185650bfd01284b8ea0761ce8105a331708e",
"zh:35bf4c788fdbc17c8e40ebc7b33c7de4b45a2fa2efaa657b10f0e3bd37c9627f",
"zh:46ede8ef4cfa12d654c538afc1e1ec34a1f3e8eb4e986ee23dceae398b7176a6",
"zh:59675734990dab1e8d87997853ea75e8104bba730b3f5a7146ac735540c9d6bf",
"zh:6de52428849806498670e827b54810be7510a2a79449602c1aede4235a0ec036",
"zh:78b2a20601272afceffac8f8ca78a6b647b84196c0dd8dc710fae297f6be15a4",
"zh:7c41ed3a4fac09677e676ecf9f9edd1e38eef449e656cb01a848d2c799c6de8f",
"zh:852800228f4118a4aa6cfaa4468b851247cbed6f037fd204f08de69eb1edc149",
"zh:86d618e7f9a07d978b8bc4b190be350a00de64ec535f9c8f5dfe133542a55483",
"zh:963a9e72b66d8bcf43de9b14a674ae3ca3719ce2f829217f7a65b66fc3773397",
"zh:a8e72ab67795071bda61f99a6de3d2d40122fb51971768fd75e1324abe874ced",
"zh:ce1890cf3af17d569af3bc7673cec0a8f78e6f5d701767593f3d29c551f44848",
"zh:e6f1b96eb684f527a47f71923f268c86a36d7894751b31ee9e726d7502a639cd",
]
}

View File

@ -18,7 +18,7 @@ resource "openstack_compute_instance_v2" "smartgears_service" {
key_pair = module.ssh_settings.ssh_key_name key_pair = module.ssh_settings.ssh_key_name
security_groups = each.value.security_groups security_groups = each.value.security_groups
block_device { block_device {
uuid = each.value.image_uuid uuid = each.value.image_ref.uuid
source_type = "image" source_type = "image"
volume_size = 10 volume_size = 10
boot_index = 0 boot_index = 0
@ -43,5 +43,5 @@ resource "openstack_compute_instance_v2" "smartgears_service" {
} }
#user_data script used #user_data script used
user_data = file("${var.user_data_var_file.user_data_file}") #default is 18.04 user_data = file("${each.value.image_ref.user_data_file}")
} }

View File

@ -2,7 +2,3 @@
output "smartgears_service_instances_map" { output "smartgears_service_instances_map" {
value = var.smartgears_service_instances_map value = var.smartgears_service_instances_map
} }
output "user_data_var_file" {
value = var.user_data_var_file
}

View File

@ -1,11 +1,4 @@
variable "user_data_var_file" {
type = map(string)
default = {
user_data_file = "../../openstack_vm_data_scripts/ubuntu1804.sh" #default is 18.04
}
}
#Default smartgears_service is EMPTY. Override it to create a proper smartegears plan #Default smartgears_service is EMPTY. Override it to create a proper smartegears plan
variable "smartgears_service_instances_map" { variable "smartgears_service_instances_map" {
type = map(object({ type = map(object({
@ -15,10 +8,10 @@ variable "smartgears_service_instances_map" {
networks = list(string) networks = list(string)
security_groups = list(string) security_groups = list(string)
server_groups_ids = list(string) server_groups_ids = list(string)
image_uuid = string image_ref = map(string)
})) }))
default = { default = {
smartgears_service = { name = "", description = "", flavor = "", networks = [], security_groups = [], server_groups_ids = [], image_uuid = "" } smartgears_service = { name = "", description = "", flavor = "", networks = [], security_groups = [], server_groups_ids = [], image_ref = {} }
} }
} }

View File

@ -22,7 +22,7 @@ resource "openstack_compute_instance_v2" "geo_service" {
key_pair = module.ssh_settings.ssh_key_name key_pair = module.ssh_settings.ssh_key_name
security_groups = each.value.security_groups security_groups = each.value.security_groups
block_device { block_device {
uuid = each.value.image_uuid uuid = each.value.image_ref.uuid
source_type = "image" source_type = "image"
volume_size = 10 volume_size = 10
boot_index = 0 boot_index = 0
@ -45,7 +45,7 @@ resource "openstack_compute_instance_v2" "geo_service" {
group = scheduler_hints.value group = scheduler_hints.value
} }
} }
user_data = file("${var.user_data_var_file.user_data_file}") #default is 18.04 user_data = file("${each.value.image_ref.user_data_file}")
} }

View File

@ -7,13 +7,6 @@ variable "geo_instance_basic_data" {
} }
} }
variable "user_data_var_file" {
type = map(string)
default = {
user_data_file = "../../openstack_vm_data_scripts/ubuntu1804.sh" #default is 18.04
}
}
#Default geo_service_instances_map is EMPTY. Override it to create a proper geoserver plan #Default geo_service_instances_map is EMPTY. Override it to create a proper geoserver plan
variable "geo_service_instances_map" { variable "geo_service_instances_map" {
type = map(object({ type = map(object({
@ -23,12 +16,12 @@ variable "geo_service_instances_map" {
networks = list(string) networks = list(string)
security_groups = list(string) security_groups = list(string)
server_groups_ids = list(string) server_groups_ids = list(string)
image_uuid = string image_ref = map(string)
vol_data_name = string vol_data_name = string
vol_data_size = string vol_data_size = string
})) }))
default = { default = {
geoserver = { name = "", description = "", flavor = "", networks = [], security_groups = [], server_groups_ids = [], image_uuid = "", vol_data_name = "", vol_data_size = "" } geoserver = { name = "", description = "", flavor = "", networks = [], security_groups = [], server_groups_ids = [], image_ref = {}, vol_data_name = "", vol_data_size = "" }
} }
} }

View File

@ -6,8 +6,4 @@ output "geo_instance_basic_data" {
value = var.geo_instance_basic_data value = var.geo_instance_basic_data
} }
output "user_data_var_file" {
value = var.user_data_var_file
}