Merge pull request 'Added new geo_services module. It will be used to create geoservice instances (e.g. geoserver, geonetwork, etc.)' (#7) from francesco.mangiacrapa/infrastructure-as-code:main into main
Reviewed-on: #7
This commit is contained in:
commit
f430793796
|
@ -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",
|
||||
]
|
||||
}
|
|
@ -0,0 +1,124 @@
|
|||
# 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"
|
||||
}
|
||||
}
|
||||
|
||||
module "geo_service" {
|
||||
|
||||
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 = {
|
||||
geona = {
|
||||
name = "geoserver-geona",
|
||||
description = "Geoserver geona instance",
|
||||
flavor = "m1.xlarge",
|
||||
networks = ["d4s-dev-cloud-main", "postgresql-srv-net"],
|
||||
security_groups = ["default", "http and https from the load balancers"],
|
||||
block_device_uuid = "7ed6a2cd-2b07-482e-8ce4-f018dff16c89" #ubuntu_18_04.uuid of DEV
|
||||
vol_data_name = "geoserver-geona_data_volume",
|
||||
vol_data_size = "50"
|
||||
},
|
||||
esquiline = {
|
||||
name = "geoserver-esquiline",
|
||||
description = "Geoserver esquiline instance",
|
||||
flavor = "m2.small",
|
||||
networks = ["d4s-dev-cloud-main", "postgresql-srv-net"],
|
||||
security_groups = ["default", "http and https from the load balancers"],
|
||||
block_device_uuid = "7ed6a2cd-2b07-482e-8ce4-f018dff16c89" #ubuntu_18_04.uuid of DEV
|
||||
vol_data_name = "geoserver-esquiline_data_volume",
|
||||
vol_data_size = "20"
|
||||
},
|
||||
ariadne = {
|
||||
name = "geoserver-ariadne",
|
||||
description = "Geoserver ariadne instance",
|
||||
flavor = "m2.small",
|
||||
networks = ["d4s-dev-cloud-main", "postgresql-srv-net"],
|
||||
security_groups = ["default", "http and https from the load balancers"],
|
||||
block_device_uuid = "7ed6a2cd-2b07-482e-8ce4-f018dff16c89" #ubuntu_18_04.uuid of DEV
|
||||
vol_data_name = "geoserver-ariadne_data_volume",
|
||||
vol_data_size = "20"
|
||||
},
|
||||
grsf = {
|
||||
name = "geoserver-grsf",
|
||||
description = "Geoserver grsf instance",
|
||||
flavor = "m1.large",
|
||||
networks = ["d4s-dev-cloud-main", "postgresql-srv-net"],
|
||||
security_groups = ["default", "http and https from the load balancers"],
|
||||
block_device_uuid = "7ed6a2cd-2b07-482e-8ce4-f018dff16c89" #ubuntu_18_04.uuid of DEV
|
||||
vol_data_name = "geoserver-grsf_data_volume",
|
||||
vol_data_size = "40"
|
||||
},
|
||||
protectedareaimpactmaps = {
|
||||
name = "geoserver-protectedareaimpactmaps",
|
||||
description = "Geoserver protectedareaimpactmaps instance",
|
||||
flavor = "c1.large",
|
||||
networks = ["d4s-dev-cloud-main", "postgresql-srv-net"],
|
||||
security_groups = ["default", "http and https from the load balancers"],
|
||||
block_device_uuid = "7ed6a2cd-2b07-482e-8ce4-f018dff16c89" #ubuntu_18_04.uuid of DEV
|
||||
vol_data_name = "geoserver-protectedareaimpactmaps_data_volume",
|
||||
vol_data_size = "70"
|
||||
}
|
||||
sdi-lab = {
|
||||
name = "geoserver-sdi-lab",
|
||||
description = "Geoserver sdi-lab instance",
|
||||
flavor = "m1.large",
|
||||
networks = ["d4s-dev-cloud-main", "postgresql-srv-net"],
|
||||
security_groups = ["default", "http and https from the load balancers"],
|
||||
block_device_uuid = "7ed6a2cd-2b07-482e-8ce4-f018dff16c89" #ubuntu_18_04.uuid of DEV
|
||||
vol_data_name = "geoserver-sdi-lab_data_volume",
|
||||
vol_data_size = "100"
|
||||
}
|
||||
tunaatlas = {
|
||||
name = "geoserver-tunaatlas",
|
||||
description = "Geoserver tunaatlas instance",
|
||||
flavor = "m1.large",
|
||||
networks = ["d4s-dev-cloud-main", "postgresql-srv-net"],
|
||||
security_groups = ["default", "http and https from the load balancers"],
|
||||
block_device_uuid = "7ed6a2cd-2b07-482e-8ce4-f018dff16c89" #ubuntu_18_04.uuid of DEV
|
||||
vol_data_name = "geoserver-tunaatlas_data_volume",
|
||||
vol_data_size = "60"
|
||||
}
|
||||
wecafc-firms = {
|
||||
name = "geoserver-wecafc-firms",
|
||||
description = "Geoserver wecafc-firms instance",
|
||||
flavor = "m1.large",
|
||||
networks = ["d4s-dev-cloud-main", "postgresql-srv-net"],
|
||||
security_groups = ["default", "http and https from the load balancers"],
|
||||
block_device_uuid = "7ed6a2cd-2b07-482e-8ce4-f018dff16c89" #ubuntu_18_04.uuid of DEV
|
||||
vol_data_name = "geoserver-wecafc-firms_data_volume",
|
||||
vol_data_size = "40"
|
||||
}
|
||||
aquacultureatlas = {
|
||||
name = "geoserver-aquacultureatlas",
|
||||
description = "Geoserver aquacultureatlas instance",
|
||||
flavor = "m1.large",
|
||||
networks = ["d4s-dev-cloud-main", "postgresql-srv-net"],
|
||||
security_groups = ["default", "http and https from the load balancers"],
|
||||
block_device_uuid = "7ed6a2cd-2b07-482e-8ce4-f018dff16c89" #ubuntu_18_04.uuid of DEV
|
||||
vol_data_name = "geoserver-aquacultureatlas_data_volume",
|
||||
vol_data_size = "50"
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
}
|
|
@ -0,0 +1,3 @@
|
|||
provider "openstack" {
|
||||
cloud = "d4s-dev"
|
||||
}
|
|
@ -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",
|
||||
]
|
||||
}
|
|
@ -0,0 +1,49 @@
|
|||
module "ssh_settings" {
|
||||
source = "../../modules/ssh-key-ref"
|
||||
}
|
||||
|
||||
module "common_variables" {
|
||||
source = "../../modules/common_variables"
|
||||
}
|
||||
|
||||
# Geo_Service attached volume - used for 'external volume'
|
||||
resource "openstack_blockstorage_volume_v3" "geo_service_data_volume" {
|
||||
for_each = var.geo_service_instances_map
|
||||
name = each.value.vol_data_name
|
||||
size = each.value.vol_data_size
|
||||
}
|
||||
|
||||
# Geo_Service instance
|
||||
resource "openstack_compute_instance_v2" "geo_service" {
|
||||
for_each = var.geo_service_instances_map
|
||||
name = each.value.name
|
||||
availability_zone_hints = module.common_variables.availability_zone_no_gpu_name
|
||||
flavor_name = each.value.flavor
|
||||
key_pair = module.ssh_settings.ssh_key_name
|
||||
security_groups = each.value.security_groups
|
||||
block_device {
|
||||
uuid = each.value.block_device_uuid
|
||||
source_type = "image"
|
||||
volume_size = 10
|
||||
boot_index = 0
|
||||
destination_type = "volume"
|
||||
delete_on_termination = false
|
||||
}
|
||||
dynamic "network" {
|
||||
for_each = each.value.networks
|
||||
content {
|
||||
name = network.value
|
||||
}
|
||||
}
|
||||
user_data = file("${var.user_data_var_file.user_data_file}") #default is 18.04
|
||||
}
|
||||
|
||||
|
||||
# Attach the additional volume
|
||||
resource "openstack_compute_volume_attach_v2" "geo_service_data_attach_vol" {
|
||||
for_each = var.geo_service_instances_map
|
||||
instance_id = openstack_compute_instance_v2.geo_service[each.key].id
|
||||
volume_id = openstack_blockstorage_volume_v3.geo_service_data_volume[each.key].id
|
||||
device = var.geo_instance_basic_data.vol_data_device
|
||||
depends_on = [openstack_compute_instance_v2.geo_service]
|
||||
}
|
|
@ -0,0 +1,33 @@
|
|||
|
||||
#Default geoserver vol_data_device
|
||||
variable "geo_instance_basic_data" {
|
||||
type = map(string)
|
||||
default = {
|
||||
vol_data_device = "/dev/vdb"
|
||||
}
|
||||
}
|
||||
|
||||
variable "user_data_var_file" {
|
||||
type = map(string)
|
||||
default = {
|
||||
user_data_file = "../../openstack_vm_data_scripts/ubuntu1804.sh"
|
||||
}
|
||||
}
|
||||
|
||||
#Default geo_service_instances_map is EMPTY. Override it to create a proper geoserver plan
|
||||
variable "geo_service_instances_map" {
|
||||
type = map(object({
|
||||
name = string
|
||||
description = string
|
||||
flavor = string
|
||||
networks = list(string)
|
||||
security_groups = list(string)
|
||||
block_device_uuid = string
|
||||
vol_data_name = string
|
||||
vol_data_size = string
|
||||
}))
|
||||
default = {
|
||||
geoserver = { name = "", description = "", flavor = "", networks = [], security_groups = [], block_device_uuid = "", vol_data_name = "", vol_data_size = "" }
|
||||
}
|
||||
|
||||
}
|
|
@ -0,0 +1,13 @@
|
|||
output "smartgears_service_instances_map" {
|
||||
value = var.geo_service_instances_map
|
||||
}
|
||||
|
||||
output "geo_instance_basic_data" {
|
||||
value = var.geo_instance_basic_data
|
||||
}
|
||||
|
||||
output "user_data_var_file" {
|
||||
value = var.user_data_var_file
|
||||
}
|
||||
|
||||
|
|
@ -0,0 +1,11 @@
|
|||
# Define required providers
|
||||
terraform {
|
||||
required_version = ">= 0.14.0"
|
||||
required_providers {
|
||||
openstack = {
|
||||
source = "terraform-provider-openstack/openstack"
|
||||
version = "~> 1.53.0"
|
||||
}
|
||||
}
|
||||
}
|
||||
|
Loading…
Reference in New Issue