Compare commits

...

155 Commits
main ... main

Author SHA1 Message Date
Andrea Dell'Amico 756d335c25
escriptorium resources. 2024-11-22 13:34:08 +01:00
Andrea Dell'Amico e182c49175
Open Prometheus to the s2i2s network. 2024-11-20 19:01:19 +01:00
Antonio Calanducci 407746d005 Merge branch 'main' of code-repo.d4science.org:InfraScience/infrastructure-as-code 2024-11-20 09:53:23 +01:00
Antonio Calanducci de73270c39 Rename seadatanet to seadatanet_ts 2024-11-20 09:52:33 +01:00
Andrea Dell'Amico 815bc8fb24
See #28235. CKAN test resources. 2024-11-18 19:53:29 +01:00
Giancarlo Panichi 83d7d0f7c9 Added giancarlo.panichi key to ubuntu1804 script 2024-11-18 17:50:07 +01:00
Antonio Calanducci aa73e69ec7 Update beacon dataset share volumes' size 2024-11-15 17:54:13 +01:00
Andrea Dell'Amico 31699a8ca2
Resources for the CKAN legacy VM. 2024-11-14 18:04:24 +01:00
Andrea Dell'Amico b6e3efb344
Add support for Ubuntu 24.04 at GARR. 2024-11-14 18:03:57 +01:00
Andrea Dell'Amico 2a3e70cea2
Remove Roberto's key and add the GC's one. 2024-11-14 18:03:34 +01:00
Andrea Dell'Amico 2dccec18a1
Project basic data of the garr-na region. 2024-11-14 16:00:28 +01:00
Giancarlo Panichi 969edb7f06 Updated resources for storagehub in dev 2024-11-12 15:15:45 +01:00
Andrea Dell'Amico d1173e3731
New state for the swarm in preprod. 2024-11-08 12:54:03 +01:00
Giancarlo Panichi b1c546eb60 Added storagehub4 in production 2024-11-08 11:46:46 +01:00
Giancarlo Panichi a91cab9e0b Deleted geoserver-2 on dev 2024-11-08 11:18:07 +01:00
Andrea Dell'Amico f7f3449472
Another attempt at the OVN load balancer. 2024-11-08 10:03:24 +01:00
Giancarlo Panichi c4e540673e Destroyed some unprovisioned services,
to reclaim space for StorageHub2 in prod
2024-11-07 18:40:18 +01:00
Giancarlo Panichi 83b57ee8cd Added StorageHub3 in production 2024-11-07 17:51:30 +01:00
Andrea Dell'Amico 5c2854ef55
Swarm pre: manila volume for portainer. 2024-11-06 19:43:43 +01:00
Andrea Dell'Amico 439944a380
Docker swarm in preprod. 2024-11-06 17:59:22 +01:00
Antonio Calanducci c890ac9cf7 update volume size for beacon argo dataset 2024-11-04 17:38:07 +01:00
Giancarlo Panichi 3339ea62d3 Added geoportal in preprod 2024-10-31 17:40:18 +01:00
Giancarlo Panichi 7c4730c9ae Added geoportal in preprod 2024-10-31 17:30:06 +01:00
Giancarlo Panichi 6afc75b2c0 Added geonetwork1 2024-10-31 12:13:28 +01:00
Giancarlo Panichi 7455dc273c Added geoserver1 in preprod 2024-10-31 11:46:04 +01:00
Francesco Mangiacrapa cf8fa3996b Created the geoportal-service plan for Prepoduction infra
Commented version = "-> 1.53.0 or 1.54.0" in the modules 'instance_with{out}_data_volume"
2024-10-22 15:07:58 +02:00
Andrea Dell'Amico cc9b584779
Orientdb: open the web interface to the internal network. 2024-10-11 16:58:56 +02:00
Francesco Mangiacrapa c0344587f5 Updated some comments 2024-10-10 17:16:08 +02:00
Francesco Mangiacrapa c95b326578 Updated variable name 2024-10-10 16:46:07 +02:00
Francesco Mangiacrapa faf9658f26 Created TF module "postgres"
Created TF project "ckan-catalogue-engines"
see #28235
2024-10-10 16:37:19 +02:00
Luca Frosini d79da0e5cd Added smart-executor state 2024-10-09 11:42:29 +02:00
Luca Frosini 10afd8d69c Added resource-registry state 2024-10-09 11:23:52 +02:00
Andrea Dell'Amico e57d2f0854
Configure cassandra debugging in preprod. 2024-10-07 15:58:39 +02:00
Andrea Dell'Amico 2013c4db19
Add a security rule to enable debugging via jump proxy. 2024-10-07 15:58:39 +02:00
Giancarlo Panichi c41dc6949d Added storagehub-3 in pre 2024-10-07 15:37:20 +02:00
Giancarlo Panichi f2c156e260 Added storagehub-3 in pre 2024-10-07 15:27:12 +02:00
Giancarlo Panichi 13f65d464a Added storagehub-4 2024-10-07 12:11:58 +02:00
Luca Frosini 87887cca2e Created OrientDB Terraform plan and terraformed VMs 2024-10-03 16:50:40 +02:00
Luca Frosini 48ffb45756 Add state of provisioned gCat VMs 2024-10-03 16:49:41 +02:00
Antonio Calanducci 0149137e82 Update emodnet physics hostname 2024-09-23 15:32:23 +02:00
Antonio Calanducci f9cb5ccc1a Add state after emodnet resource creation 2024-09-23 12:16:17 +02:00
Antonio Calanducci 7987219fa5 Add DNS record for Emodnet VM 2024-09-23 10:35:20 +02:00
Antonio Calanducci 954c2e2229 EMODNet VM creation 2024-09-20 08:58:44 +02:00
Giancarlo Panichi 2d70c409f9 Added geonetwork-recofi-rdb-pilot 2024-09-12 10:30:24 +02:00
Giancarlo Panichi b51677c0b7 Added geoserver-recofi-rdb-pilot 2024-09-11 17:54:35 +02:00
Giancarlo Panichi 0d90a25d48 Added registry recordset to dns 2024-07-30 12:33:45 +02:00
Giancarlo Panichi 9e6891733c Aggiunto icproxy in dev 2024-07-29 14:29:46 +02:00
Giancarlo Panichi 6dc65018c2 Added geoserver-2 2024-07-26 11:29:31 +02:00
Giancarlo Panichi 43418c2a0c Added geoserver-2 with Ubuntu 24.04 2024-07-26 11:26:31 +02:00
Giancarlo Panichi d693a68dad Decommission storagehub-2204-1 2024-07-24 16:16:03 +02:00
Andrea Dell'Amico 73161f2071
New state. 2024-07-22 11:14:38 +02:00
Giancarlo Panichi a494d283f9 Added storagehub-3 on Ubuntu 24.04 2024-07-19 17:45:49 +02:00
Marco Procaccini 75d73502d4 harbor tfstate aggiornato dopo plan e apply 2024-07-19 11:35:25 +02:00
Giancarlo Panichi e8bafeeaac Added storagehub-2204-1 on dev 2024-07-18 12:02:07 +02:00
Andrea Dell'Amico eeb703d8ae
harbor: security that allows postgresql connections. 2024-07-17 12:25:42 +02:00
Andrea Dell'Amico 7deabd2633
prod basic infrastructure: egress security group to reach postgresql. 2024-07-17 12:25:11 +02:00
Andrea Dell'Amico 4980f0ca33
Fix a typo. 2024-07-16 16:51:34 +02:00
Andrea Dell'Amico b5e666e8e3
Mongodb: add a swap volume. 2024-07-12 18:27:49 +02:00
Marco Procaccini c38b2b3b29 vm powerdns creata. Bug fix: udp port name 2024-07-11 14:06:55 +02:00
Marco Procaccini 455790e15b bug fix: rimosso keycloak 2024-07-11 12:08:28 +02:00
Marco Procaccini 14d713c6fd bug fix porta https 2024-07-11 11:57:05 +02:00
Marco Procaccini 63e1478d5b Merge branch 'main' of code-repo.d4science.org:InfraScience/infrastructure-as-code 2024-07-11 11:54:41 +02:00
Marco Procaccini 211198e2ee aggiunti security groups http e https su porta 80. Bug fix protocol upd security group 2024-07-11 11:54:35 +02:00
Antonio Calanducci 6cabc5631f Merge branch 'main' of code-repo.d4science.org:InfraScience/infrastructure-as-code 2024-07-11 11:46:15 +02:00
Antonio Calanducci e2ef4da000 add NFS share for beacon argo, cora_ts, cora_pr, seadatanet instances 2024-07-11 11:46:04 +02:00
Marco Procaccini 5f93ed0af2 first draft powerdns terraform plan 2024-07-11 11:35:14 +02:00
Marco Procaccini e51fe2f5e4 terraform state aggiornato 2024-07-10 12:35:13 +02:00
Andrea Dell'Amico 7fc04aa770
Harbor: fix the network configuration. 2024-07-10 11:59:45 +02:00
Marco Procaccini 15de6381bd aggiunto il terraform state 2024-07-10 11:27:23 +02:00
Marco Procaccini 573d156a1a Merge branch 'main' of code-repo.d4science.org:InfraScience/infrastructure-as-code 2024-07-09 19:58:44 +02:00
Marco Procaccini 7b8e09796d macchina harbor correttamente creata con anche record dns 2024-07-09 19:58:21 +02:00
Giancarlo Panichi b95dfefe80 Added public db 2024-07-09 18:07:58 +02:00
Giancarlo Panichi 875de807a1 Added public db 2024-07-09 17:00:52 +02:00
Marco Procaccini 747950287b network defined in the resource instance 2024-07-09 16:55:28 +02:00
Giancarlo Panichi 1e2b3b3df0 Added icproxy services 2024-07-09 12:05:14 +02:00
Andrea Dell'Amico 12f8cfd540
Create the object store bucket. 2024-07-08 19:10:20 +02:00
Andrea Dell'Amico 617fc043b9
harbor VM: do not choose the availability zone. 2024-07-08 19:04:01 +02:00
Andrea Dell'Amico bdd7def962
harbor: fix the networks and the security groups. 2024-07-08 19:02:36 +02:00
Andrea Dell'Amico 0f3657dd57
Add the postgresql network into the state output. 2024-07-08 18:56:56 +02:00
Marco Procaccini a6f396f86c primo draft harbor terraform 2024-07-08 17:18:46 +02:00
Antonio Calanducci 055837555d Merge branch 'main' of code-repo.d4science.org:InfraScience/infrastructure-as-code 2024-07-03 11:32:04 +02:00
Antonio Calanducci 92d648a782 add manila shares for 3 dataset of bluecloud beacon 2024-07-03 11:31:27 +02:00
Andrea Dell'Amico 52df91d983
Try to add ICMP to the load balancer. 2024-07-02 19:43:55 +02:00
Andrea Dell'Amico dbdee08c44
K8s resources at garr-ct1. 2024-07-02 17:56:51 +02:00
Andrea Dell'Amico e28b7ed747
See #27446. K8S VMs at garr-ct1. 2024-06-28 19:29:05 +02:00
Andrea Dell'Amico 380a173632
Fix the mongodb state. 2024-06-27 18:52:34 +02:00
Andrea Dell'Amico 7e16e70be9
Fixes #27671. Increase the size of storagehub. 2024-06-26 19:13:11 +02:00
Giancarlo Panichi 78d96bcae1 Added geoserver-itineris-downstream 2024-06-25 14:37:43 +02:00
Giancarlo Panichi 33db28370b Added geoserver itineris downstream 2024-06-25 12:09:32 +02:00
Giancarlo Panichi 1d125ce504 Dismissed geonetwork iotcss3 and geonetwork fisherieatlas
no longer necessary
2024-06-21 16:18:11 +02:00
Andrea Dell'Amico de011f40d5
Altro volume per l'istanza scilake di test. 2024-06-20 18:31:12 +02:00
Giancarlo Panichi d04758fea7 Added geonetwork-next 2024-06-20 15:57:59 +02:00
Giancarlo Panichi 04bf96d957 Destroyed geonetwork-prod 2024-06-20 15:43:44 +02:00
Giancarlo Panichi 2355136f59 Added geonetwork-next 2024-06-20 15:31:06 +02:00
Giancarlo Panichi 813097bde3 Added geoserver-next 2024-06-20 15:23:06 +02:00
Giancarlo Panichi 59a7a2d2df Added geoserver-next 2024-06-20 15:18:15 +02:00
Alfredo Oliviero 055fa0be10 state update for liferay lr61-01 2024-06-19 11:52:11 +02:00
Andrea Dell'Amico c1d2408ae8
Public IP address for the static web VM. 2024-06-19 11:50:44 +02:00
Andrea Dell'Amico e164eacf0d
More RAM for liferay in production. 2024-06-13 17:55:47 +02:00
Giancarlo Panichi ecdee82253 Created geoserver-itineris-ev 2024-06-12 15:09:25 +02:00
Andrea Dell'Amico 7356dd8a50
Fixes #27569. Add the main network interface as a port. 2024-06-07 14:59:41 +02:00
Andrea Dell'Amico c64e3be555
Added some outputs to use as data source. 2024-06-07 14:58:35 +02:00
Andrea Dell'Amico 2cd86e3b7f
Accounting datastudio with floating IP address. 2024-06-06 20:01:56 +02:00
Andrea Dell'Amico 5cef75cd2a
The plugin version changed. 2024-06-06 18:24:39 +02:00
Andrea Dell'Amico 703ef4da39
Resize the postgresql instances. 2024-06-06 18:10:59 +02:00
Andrea Dell'Amico 9ec3095aab
Ignore the .terraform.lock.hcl files. 2024-06-06 18:10:16 +02:00
Andrea Dell'Amico e91c8419b4
Keycloak resources in production. 2024-05-31 17:57:50 +02:00
Andrea Dell'Amico 3497ebb3c9
Octavia: increase the client and server data timeout. 2024-05-31 17:07:02 +02:00
Andrea Dell'Amico 6180c1f9db
Update of the keycloak-pre state. 2024-05-29 12:24:56 +02:00
Andrea Dell'Amico a28657c300
Keycloak in preproduction. 2024-05-28 18:56:24 +02:00
Andrea Dell'Amico c3ef9453ea
Keycloak: add a nfs share for backward compatibility. 2024-05-28 18:55:36 +02:00
Giancarlo Panichi 129878d111 Updated accounting dashboard db 2024-05-28 16:30:27 +02:00
Giancarlo Panichi 812b128dbd Added accounting-dashboard-db 2024-05-28 10:39:46 +02:00
Andrea Dell'Amico 2bd632462d
Fix the scilake intelcomp volumes. 2024-05-22 01:07:48 +02:00
Giancarlo Panichi 47a3844d57 Added geoserver for Itineris Clima 2024-05-21 18:20:16 +02:00
Andrea Dell'Amico bc1d5e5281
manila shares for scilake intelcomp. 2024-05-21 13:00:23 +02:00
Andrea Dell'Amico 4874c96c02
Remove the bluecloud-reiner-webodv, it was only a example. 2024-05-16 13:41:53 +02:00
Antonio Calanducci e2305629fd Add NFS share for FAIR-EASE webodv exporer (Reiner) 2024-05-16 13:19:51 +02:00
Andrea Dell'Amico 4c2175f26d
manila shares example for the new webodv. 2024-05-16 11:38:58 +02:00
Andrea Dell'Amico 947d0e68c1
Fix the paths of the modules in the manila shares. 2024-05-16 11:38:36 +02:00
Andrea Dell'Amico 28919e4d7f
Move the current manila shares into a subdirectory. 2024-05-16 11:38:05 +02:00
Andrea Dell'Amico a1b21fb06d
DNS record for the shinyproxy dev instance. 2024-05-15 18:22:33 +02:00
Giancarlo Panichi 2b598fbef4 Added aquacultureatlas geonetwork 2024-05-08 15:04:02 +02:00
Andrea Dell'Amico 66812fb3c2
New state for mongodb. 2024-05-02 19:31:53 +02:00
Andrea Dell'Amico 2b76a1b38e
Fix a state inconsistency. 2024-05-02 18:26:01 +02:00
Andrea Dell'Amico 9229d112ab
Add the output. 2024-05-02 18:26:01 +02:00
Andrea Dell'Amico c7d923ee90
d4science production: add the prometheus public IP address to the state. 2024-05-02 18:26:01 +02:00
Giancarlo Panichi 6dfdf42e30 Added static-web service 2024-04-29 16:54:58 +02:00
Giancarlo Panichi 13f5384652 Created static-web service 2024-04-29 16:31:51 +02:00
Giancarlo Panichi 30a112f8db Removed tunaatlas geoserver 2024-04-24 15:04:40 +02:00
Giancarlo Panichi a1f121aa35 Removed geonetwork for tunaatlas 2024-04-24 14:59:17 +02:00
Andrea Dell'Amico d50bff95bc
See #26245. security group for the port in the timescaledb network. 2024-04-22 15:22:41 +02:00
Andrea Dell'Amico d253ca51ee
dnet-scilake resources. 2024-04-20 21:48:08 +02:00
Andrea Dell'Amico f1e3fb26ee
More garr-ct1 environment. 2024-04-20 21:47:40 +02:00
Andrea Dell'Amico ae79f34b92
Definitions common to the GARR resources. 2024-04-20 21:47:09 +02:00
Andrea Dell'Amico d94ba84149
Fix the indentation. 2024-04-20 16:00:48 +02:00
Andrea Dell'Amico 0e8f6d3653
Add more data to the garr-ct1 setup. 2024-04-20 15:45:21 +02:00
Andrea Dell'Amico aafde5a308
Add the garr-ct1 basic configuration. 2024-04-20 15:33:50 +02:00
Giancarlo Panichi deae3baa38 Added access service in production 2024-04-19 14:08:10 +02:00
Andrea Dell'Amico 4c381a5059
Manila share for the itineris isotope swarm app. 2024-04-18 16:16:10 +02:00
Andrea Dell'Amico 4049730c23
Increase the liferay share. 2024-04-17 19:11:45 +02:00
Andrea Dell'Amico b4e18cdef4
Manila volume for the D4Science PgAdmin service in production. 2024-04-17 18:12:39 +02:00
Giancarlo Panichi 105b840628 Dismissed Ariadne geoserver 2024-04-11 11:12:06 +02:00
Giancarlo Panichi dc6910d711 Dismissed Ariadne geonetwork 2024-04-11 10:55:58 +02:00
Giancarlo Panichi 79ab1c58d3 Added geonetwork Gaia Blu Lab 2024-04-09 15:56:35 +02:00
Giancarlo Panichi bca283b4df Added geoserver itineris critical zone 2024-04-05 17:32:24 +02:00
Andrea Dell'Amico d781591a82
Add the open-asfa-test NFS shares. 2024-03-28 18:30:05 +01:00
Andrea Dell'Amico 5b2b419cb0
NFS share for the itineris pgadmin. 2024-03-28 18:29:00 +01:00
Giancarlo Panichi a3066e0e53 Added geonetwork-itineris
Removed geonetwork-itineris-carbon
2024-03-26 12:59:32 +01:00
Andrea Dell'Amico 3c04dace24
Manila shares for the dev CCP. 2024-03-25 16:45:15 +01:00
Andrea Dell'Amico c23c8c3f74
Fix the Keycload module, and configure keycloak in dev. 2024-03-25 16:45:15 +01:00
Antonio Calanducci d78bedb0f5 Add CNAME records in docker swarm stack for dev using terraform import 2024-03-22 17:39:43 +01:00
Antonio Calanducci de6291936b Add workspace to add DNS records for docker swarm stacks in dev env 2024-03-22 15:46:46 +01:00
Andrea Dell'Amico dcf1677e3a
liferay test endpoint. 2024-03-20 17:30:39 +01:00
Andrea Dell'Amico 8b71341eef
GRSF DNS recordset in preprod. 2024-03-20 17:29:59 +01:00
194 changed files with 106652 additions and 3564 deletions

1
.gitignore vendored
View File

@ -1,6 +1,7 @@
# ---> Terraform
# Local .terraform directories
**/.terraform/*
**/.terraform.lock.hcl
# .tfstate files
# *.tfstate

View File

@ -0,0 +1,103 @@
# Define required providers
terraform {
required_version = ">= 0.14.0"
required_providers {
openstack = {
source = "terraform-provider-openstack/openstack"
version = ">= 1.54.0"
}
}
}
data "terraform_remote_state" "privnet_dns_router" {
backend = "local"
config = {
path = "../project-setup/terraform.tfstate"
}
}
#
# Uses common_variables as module
#
module "common_variables" {
source = "../../modules/common_variables"
}
# Module used
module "ssh_settings" {
source = "../../modules/ssh-key-ref"
}
#
# Creates the server group "ckan-catalogue", NB but I'm not using it!!!!
#
resource "openstack_compute_servergroup_v2" "ckan-catalogue" {
name = "ckan-catalogue"
policies = [module.common_variables.policy_list.soft_anti_affinity]
}
#
# Postgres instances via "postgres" module
#
module "instance_postgres_via_module" {
source = "../../modules/postgres"
# Postgres networking configuration.
# NB. use this configuration by settings properly all the key fields
# postgres_networking_data = {
# description = "Data for the PostgreSQL server, including network CIDR and server IP"
# networking_security_group_name = "my network security name"
# network_cidr = "192.168.0.0/22"
# server_ip = "192.168.0.5"
# network_name = "the_network_name"
# server_cidr = "192.168.0.5/22"
# port_range_min = 5432
# port_range_max = 5432
# }
# Postgres instance
postgres_instance_data = {
postgres-ckan-dev = {
name = "postgres-ckan-dev",
description = "The Postgres ckan-dev instance",
flavor = module.common_variables.flavor_list.m1_large,
networks = [data.terraform_remote_state.privnet_dns_router.outputs.main_private_network.name, module.common_variables.networks_list.shared_postgresql],
security_groups = [data.terraform_remote_state.privnet_dns_router.outputs.default_security_group_name, data.terraform_remote_state.privnet_dns_router.outputs.security_group_list.http_and_https_from_the_load_balancers],
server_groups_ids = [],
image_ref = module.common_variables.ubuntu_2204,
volume = {
name = "postgres-ckan-dev_data_volume",
size = "20",
device = "/dev/vdb",
}
}
}
}
#
# Solr instances via "instance_with_data_volume" module
#
module "instance_with_data_volume" {
source = "../../modules/instance_with_data_volume"
instances_with_data_volume_map = {
solr-ckan-dev = {
name = "solr-ckan-dev",
description = "The Solr ckan-dev instance",
flavor = module.common_variables.flavor_list.m1_large,
networks = [data.terraform_remote_state.privnet_dns_router.outputs.main_private_network.name],
security_groups = [data.terraform_remote_state.privnet_dns_router.outputs.default_security_group_name, data.terraform_remote_state.privnet_dns_router.outputs.security_group_list.http_and_https_from_the_load_balancers],
server_groups_ids = [],
image_ref = module.common_variables.ubuntu_2204,
volume = {
name = "solr-ckan-dev_data_volume",
size = "20",
device = "/dev/vdb"
}
}
}
}

View File

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

View File

@ -0,0 +1,6 @@
# Default instances without data volume is EMPTY. Override it to create a proper instance plan
variable "ckan_instances" {
type = list(string)
default = ["ckan-dev"]
}

View File

@ -0,0 +1,76 @@
# 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"
}
}
#
# Uses common_variables as module
#
module "common_variables" {
source = "../../modules/common_variables"
}
locals {
cname_target = "swarm-lb.${data.terraform_remote_state.privnet_dns_router.outputs.dns_zone.zone_name}"
}
#
# We only manage the DNS records, for the services behind HAProxy
#
module "dns_records_create" {
source = "../../modules/dns_resources"
dns_resources_map = {
vremodeler-dev = {
zone_id = data.terraform_remote_state.privnet_dns_router.outputs.dns_zone_id
name = join(".", ["vremodeler", data.terraform_remote_state.privnet_dns_router.outputs.dns_zone.zone_name])
description = "Vremodeler dev"
ttl = 8600
type = "CNAME"
records = [local.cname_target]
}
netme-sobigdata = {
name = join(".", ["netme-sobigdata", data.terraform_remote_state.privnet_dns_router.outputs.dns_zone.zone_name])
zone_id = data.terraform_remote_state.privnet_dns_router.outputs.dns_zone_id
records = [local.cname_target]
type = "CNAME"
description = "SoBigData NetMe service"
ttl = 8600
}
ontotagme-sobigdata = {
zone_id = data.terraform_remote_state.privnet_dns_router.outputs.dns_zone_id
name = join(".", ["ontotagme-sobigdata", data.terraform_remote_state.privnet_dns_router.outputs.dns_zone.zone_name])
description = "SoBigData OntoTagme service"
ttl = 8600
type = "CNAME"
records = [local.cname_target]
}
shinyproxy-dev = {
zone_id = data.terraform_remote_state.privnet_dns_router.outputs.dns_zone_id
name = join(".", ["shinyproxy", data.terraform_remote_state.privnet_dns_router.outputs.dns_zone.zone_name])
description = "Shinyproxy DEV instance"
ttl = 8600
type = "CNAME"
records = [local.cname_target]
}
}
}

View File

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

View File

@ -0,0 +1,507 @@
{
"version": 4,
"terraform_version": "1.7.5",
"serial": 10,
"lineage": "ab6b1d6a-298d-8238-5cb5-61ea6b858172",
"outputs": {},
"resources": [
{
"mode": "data",
"type": "terraform_remote_state",
"name": "privnet_dns_router",
"provider": "provider[\"terraform.io/builtin/terraform\"]",
"instances": [
{
"schema_version": 0,
"attributes": {
"backend": "local",
"config": {
"value": {
"path": "../project-setup/terraform.tfstate"
},
"type": [
"object",
{
"path": "string"
}
]
},
"defaults": null,
"outputs": {
"value": {
"almalinux_9": {
"name": "AlmaLinux-9.0-20220718",
"uuid": "541650fc-dd19-4f38-bb1d-7333ed9dd688"
},
"availability_zone_no_gpu_name": "cnr-isti-nova-a",
"availability_zone_with_gpu_name": "cnr-isti-nova-gpu-a",
"availability_zones_names": {
"availability_zone_no_gpu": "cnr-isti-nova-a",
"availability_zone_with_gpu": "cnr-isti-nova-gpu-a"
},
"basic_services_ip": {
"ca": "10.1.29.247",
"ca_cidr": "10.1.29.247/32",
"haproxy_l7_1": "10.1.28.50",
"haproxy_l7_1_cidr": "10.1.28.50/32",
"haproxy_l7_2": "10.1.30.241",
"haproxy_l7_2_cidr": "10.1.30.241/32",
"octavia_main": "10.1.28.227",
"octavia_main_cidr": "10.1.28.227/32",
"prometheus": "10.1.30.129",
"prometheus_cidr": "10.1.30.129/32",
"ssh_jump": "10.1.29.164",
"ssh_jump_cidr": "10.1.29.164/32"
},
"centos_7": {
"name": "CentOS-7",
"uuid": "f0187a99-64f6-462a-ab5f-ef52fe62f2ca"
},
"default_security_group_name": "default",
"dns_zone": {
"description": "DNS primary zone for the d4s-dev-cloud project",
"email": "postmaster@isti.cnr.it",
"ttl": "8600",
"zone_name": "cloud-dev.d4science.org."
},
"dns_zone_id": "cbae638a-9d99-44aa-946c-0f5ffb7fc488",
"el7_data_file": "../../openstack_vm_data_scripts/el7.sh",
"external_gateway_ip": [
{
"ip_address": "146.48.31.109",
"subnet_id": "57f87509-4016-46fb-b8c3-25fca7f72ccb"
}
],
"external_network": {
"id": "1d2ff137-6ff7-4017-be2b-0d6c4af2353b",
"name": "external-network"
},
"external_network_id": "1d2ff137-6ff7-4017-be2b-0d6c4af2353b",
"external_router": {
"description": "D4Science DEV main router",
"id": "2ae28c5f-036b-45db-bc9f-5bab8fa3e914",
"name": "d4s-dev-cloud-external-router"
},
"flavor_list": {
"c1_large": "c1.large",
"c1_medium": "c1.medium",
"c1_small": "c1.small",
"c2_large": "c2.large",
"m1_large": "m1.large",
"m1_medium": "m1.medium",
"m1_xlarge": "m1.xlarge",
"m1_xxl": "m1.xxl",
"m2_large": "m2.large",
"m2_medium": "m2.medium",
"m2_small": "m2.small",
"m3_large": "m3.large"
},
"floating_ip_pools": {
"main_public_ip_pool": "external-network"
},
"haproxy_l7_data": {
"flavor": "m1.medium",
"haproxy_1": "haproxy-l7-1",
"haproxy_2": "haproxy-l7-2",
"name": "main-haproxy-l7",
"vm_count": "2"
},
"internal_ca_data": {
"flavor": "m1.small",
"name": "ca"
},
"main_haproxy_l7_ip": [
"10.1.28.50",
"10.1.30.241"
],
"main_private_network": {
"description": "D4Science DEV private network (use this as the main network)",
"name": "d4s-dev-cloud-main"
},
"main_private_network_id": "e0af5eba-f24a-4d0d-8184-bc654b980c4a",
"main_private_subnet": {
"allocation_end": "10.1.31.254",
"allocation_start": "10.1.28.30",
"cidr": "10.1.28.0/22",
"description": "D4Science DEV main private subnet",
"gateway_ip": "10.1.28.1",
"name": "d4s-dev-cloud-sub"
},
"main_region": "isti_area_pi_1",
"main_subnet_network_id": "2aa977f2-80b4-447c-a6b0-dfa06bf68751",
"mtu_size": 8942,
"networks_list": {
"cassandra": "cassandra-net",
"orientdb": "orientdb-net",
"orientdb_se": "orientdb-se-net",
"shared_postgresql": "postgresql-srv-net",
"swarm": "swarm-nfs-net",
"timescaledb": "timescaledb-net"
},
"networks_with_d4s_services": {
"garr_ct1_net": "90.147.166.0/23",
"garr_na_net": "90.147.152.0/24",
"garr_pa1_net": "90.147.188.0/23",
"infrascience_net": "146.48.122.0/23",
"isti_net": "146.48.80.0/21",
"s2i2s_net": "146.48.28.0/22"
},
"nfs_share_no_ingress_secgroup_id": "5887da8d-e362-4509-93ac-8a70bf8baef9",
"octavia_information": {
"main_lb_description": "Main L4 load balancer for the D4Science DEV",
"main_lb_hostname": "main-lb",
"main_lb_name": "lb-dev-l4",
"octavia_flavor": "octavia_amphora-mvcpu-ha",
"octavia_flavor_id": "394988b5-6603-4a1e-a939-8e177c6681c7"
},
"os_project_data": {
"id": "e8f8ca72f30648a8b389b4e745ac83a9"
},
"policy_list": {
"affinity": "affinity",
"anti_affinity": "anti-affinity",
"soft_affinity": "soft-affinity",
"soft_anti_affinity": "soft-anti-affinity"
},
"prometheus_server_data": {
"flavor": "m1.medium",
"name": "prometheus",
"public_grafana_server_cidr": "146.48.28.103/32",
"vol_data_device": "/dev/vdb",
"vol_data_name": "prometheus-data",
"vol_data_size": "100"
},
"resolvers_ip": [
"146.48.29.97",
"146.48.29.98",
"146.48.29.99"
],
"resource_registry_addresses": {},
"security_group_list": {
"acaland": "acaland's dev machine",
"access_to_orientdb": "access_to_orientdb",
"access_to_orientdb_se": "access_to_orientdb_se",
"access_to_the_timescaledb_service": "access_to_the_timescaledb_service",
"cassandra": "Cassandra",
"dataminer-publish": "dataminer-publish",
"debugging_from_jump_node": "debugging_from_jump_node",
"default": "default",
"docker_swarm": "Docker Swarm",
"docker_swarm_NFS": "Docker Swarm NFS",
"haproxy": "traffic_from_main_lb_to_haproxy_l7",
"http_and_https_from_the_load_balancers": "traffic_from_the_main_load_balancers",
"limited_HTTPS_access": "restricted_web_service",
"limited_SSH_access": "Limited SSH access",
"mongo": "mongo",
"nfs_share_no_ingress": "nfs_share_no_ingress",
"orientdb_internal_docker_traffic": "orientdb_internal_docker_traffic",
"postgreSQL": "PostgreSQL service",
"public_HTTPS": "Public HTTPS"
},
"shared_postgresql_server_data": {
"allocation_pool_end": "192.168.3.254",
"allocation_pool_start": "192.168.0.100",
"flavor": "m1.medium",
"name": "shared-postgresql-server",
"network_cidr": "192.168.0.0/22",
"network_description": "Network used to communicate with the shared postgresql service",
"network_name": "postgresql-srv-net",
"server_cidr": "192.168.0.5/22",
"server_ip": "192.168.0.5",
"vol_data_device": "/dev/vdb",
"vol_data_name": "shared-postgresql-data",
"vol_data_size": "100"
},
"smartexecutor_addresses": {},
"ssh_jump_proxy": {
"flavor": "m2.small",
"name": "ssh-jump-proxy"
},
"ssh_sources": {
"d4s_vpn_1_cidr": "146.48.122.27/32",
"d4s_vpn_2_cidr": "146.48.122.49/32",
"infrascience_net_cidr": "146.48.122.0/23",
"s2i2s_vpn_1_cidr": "146.48.28.10/32",
"s2i2s_vpn_2_cidr": "146.48.28.11/32",
"shell_d4s_cidr": "146.48.122.95/32"
},
"storage_nfs_network_id": "5f4023cc-4016-404c-94e5-86220095fbaf",
"storage_nfs_subnet_id": "6ff0f9e8-0e74-4cc3-a268-7ed4af435696",
"ubuntu1804_data_file": "../../openstack_vm_data_scripts/ubuntu1804.sh",
"ubuntu2204_data_file": "../../openstack_vm_data_scripts/ubuntu2204.sh",
"ubuntu_1804": {
"name": "Ubuntu-Bionic-18.04",
"user_data_file": "../../openstack_vm_data_scripts/ubuntu1804.sh",
"uuid": "7ed6a2cd-2b07-482e-8ce4-f018dff16c89"
},
"ubuntu_2204": {
"name": "Ubuntu-Jammy-22.04",
"user_data_file": "../../openstack_vm_data_scripts/ubuntu2204.sh",
"uuid": "54768889-8556-4be4-a2eb-82a4d9b34627"
}
},
"type": [
"object",
{
"almalinux_9": [
"map",
"string"
],
"availability_zone_no_gpu_name": "string",
"availability_zone_with_gpu_name": "string",
"availability_zones_names": [
"map",
"string"
],
"basic_services_ip": [
"map",
"string"
],
"centos_7": [
"map",
"string"
],
"default_security_group_name": "string",
"dns_zone": [
"map",
"string"
],
"dns_zone_id": "string",
"el7_data_file": "string",
"external_gateway_ip": [
"list",
[
"object",
{
"ip_address": "string",
"subnet_id": "string"
}
]
],
"external_network": [
"map",
"string"
],
"external_network_id": "string",
"external_router": [
"map",
"string"
],
"flavor_list": [
"map",
"string"
],
"floating_ip_pools": [
"map",
"string"
],
"haproxy_l7_data": [
"map",
"string"
],
"internal_ca_data": [
"map",
"string"
],
"main_haproxy_l7_ip": [
"list",
"string"
],
"main_private_network": [
"map",
"string"
],
"main_private_network_id": "string",
"main_private_subnet": [
"map",
"string"
],
"main_region": "string",
"main_subnet_network_id": "string",
"mtu_size": "number",
"networks_list": [
"map",
"string"
],
"networks_with_d4s_services": [
"map",
"string"
],
"nfs_share_no_ingress_secgroup_id": "string",
"octavia_information": [
"map",
"string"
],
"os_project_data": [
"map",
"string"
],
"policy_list": [
"map",
"string"
],
"prometheus_server_data": [
"map",
"string"
],
"resolvers_ip": [
"list",
"string"
],
"resource_registry_addresses": [
"map",
"string"
],
"security_group_list": [
"map",
"string"
],
"shared_postgresql_server_data": [
"map",
"string"
],
"smartexecutor_addresses": [
"map",
"string"
],
"ssh_jump_proxy": [
"map",
"string"
],
"ssh_sources": [
"map",
"string"
],
"storage_nfs_network_id": "string",
"storage_nfs_subnet_id": "string",
"ubuntu1804_data_file": "string",
"ubuntu2204_data_file": "string",
"ubuntu_1804": [
"map",
"string"
],
"ubuntu_2204": [
"map",
"string"
]
}
]
},
"workspace": null
},
"sensitive_attributes": []
}
]
},
{
"module": "module.dns_records_create",
"mode": "managed",
"type": "openstack_dns_recordset_v2",
"name": "add_dns_recordset",
"provider": "provider[\"registry.terraform.io/terraform-provider-openstack/openstack\"]",
"instances": [
{
"index_key": "netme-sobigdata",
"schema_version": 0,
"attributes": {
"description": "SoBigData NetMe service",
"disable_status_check": false,
"id": "cbae638a-9d99-44aa-946c-0f5ffb7fc488/11ec2f93-2424-40aa-af83-492572e2c280",
"name": "netme-sobigdata.cloud-dev.d4science.org.",
"project_id": "e8f8ca72f30648a8b389b4e745ac83a9",
"records": [
"swarm-lb.cloud-dev.d4science.org."
],
"region": "isti_area_pi_1",
"timeouts": null,
"ttl": 8600,
"type": "CNAME",
"value_specs": null,
"zone_id": "cbae638a-9d99-44aa-946c-0f5ffb7fc488"
},
"sensitive_attributes": [],
"private": "eyJlMmJmYjczMC1lY2FhLTExZTYtOGY4OC0zNDM2M2JjN2M0YzAiOnsiY3JlYXRlIjo2MDAwMDAwMDAwMDAsImRlbGV0ZSI6NjAwMDAwMDAwMDAwLCJ1cGRhdGUiOjYwMDAwMDAwMDAwMH19",
"dependencies": [
"data.terraform_remote_state.privnet_dns_router"
]
},
{
"index_key": "ontotagme-sobigdata",
"schema_version": 0,
"attributes": {
"description": "SoBigData OntoTagme service",
"disable_status_check": false,
"id": "cbae638a-9d99-44aa-946c-0f5ffb7fc488/4a2411a1-638f-49c2-8c8b-f29d4bc5aba9",
"name": "ontotagme-sobigdata.cloud-dev.d4science.org.",
"project_id": "e8f8ca72f30648a8b389b4e745ac83a9",
"records": [
"swarm-lb.cloud-dev.d4science.org."
],
"region": "isti_area_pi_1",
"timeouts": null,
"ttl": 8600,
"type": "CNAME",
"value_specs": null,
"zone_id": "cbae638a-9d99-44aa-946c-0f5ffb7fc488"
},
"sensitive_attributes": [],
"private": "eyJlMmJmYjczMC1lY2FhLTExZTYtOGY4OC0zNDM2M2JjN2M0YzAiOnsiY3JlYXRlIjo2MDAwMDAwMDAwMDAsImRlbGV0ZSI6NjAwMDAwMDAwMDAwLCJ1cGRhdGUiOjYwMDAwMDAwMDAwMH19",
"dependencies": [
"data.terraform_remote_state.privnet_dns_router"
]
},
{
"index_key": "shinyproxy-dev",
"schema_version": 0,
"attributes": {
"description": "Shinyproxy DEV instance",
"disable_status_check": false,
"id": "cbae638a-9d99-44aa-946c-0f5ffb7fc488/ddc4bca3-bb9c-44db-bac3-dbddae71a3a3",
"name": "shinyproxy.cloud-dev.d4science.org.",
"project_id": "e8f8ca72f30648a8b389b4e745ac83a9",
"records": [
"swarm-lb.cloud-dev.d4science.org."
],
"region": "isti_area_pi_1",
"timeouts": null,
"ttl": 8600,
"type": "CNAME",
"value_specs": null,
"zone_id": "cbae638a-9d99-44aa-946c-0f5ffb7fc488"
},
"sensitive_attributes": [],
"private": "eyJlMmJmYjczMC1lY2FhLTExZTYtOGY4OC0zNDM2M2JjN2M0YzAiOnsiY3JlYXRlIjo2MDAwMDAwMDAwMDAsImRlbGV0ZSI6NjAwMDAwMDAwMDAwLCJ1cGRhdGUiOjYwMDAwMDAwMDAwMH19",
"dependencies": [
"data.terraform_remote_state.privnet_dns_router"
]
},
{
"index_key": "vremodeler-dev",
"schema_version": 0,
"attributes": {
"description": "Vremodeler dev",
"disable_status_check": false,
"id": "cbae638a-9d99-44aa-946c-0f5ffb7fc488/9bf82d9a-38f9-4d73-a0cd-1b3bce167c06",
"name": "vremodeler.cloud-dev.d4science.org.",
"project_id": "e8f8ca72f30648a8b389b4e745ac83a9",
"records": [
"swarm-lb.cloud-dev.d4science.org."
],
"region": "isti_area_pi_1",
"timeouts": null,
"ttl": 8600,
"type": "CNAME",
"value_specs": null,
"zone_id": "cbae638a-9d99-44aa-946c-0f5ffb7fc488"
},
"sensitive_attributes": [],
"private": "eyJlMmJmYjczMC1lY2FhLTExZTYtOGY4OC0zNDM2M2JjN2M0YzAiOnsiY3JlYXRlIjo2MDAwMDAwMDAwMDAsImRlbGV0ZSI6NjAwMDAwMDAwMDAwLCJ1cGRhdGUiOjYwMDAwMDAwMDAwMH19",
"dependencies": [
"data.terraform_remote_state.privnet_dns_router"
]
}
]
}
],
"check_results": null
}

View File

@ -2,23 +2,23 @@
# Manual edits may be lost in future updates.
provider "registry.terraform.io/terraform-provider-openstack/openstack" {
version = "1.53.0"
constraints = "~> 1.53.0"
version = "2.0.0"
constraints = ">= 1.54.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",
"h1:raN7bKNdWwlAUprknjprlcP8/YluslrdVtyO+YI4PHs=",
"zh:17dcb07e1af0bf5dfa0aa280a7ad450dffcd4c2b2fba91088eb5ec191ad8a0a0",
"zh:2546f047d34f4372e4eb10db5ba23a45a8952327ae94d15371b2432ba477404e",
"zh:257a96029772251de0ce039483d565744e28e902904a60cb2e1d0af91b09d74d",
"zh:29d71f2a9d74701965a19ad1623d46bfe624e7d58c261075acad04bef373b579",
"zh:30e759253fb7df4d24de8e248ff5f0f038c6e54b82377c70bc19815443476eb6",
"zh:383d8286588b0ccd02062373ee7812ad583775b7d1ef09112716ebf3a6f257cd",
"zh:533beb32a7d355f5ecfc249eb40a9800061dd2590960c48910d7ab8a711495ef",
"zh:5f52cfb93aabf766d6781f66b9cee8b9126a52a330e16c6eadd1b52e8c251870",
"zh:6720f59ade2db328d8e3d37ac4bd588a186379d6c29ebd76761fca916a230ddc",
"zh:725c285c6e979d9564ae0c6017587e65ca6727733cb6fdf0af57047e0f89cb00",
"zh:739ec820139bdd742743c892f0c123b3ef4c0288ed33739380ed362cdcb49085",
"zh:7d223f9e986a8ece51f86143d01f2c7d805c55dce1090e53059d8a38e1121de4",
"zh:9d682904a5346febb820f7d1290d3a5bd09761c0427c9854c3248d222ce970c2",
"zh:f06515d93af460abc39e7713089f9fe714bcb25315582628ecb0b1af7a2a6e2f",
]
}

View File

@ -4,7 +4,7 @@ terraform {
required_providers {
openstack = {
source = "terraform-provider-openstack/openstack"
version = "~> 1.53.0"
version = ">= 1.54.0"
}
}
}
@ -16,7 +16,6 @@ data "terraform_remote_state" "privnet_dns_router" {
path = "../project-setup/terraform.tfstate"
}
}
#
# Uses common_variables as module
#
@ -24,33 +23,45 @@ module "common_variables" {
source = "../../modules/common_variables"
}
#
# Creates the server group "sdi-geo"
#
resource "openstack_compute_servergroup_v2" "sdi_geo_server_group" {
name = "sdi-geo"
policies = [module.common_variables.policy_list.soft_anti_affinity]
}
module "instance_with_data_volume" {
source = "../../modules/instance_with_data_volume"
instances_with_data_volume_map = {
geonetwork_1 = {
name = "geonetwork-1",
geonetwork_next = {
name = "geonetwork-next",
description = "This instance serves geonetwork service",
flavor = module.common_variables.flavor_list.m1_medium,
networks = [data.terraform_remote_state.privnet_dns_router.outputs.main_private_network.name, module.common_variables.networks_list.shared_postgresql],
security_groups = [data.terraform_remote_state.privnet_dns_router.outputs.default_security_group_name, data.terraform_remote_state.privnet_dns_router.outputs.security_group_list.http_and_https_from_the_load_balancers],
server_groups_ids = [openstack_compute_servergroup_v2.sdi_geo_server_group.id],
server_groups_ids = [],
image_ref = module.common_variables.ubuntu_1804
volume = {
name = "geonetwork_1_data_volume",
size = "30",
device = "/dev/vdb"
volume = {
name = "geonetwork_next_data_volume",
size = "20",
device = "/dev/vdb"
}
}
}
}
locals {
cname_target = "main-lb.${data.terraform_remote_state.privnet_dns_router.outputs.dns_zone.zone_name}"
}
#
# Add DNS record/s
#
module "dns_records_create" {
source = "../../modules/dns_resources"
dns_resources_map = {
geonetwork-next = {
zone_id = data.terraform_remote_state.privnet_dns_router.outputs.dns_zone_id
name = join(".", ["geonetwork-next", data.terraform_remote_state.privnet_dns_router.outputs.dns_zone.zone_name])
description = "Geonetwork geonetwork-next"
ttl = 8600
type = "CNAME"
records = [local.cname_target]
}
}
}

View File

@ -1,254 +0,0 @@
{
"version": 4,
"terraform_version": "1.6.4",
"serial": 5,
"lineage": "e3a2cae2-4c05-25e0-9e16-4616ea0bd8d4",
"outputs": {},
"resources": [
{
"mode": "data",
"type": "terraform_remote_state",
"name": "privnet_dns_router",
"provider": "provider[\"terraform.io/builtin/terraform\"]",
"instances": [
{
"schema_version": 0,
"attributes": {
"backend": "local",
"config": {
"value": {
"path": "../project-setup/terraform.tfstate"
},
"type": [
"object",
{
"path": "string"
}
]
},
"defaults": null,
"outputs": {
"value": {
"dns_zone_id": "cbae638a-9d99-44aa-946c-0f5ffb7fc488",
"external_gateway_ip": "146.48.31.109",
"main_private_network_id": "e0af5eba-f24a-4d0d-8184-bc654b980c4a",
"main_subnet_network_id": "2aa977f2-80b4-447c-a6b0-dfa06bf68751"
},
"type": [
"object",
{
"dns_zone_id": "string",
"external_gateway_ip": "string",
"main_private_network_id": "string",
"main_subnet_network_id": "string"
}
]
},
"workspace": null
},
"sensitive_attributes": []
}
]
},
{
"mode": "managed",
"type": "openstack_compute_servergroup_v2",
"name": "sdi_geo_server_group",
"provider": "provider[\"registry.terraform.io/terraform-provider-openstack/openstack\"]",
"instances": [
{
"schema_version": 0,
"attributes": {
"id": "39b5a9fa-8c3b-40d9-8d8a-e595d47358f5",
"members": [],
"name": "sdi-geo",
"policies": [
"soft-anti-affinity"
],
"region": "isti_area_pi_1",
"rules": [
{
"max_server_per_host": 0
}
],
"value_specs": null
},
"sensitive_attributes": [],
"private": "bnVsbA=="
}
]
},
{
"module": "module.instance_with_data_volume",
"mode": "managed",
"type": "openstack_blockstorage_volume_v3",
"name": "instance_data_volume",
"provider": "provider[\"registry.terraform.io/terraform-provider-openstack/openstack\"]",
"instances": [
{
"index_key": "geonetwork_1",
"schema_version": 0,
"attributes": {
"attachment": [],
"availability_zone": "nova",
"consistency_group_id": null,
"description": "",
"enable_online_resize": null,
"id": "e89ec101-eab3-4291-a192-47aa2542cde7",
"image_id": null,
"metadata": {},
"multiattach": null,
"name": "geonetwork_1_data_volume",
"region": "isti_area_pi_1",
"scheduler_hints": [],
"size": 30,
"snapshot_id": "",
"source_replica": null,
"source_vol_id": "",
"timeouts": null,
"volume_type": "cephUnencrypted"
},
"sensitive_attributes": [],
"private": "eyJlMmJmYjczMC1lY2FhLTExZTYtOGY4OC0zNDM2M2JjN2M0YzAiOnsiY3JlYXRlIjo2MDAwMDAwMDAwMDAsImRlbGV0ZSI6NjAwMDAwMDAwMDAwfX0=",
"dependencies": [
"openstack_compute_servergroup_v2.sdi_geo_server_group"
]
}
]
},
{
"module": "module.instance_with_data_volume",
"mode": "managed",
"type": "openstack_compute_instance_v2",
"name": "instance_with_data_volume",
"provider": "provider[\"registry.terraform.io/terraform-provider-openstack/openstack\"]",
"instances": [
{
"index_key": "geonetwork_1",
"schema_version": 0,
"attributes": {
"access_ip_v4": "10.1.28.82",
"access_ip_v6": "",
"admin_pass": null,
"all_metadata": {},
"all_tags": [],
"availability_zone": "cnr-isti-nova-a",
"availability_zone_hints": "cnr-isti-nova-a",
"block_device": [
{
"boot_index": 0,
"delete_on_termination": false,
"destination_type": "volume",
"device_type": "",
"disk_bus": "",
"guest_format": "",
"multiattach": false,
"source_type": "image",
"uuid": "7ed6a2cd-2b07-482e-8ce4-f018dff16c89",
"volume_size": 10,
"volume_type": ""
}
],
"config_drive": null,
"created": "2023-12-11 10:25:30 +0000 UTC",
"flavor_id": "4",
"flavor_name": "m1.medium",
"floating_ip": null,
"force_delete": false,
"id": "ce706ddc-cd05-45fc-bfff-b46839c91604",
"image_id": "Attempt to boot from volume - no image supplied",
"image_name": null,
"key_pair": "Giancarlo Panichi",
"metadata": null,
"name": "geonetwork-1",
"network": [
{
"access_network": false,
"fixed_ip_v4": "10.1.28.82",
"fixed_ip_v6": "",
"floating_ip": "",
"mac": "fa:16:3e:bf:64:1d",
"name": "d4s-dev-cloud-main",
"port": "",
"uuid": "e0af5eba-f24a-4d0d-8184-bc654b980c4a"
},
{
"access_network": false,
"fixed_ip_v4": "192.168.2.223",
"fixed_ip_v6": "",
"floating_ip": "",
"mac": "fa:16:3e:f5:c3:88",
"name": "postgresql-srv-net",
"port": "",
"uuid": "00422a4a-4b8b-4c85-acf9-ef733df842b9"
}
],
"network_mode": null,
"personality": [],
"power_state": "active",
"region": "isti_area_pi_1",
"scheduler_hints": [
{
"additional_properties": null,
"build_near_host_ip": "",
"different_cell": [],
"different_host": [],
"group": "39b5a9fa-8c3b-40d9-8d8a-e595d47358f5",
"query": [],
"same_host": [],
"target_cell": ""
}
],
"security_groups": [
"default",
"http and https from the load balancers"
],
"stop_before_destroy": false,
"tags": null,
"timeouts": null,
"updated": "2023-12-11 10:26:05 +0000 UTC",
"user_data": "47d4769e61324c305c4b70ed6673de4fad84150d",
"vendor_options": [],
"volume": []
},
"sensitive_attributes": [],
"private": "eyJlMmJmYjczMC1lY2FhLTExZTYtOGY4OC0zNDM2M2JjN2M0YzAiOnsiY3JlYXRlIjoxODAwMDAwMDAwMDAwLCJkZWxldGUiOjE4MDAwMDAwMDAwMDAsInVwZGF0ZSI6MTgwMDAwMDAwMDAwMH19",
"dependencies": [
"openstack_compute_servergroup_v2.sdi_geo_server_group"
]
}
]
},
{
"module": "module.instance_with_data_volume",
"mode": "managed",
"type": "openstack_compute_volume_attach_v2",
"name": "attach_volume",
"provider": "provider[\"registry.terraform.io/terraform-provider-openstack/openstack\"]",
"instances": [
{
"index_key": "geonetwork_1",
"schema_version": 0,
"attributes": {
"device": "/dev/vdb",
"id": "ce706ddc-cd05-45fc-bfff-b46839c91604/e89ec101-eab3-4291-a192-47aa2542cde7",
"instance_id": "ce706ddc-cd05-45fc-bfff-b46839c91604",
"multiattach": null,
"region": "isti_area_pi_1",
"timeouts": null,
"vendor_options": [],
"volume_id": "e89ec101-eab3-4291-a192-47aa2542cde7"
},
"sensitive_attributes": [],
"private": "eyJlMmJmYjczMC1lY2FhLTExZTYtOGY4OC0zNDM2M2JjN2M0YzAiOnsiY3JlYXRlIjo2MDAwMDAwMDAwMDAsImRlbGV0ZSI6NjAwMDAwMDAwMDAwfX0=",
"dependencies": [
"module.instance_with_data_volume.openstack_blockstorage_volume_v3.instance_data_volume",
"module.instance_with_data_volume.openstack_compute_instance_v2.instance_with_data_volume",
"openstack_compute_servergroup_v2.sdi_geo_server_group"
]
}
]
}
],
"check_results": null
}

View File

@ -2,24 +2,23 @@
# Manual edits may be lost in future updates.
provider "registry.terraform.io/terraform-provider-openstack/openstack" {
version = "1.53.0"
constraints = "~> 1.53.0"
version = "2.0.0"
constraints = ">= 1.54.0"
hashes = [
"h1:YLGvYkSuagyP5orUTyKNK+JhzS17EFTUDpZ5R5/fFv4=",
"h1:ZSJPqrlaHQ3sj7wyJuPSG+NblFZbAA6Y0d3GjSJf3o8=",
"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",
"h1:raN7bKNdWwlAUprknjprlcP8/YluslrdVtyO+YI4PHs=",
"zh:17dcb07e1af0bf5dfa0aa280a7ad450dffcd4c2b2fba91088eb5ec191ad8a0a0",
"zh:2546f047d34f4372e4eb10db5ba23a45a8952327ae94d15371b2432ba477404e",
"zh:257a96029772251de0ce039483d565744e28e902904a60cb2e1d0af91b09d74d",
"zh:29d71f2a9d74701965a19ad1623d46bfe624e7d58c261075acad04bef373b579",
"zh:30e759253fb7df4d24de8e248ff5f0f038c6e54b82377c70bc19815443476eb6",
"zh:383d8286588b0ccd02062373ee7812ad583775b7d1ef09112716ebf3a6f257cd",
"zh:533beb32a7d355f5ecfc249eb40a9800061dd2590960c48910d7ab8a711495ef",
"zh:5f52cfb93aabf766d6781f66b9cee8b9126a52a330e16c6eadd1b52e8c251870",
"zh:6720f59ade2db328d8e3d37ac4bd588a186379d6c29ebd76761fca916a230ddc",
"zh:725c285c6e979d9564ae0c6017587e65ca6727733cb6fdf0af57047e0f89cb00",
"zh:739ec820139bdd742743c892f0c123b3ef4c0288ed33739380ed362cdcb49085",
"zh:7d223f9e986a8ece51f86143d01f2c7d805c55dce1090e53059d8a38e1121de4",
"zh:9d682904a5346febb820f7d1290d3a5bd09761c0427c9854c3248d222ce970c2",
"zh:f06515d93af460abc39e7713089f9fe714bcb25315582628ecb0b1af7a2a6e2f",
]
}

View File

@ -4,7 +4,7 @@ terraform {
required_providers {
openstack = {
source = "terraform-provider-openstack/openstack"
version = "~> 1.53.0"
version = ">= 1.54.0"
}
}
}
@ -24,31 +24,80 @@ module "common_variables" {
source = "../../modules/common_variables"
}
#
# Creates the server group "geoserver"
#
resource "openstack_compute_servergroup_v2" "geoserver_server_group" {
name = "geoserver"
policies = [module.common_variables.policy_list.soft_anti_affinity]
# Module used
module "ssh_settings" {
source = "../../modules/ssh-key-ref"
}
module "instance_with_data_volume" {
source = "../../modules/instance_with_data_volume"
# Volumes
# resource "openstack_blockstorage_volume_v3" "geoserver_2_dev_data_volume" {
# name = "geoserver_2_data_volume"
# size = "20"
# }
instances_with_data_volume_map = {
geoserver_2 = {
name = "geoserver-2",
description = "Geoserver instance",
flavor = module.common_variables.flavor_list.m1_large,
networks = [data.terraform_remote_state.privnet_dns_router.outputs.main_private_network.name, module.common_variables.networks_list.shared_postgresql],
security_groups = [data.terraform_remote_state.privnet_dns_router.outputs.default_security_group_name, data.terraform_remote_state.privnet_dns_router.outputs.security_group_list.http_and_https_from_the_load_balancers],
server_groups_ids = [openstack_compute_servergroup_v2.geoserver_server_group.id],
image_ref = module.common_variables.ubuntu_1804,
volume = {
name = "geoserver_2_data_volume",
size = "50",
device = "/dev/vdb"
}
}
}
}
# Geoservers
# resource "openstack_compute_instance_v2" "geoserver_2_dev" {
# name = "geoserver-2"
# availability_zone_hints = module.common_variables.availability_zone_no_gpu_name
# flavor_name = "c1.medium"
# key_pair = module.ssh_settings.ssh_key_name
# security_groups = [data.terraform_remote_state.privnet_dns_router.outputs.default_security_group_name, data.terraform_remote_state.privnet_dns_router.outputs.security_group_list.http_and_https_from_the_load_balancers]
# block_device {
# uuid = module.common_variables.ubuntu_2404.uuid
# source_type = "image"
# volume_size = 10
# boot_index = 0
# destination_type = "volume"
# delete_on_termination = false
# }
# # Creates the networks according to input networks
# dynamic "network" {
# for_each = toset([data.terraform_remote_state.privnet_dns_router.outputs.main_private_network.name, module.common_variables.networks_list.shared_postgresql])
# content {
# name = network.value
# }
# }
# # user_data script used
# user_data = file("${module.common_variables.ubuntu_2404.user_data_file}")
# # Do not replace the instance when the ssh key changes
# lifecycle {
# ignore_changes = [
# # Ignore changes to tags, e.g. because a management agent
# # updates these based on some ruleset managed elsewhere.
# key_pair, user_data, network
# ]
# }
# }
# resource "openstack_compute_volume_attach_v2" "geoserver_2_dev_attach" {
# instance_id = openstack_compute_instance_v2.geoserver_2_dev.id
# volume_id = openstack_blockstorage_volume_v3.geoserver_2_dev_data_volume.id
# device = "/dev/vdb"
# }
locals {
cname_target = "main-lb.${data.terraform_remote_state.privnet_dns_router.outputs.dns_zone.zone_name}"
}
#
# Add DNS record/s
#
# module "dns_records_create" {
# source = "../../modules/dns_resources"
# dns_resources_map = {
# geoserver-2 = {
# zone_id = data.terraform_remote_state.privnet_dns_router.outputs.dns_zone_id
# name = join(".", ["geoserver-2", data.terraform_remote_state.privnet_dns_router.outputs.dns_zone.zone_name])
# description = "Geoserver geoserver-2"
# ttl = 8600
# type = "CNAME"
# records = [local.cname_target]
# }
# }
# }

View File

@ -0,0 +1,398 @@
{
"version": 4,
"terraform_version": "1.6.4",
"serial": 12,
"lineage": "ee9a7e77-5d61-f866-c3d3-dbb0ae8bdf59",
"outputs": {},
"resources": [
{
"mode": "data",
"type": "terraform_remote_state",
"name": "privnet_dns_router",
"provider": "provider[\"terraform.io/builtin/terraform\"]",
"instances": [
{
"schema_version": 0,
"attributes": {
"backend": "local",
"config": {
"value": {
"path": "../project-setup/terraform.tfstate"
},
"type": [
"object",
{
"path": "string"
}
]
},
"defaults": null,
"outputs": {
"value": {
"almalinux_9": {
"name": "AlmaLinux-9.0-20220718",
"uuid": "541650fc-dd19-4f38-bb1d-7333ed9dd688"
},
"availability_zone_no_gpu_name": "cnr-isti-nova-a",
"availability_zone_with_gpu_name": "cnr-isti-nova-gpu-a",
"availability_zones_names": {
"availability_zone_no_gpu": "cnr-isti-nova-a",
"availability_zone_with_gpu": "cnr-isti-nova-gpu-a"
},
"basic_services_ip": {
"ca": "10.1.29.247",
"ca_cidr": "10.1.29.247/32",
"haproxy_l7_1": "10.1.28.50",
"haproxy_l7_1_cidr": "10.1.28.50/32",
"haproxy_l7_2": "10.1.30.241",
"haproxy_l7_2_cidr": "10.1.30.241/32",
"octavia_main": "10.1.28.227",
"octavia_main_cidr": "10.1.28.227/32",
"prometheus": "10.1.30.129",
"prometheus_cidr": "10.1.30.129/32",
"ssh_jump": "10.1.29.164",
"ssh_jump_cidr": "10.1.29.164/32"
},
"centos_7": {
"name": "CentOS-7",
"uuid": "f0187a99-64f6-462a-ab5f-ef52fe62f2ca"
},
"default_security_group_name": "default",
"dns_zone": {
"description": "DNS primary zone for the d4s-dev-cloud project",
"email": "postmaster@isti.cnr.it",
"ttl": "8600",
"zone_name": "cloud-dev.d4science.org."
},
"dns_zone_id": "cbae638a-9d99-44aa-946c-0f5ffb7fc488",
"el7_data_file": "../../openstack_vm_data_scripts/el7.sh",
"external_gateway_ip": [
{
"ip_address": "146.48.31.109",
"subnet_id": "57f87509-4016-46fb-b8c3-25fca7f72ccb"
}
],
"external_network": {
"id": "1d2ff137-6ff7-4017-be2b-0d6c4af2353b",
"name": "external-network"
},
"external_network_id": "1d2ff137-6ff7-4017-be2b-0d6c4af2353b",
"external_router": {
"description": "D4Science DEV main router",
"id": "2ae28c5f-036b-45db-bc9f-5bab8fa3e914",
"name": "d4s-dev-cloud-external-router"
},
"flavor_list": {
"c1_large": "c1.large",
"c1_medium": "c1.medium",
"c1_small": "c1.small",
"c2_large": "c2.large",
"m1_large": "m1.large",
"m1_medium": "m1.medium",
"m1_xlarge": "m1.xlarge",
"m1_xxl": "m1.xxl",
"m2_large": "m2.large",
"m2_medium": "m2.medium",
"m2_small": "m2.small",
"m3_large": "m3.large"
},
"floating_ip_pools": {
"main_public_ip_pool": "external-network"
},
"haproxy_l7_data": {
"flavor": "m1.medium",
"haproxy_1": "haproxy-l7-1",
"haproxy_2": "haproxy-l7-2",
"name": "main-haproxy-l7",
"vm_count": "2"
},
"internal_ca_data": {
"flavor": "m1.small",
"name": "ca"
},
"main_haproxy_l7_ip": [
"10.1.28.50",
"10.1.30.241"
],
"main_private_network": {
"description": "D4Science DEV private network (use this as the main network)",
"name": "d4s-dev-cloud-main"
},
"main_private_network_id": "e0af5eba-f24a-4d0d-8184-bc654b980c4a",
"main_private_subnet": {
"allocation_end": "10.1.31.254",
"allocation_start": "10.1.28.30",
"cidr": "10.1.28.0/22",
"description": "D4Science DEV main private subnet",
"gateway_ip": "10.1.28.1",
"name": "d4s-dev-cloud-sub"
},
"main_region": "isti_area_pi_1",
"main_subnet_network_id": "2aa977f2-80b4-447c-a6b0-dfa06bf68751",
"mtu_size": 8942,
"networks_list": {
"cassandra": "cassandra-net",
"orientdb": "orientdb-net",
"orientdb_se": "orientdb-se-net",
"shared_postgresql": "postgresql-srv-net",
"swarm": "swarm-nfs-net",
"timescaledb": "timescaledb-net"
},
"networks_with_d4s_services": {
"garr_ct1_net": "90.147.166.0/23",
"garr_na_net": "90.147.152.0/24",
"garr_pa1_net": "90.147.188.0/23",
"infrascience_net": "146.48.122.0/23",
"isti_net": "146.48.80.0/21",
"s2i2s_net": "146.48.28.0/22"
},
"nfs_share_no_ingress_secgroup_id": "5887da8d-e362-4509-93ac-8a70bf8baef9",
"octavia_information": {
"main_lb_description": "Main L4 load balancer for the D4Science DEV",
"main_lb_hostname": "main-lb",
"main_lb_name": "lb-dev-l4",
"octavia_flavor": "octavia_amphora-mvcpu-ha",
"octavia_flavor_id": "394988b5-6603-4a1e-a939-8e177c6681c7"
},
"os_project_data": {
"id": "e8f8ca72f30648a8b389b4e745ac83a9"
},
"policy_list": {
"affinity": "affinity",
"anti_affinity": "anti-affinity",
"soft_affinity": "soft-affinity",
"soft_anti_affinity": "soft-anti-affinity"
},
"prometheus_server_data": {
"flavor": "m1.medium",
"name": "prometheus",
"public_grafana_server_cidr": "146.48.28.103/32",
"vol_data_device": "/dev/vdb",
"vol_data_name": "prometheus-data",
"vol_data_size": "100"
},
"resolvers_ip": [
"146.48.29.97",
"146.48.29.98",
"146.48.29.99"
],
"resource_registry_addresses": {},
"security_group_list": {
"acaland": "acaland's dev machine",
"access_to_orientdb": "access_to_orientdb",
"access_to_orientdb_se": "access_to_orientdb_se",
"access_to_the_timescaledb_service": "access_to_the_timescaledb_service",
"cassandra": "Cassandra",
"dataminer-publish": "dataminer-publish",
"debugging_from_jump_node": "debugging_from_jump_node",
"default": "default",
"docker_swarm": "Docker Swarm",
"docker_swarm_NFS": "Docker Swarm NFS",
"haproxy": "traffic_from_main_lb_to_haproxy_l7",
"http_and_https_from_the_load_balancers": "traffic_from_the_main_load_balancers",
"limited_HTTPS_access": "restricted_web_service",
"limited_SSH_access": "Limited SSH access",
"mongo": "mongo",
"nfs_share_no_ingress": "nfs_share_no_ingress",
"orientdb_internal_docker_traffic": "orientdb_internal_docker_traffic",
"postgreSQL": "PostgreSQL service",
"public_HTTPS": "Public HTTPS"
},
"shared_postgresql_server_data": {
"allocation_pool_end": "192.168.3.254",
"allocation_pool_start": "192.168.0.100",
"flavor": "m1.medium",
"name": "shared-postgresql-server",
"network_cidr": "192.168.0.0/22",
"network_description": "Network used to communicate with the shared postgresql service",
"network_name": "postgresql-srv-net",
"server_cidr": "192.168.0.5/22",
"server_ip": "192.168.0.5",
"vol_data_device": "/dev/vdb",
"vol_data_name": "shared-postgresql-data",
"vol_data_size": "100"
},
"smartexecutor_addresses": {},
"ssh_jump_proxy": {
"flavor": "m2.small",
"name": "ssh-jump-proxy"
},
"ssh_sources": {
"d4s_vpn_1_cidr": "146.48.122.27/32",
"d4s_vpn_2_cidr": "146.48.122.49/32",
"infrascience_net_cidr": "146.48.122.0/23",
"s2i2s_vpn_1_cidr": "146.48.28.10/32",
"s2i2s_vpn_2_cidr": "146.48.28.11/32",
"shell_d4s_cidr": "146.48.122.95/32"
},
"storage_nfs_network_id": "5f4023cc-4016-404c-94e5-86220095fbaf",
"storage_nfs_subnet_id": "6ff0f9e8-0e74-4cc3-a268-7ed4af435696",
"ubuntu1804_data_file": "../../openstack_vm_data_scripts/ubuntu1804.sh",
"ubuntu2204_data_file": "../../openstack_vm_data_scripts/ubuntu2204.sh",
"ubuntu_1804": {
"name": "Ubuntu-Bionic-18.04",
"user_data_file": "../../openstack_vm_data_scripts/ubuntu1804.sh",
"uuid": "7ed6a2cd-2b07-482e-8ce4-f018dff16c89"
},
"ubuntu_2204": {
"name": "Ubuntu-Jammy-22.04",
"user_data_file": "../../openstack_vm_data_scripts/ubuntu2204.sh",
"uuid": "54768889-8556-4be4-a2eb-82a4d9b34627"
}
},
"type": [
"object",
{
"almalinux_9": [
"map",
"string"
],
"availability_zone_no_gpu_name": "string",
"availability_zone_with_gpu_name": "string",
"availability_zones_names": [
"map",
"string"
],
"basic_services_ip": [
"map",
"string"
],
"centos_7": [
"map",
"string"
],
"default_security_group_name": "string",
"dns_zone": [
"map",
"string"
],
"dns_zone_id": "string",
"el7_data_file": "string",
"external_gateway_ip": [
"list",
[
"object",
{
"ip_address": "string",
"subnet_id": "string"
}
]
],
"external_network": [
"map",
"string"
],
"external_network_id": "string",
"external_router": [
"map",
"string"
],
"flavor_list": [
"map",
"string"
],
"floating_ip_pools": [
"map",
"string"
],
"haproxy_l7_data": [
"map",
"string"
],
"internal_ca_data": [
"map",
"string"
],
"main_haproxy_l7_ip": [
"list",
"string"
],
"main_private_network": [
"map",
"string"
],
"main_private_network_id": "string",
"main_private_subnet": [
"map",
"string"
],
"main_region": "string",
"main_subnet_network_id": "string",
"mtu_size": "number",
"networks_list": [
"map",
"string"
],
"networks_with_d4s_services": [
"map",
"string"
],
"nfs_share_no_ingress_secgroup_id": "string",
"octavia_information": [
"map",
"string"
],
"os_project_data": [
"map",
"string"
],
"policy_list": [
"map",
"string"
],
"prometheus_server_data": [
"map",
"string"
],
"resolvers_ip": [
"list",
"string"
],
"resource_registry_addresses": [
"map",
"string"
],
"security_group_list": [
"map",
"string"
],
"shared_postgresql_server_data": [
"map",
"string"
],
"smartexecutor_addresses": [
"map",
"string"
],
"ssh_jump_proxy": [
"map",
"string"
],
"ssh_sources": [
"map",
"string"
],
"storage_nfs_network_id": "string",
"storage_nfs_subnet_id": "string",
"ubuntu1804_data_file": "string",
"ubuntu2204_data_file": "string",
"ubuntu_1804": [
"map",
"string"
],
"ubuntu_2204": [
"map",
"string"
]
}
]
},
"workspace": null
},
"sensitive_attributes": []
}
]
}
],
"check_results": null
}

View File

@ -0,0 +1,92 @@
# Define required providers
terraform {
required_version = ">= 0.14.0"
required_providers {
openstack = {
source = "terraform-provider-openstack/openstack"
version = ">= 1.54.0"
}
}
}
data "terraform_remote_state" "privnet_dns_router" {
backend = "local"
config = {
path = "../project-setup/terraform.tfstate"
}
}
#
# Uses common_variables as module
#
module "common_variables" {
source = "../../modules/common_variables"
}
# Module used
module "ssh_settings" {
source = "../../modules/ssh-key-ref"
}
# Instances
resource "openstack_compute_instance_v2" "icproxy1_dev" {
name = "registry1"
availability_zone_hints = module.common_variables.availability_zone_no_gpu_name
flavor_name = "m1.medium"
key_pair = module.ssh_settings.ssh_key_name
security_groups = [data.terraform_remote_state.privnet_dns_router.outputs.default_security_group_name, data.terraform_remote_state.privnet_dns_router.outputs.security_group_list.http_and_https_from_the_load_balancers]
block_device {
uuid = module.common_variables.ubuntu_1804.uuid
source_type = "image"
volume_size = 10
boot_index = 0
destination_type = "volume"
delete_on_termination = false
}
# Creates the networks according to input networks
dynamic "network" {
for_each = toset([data.terraform_remote_state.privnet_dns_router.outputs.main_private_network.name])
content {
name = network.value
}
}
# user_data script used
user_data = file("${module.common_variables.ubuntu_1804.user_data_file}")
# Do not replace the instance when the ssh key changes
lifecycle {
ignore_changes = [
# Ignore changes to tags, e.g. because a management agent
# updates these based on some ruleset managed elsewhere.
key_pair, user_data, network
]
}
}
locals {
cname_target = "main-lb.${data.terraform_remote_state.privnet_dns_router.outputs.dns_zone.zone_name}"
}
#
# Add DNS record/s
#
module "dns_records_create" {
source = "../../modules/dns_resources"
dns_resources_map = {
icproxy1-dev = {
zone_id = data.terraform_remote_state.privnet_dns_router.outputs.dns_zone_id
name = join(".", ["registry1", data.terraform_remote_state.privnet_dns_router.outputs.dns_zone.zone_name])
description = "ICProxy 1"
ttl = 8600
type = "CNAME"
records = [local.cname_target]
}
}
}

View File

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

View File

@ -0,0 +1,509 @@
{
"version": 4,
"terraform_version": "1.6.4",
"serial": 3,
"lineage": "77fc36f5-2d41-5382-7849-e0318df84e95",
"outputs": {},
"resources": [
{
"mode": "data",
"type": "terraform_remote_state",
"name": "privnet_dns_router",
"provider": "provider[\"terraform.io/builtin/terraform\"]",
"instances": [
{
"schema_version": 0,
"attributes": {
"backend": "local",
"config": {
"value": {
"path": "../project-setup/terraform.tfstate"
},
"type": [
"object",
{
"path": "string"
}
]
},
"defaults": null,
"outputs": {
"value": {
"almalinux_9": {
"name": "AlmaLinux-9.0-20220718",
"uuid": "541650fc-dd19-4f38-bb1d-7333ed9dd688"
},
"availability_zone_no_gpu_name": "cnr-isti-nova-a",
"availability_zone_with_gpu_name": "cnr-isti-nova-gpu-a",
"availability_zones_names": {
"availability_zone_no_gpu": "cnr-isti-nova-a",
"availability_zone_with_gpu": "cnr-isti-nova-gpu-a"
},
"basic_services_ip": {
"ca": "10.1.29.247",
"ca_cidr": "10.1.29.247/32",
"haproxy_l7_1": "10.1.28.50",
"haproxy_l7_1_cidr": "10.1.28.50/32",
"haproxy_l7_2": "10.1.30.241",
"haproxy_l7_2_cidr": "10.1.30.241/32",
"octavia_main": "10.1.28.227",
"octavia_main_cidr": "10.1.28.227/32",
"prometheus": "10.1.30.129",
"prometheus_cidr": "10.1.30.129/32",
"ssh_jump": "10.1.29.164",
"ssh_jump_cidr": "10.1.29.164/32"
},
"centos_7": {
"name": "CentOS-7",
"uuid": "f0187a99-64f6-462a-ab5f-ef52fe62f2ca"
},
"default_security_group_name": "default",
"dns_zone": {
"description": "DNS primary zone for the d4s-dev-cloud project",
"email": "postmaster@isti.cnr.it",
"ttl": "8600",
"zone_name": "cloud-dev.d4science.org."
},
"dns_zone_id": "cbae638a-9d99-44aa-946c-0f5ffb7fc488",
"el7_data_file": "../../openstack_vm_data_scripts/el7.sh",
"external_gateway_ip": [
{
"ip_address": "146.48.31.109",
"subnet_id": "57f87509-4016-46fb-b8c3-25fca7f72ccb"
}
],
"external_network": {
"id": "1d2ff137-6ff7-4017-be2b-0d6c4af2353b",
"name": "external-network"
},
"external_network_id": "1d2ff137-6ff7-4017-be2b-0d6c4af2353b",
"external_router": {
"description": "D4Science DEV main router",
"id": "2ae28c5f-036b-45db-bc9f-5bab8fa3e914",
"name": "d4s-dev-cloud-external-router"
},
"flavor_list": {
"c1_large": "c1.large",
"c1_medium": "c1.medium",
"c1_small": "c1.small",
"c2_large": "c2.large",
"m1_large": "m1.large",
"m1_medium": "m1.medium",
"m1_xlarge": "m1.xlarge",
"m1_xxl": "m1.xxl",
"m2_large": "m2.large",
"m2_medium": "m2.medium",
"m2_small": "m2.small",
"m3_large": "m3.large"
},
"floating_ip_pools": {
"main_public_ip_pool": "external-network"
},
"haproxy_l7_data": {
"flavor": "m1.medium",
"haproxy_1": "haproxy-l7-1",
"haproxy_2": "haproxy-l7-2",
"name": "main-haproxy-l7",
"vm_count": "2"
},
"internal_ca_data": {
"flavor": "m1.small",
"name": "ca"
},
"main_haproxy_l7_ip": [
"10.1.28.50",
"10.1.30.241"
],
"main_private_network": {
"description": "D4Science DEV private network (use this as the main network)",
"name": "d4s-dev-cloud-main"
},
"main_private_network_id": "e0af5eba-f24a-4d0d-8184-bc654b980c4a",
"main_private_subnet": {
"allocation_end": "10.1.31.254",
"allocation_start": "10.1.28.30",
"cidr": "10.1.28.0/22",
"description": "D4Science DEV main private subnet",
"gateway_ip": "10.1.28.1",
"name": "d4s-dev-cloud-sub"
},
"main_region": "isti_area_pi_1",
"main_subnet_network_id": "2aa977f2-80b4-447c-a6b0-dfa06bf68751",
"mtu_size": 8942,
"networks_list": {
"cassandra": "cassandra-net",
"orientdb": "orientdb-net",
"orientdb_se": "orientdb-se-net",
"shared_postgresql": "postgresql-srv-net",
"swarm": "swarm-nfs-net",
"timescaledb": "timescaledb-net"
},
"networks_with_d4s_services": {
"garr_ct1_net": "90.147.166.0/23",
"garr_na_net": "90.147.152.0/24",
"garr_pa1_net": "90.147.188.0/23",
"infrascience_net": "146.48.122.0/23",
"isti_net": "146.48.80.0/21",
"s2i2s_net": "146.48.28.0/22"
},
"nfs_share_no_ingress_secgroup_id": "5887da8d-e362-4509-93ac-8a70bf8baef9",
"octavia_information": {
"main_lb_description": "Main L4 load balancer for the D4Science DEV",
"main_lb_hostname": "main-lb",
"main_lb_name": "lb-dev-l4",
"octavia_flavor": "octavia_amphora-mvcpu-ha",
"octavia_flavor_id": "394988b5-6603-4a1e-a939-8e177c6681c7"
},
"os_project_data": {
"id": "e8f8ca72f30648a8b389b4e745ac83a9"
},
"policy_list": {
"affinity": "affinity",
"anti_affinity": "anti-affinity",
"soft_affinity": "soft-affinity",
"soft_anti_affinity": "soft-anti-affinity"
},
"prometheus_server_data": {
"flavor": "m1.medium",
"name": "prometheus",
"public_grafana_server_cidr": "146.48.28.103/32",
"vol_data_device": "/dev/vdb",
"vol_data_name": "prometheus-data",
"vol_data_size": "100"
},
"resolvers_ip": [
"146.48.29.97",
"146.48.29.98",
"146.48.29.99"
],
"resource_registry_addresses": {},
"security_group_list": {
"acaland": "acaland's dev machine",
"access_to_orientdb": "access_to_orientdb",
"access_to_orientdb_se": "access_to_orientdb_se",
"access_to_the_timescaledb_service": "access_to_the_timescaledb_service",
"cassandra": "Cassandra",
"dataminer-publish": "dataminer-publish",
"debugging_from_jump_node": "debugging_from_jump_node",
"default": "default",
"docker_swarm": "Docker Swarm",
"docker_swarm_NFS": "Docker Swarm NFS",
"haproxy": "traffic_from_main_lb_to_haproxy_l7",
"http_and_https_from_the_load_balancers": "traffic_from_the_main_load_balancers",
"limited_HTTPS_access": "restricted_web_service",
"limited_SSH_access": "Limited SSH access",
"mongo": "mongo",
"nfs_share_no_ingress": "nfs_share_no_ingress",
"orientdb_internal_docker_traffic": "orientdb_internal_docker_traffic",
"postgreSQL": "PostgreSQL service",
"public_HTTPS": "Public HTTPS"
},
"shared_postgresql_server_data": {
"allocation_pool_end": "192.168.3.254",
"allocation_pool_start": "192.168.0.100",
"flavor": "m1.medium",
"name": "shared-postgresql-server",
"network_cidr": "192.168.0.0/22",
"network_description": "Network used to communicate with the shared postgresql service",
"network_name": "postgresql-srv-net",
"server_cidr": "192.168.0.5/22",
"server_ip": "192.168.0.5",
"vol_data_device": "/dev/vdb",
"vol_data_name": "shared-postgresql-data",
"vol_data_size": "100"
},
"smartexecutor_addresses": {},
"ssh_jump_proxy": {
"flavor": "m2.small",
"name": "ssh-jump-proxy"
},
"ssh_sources": {
"d4s_vpn_1_cidr": "146.48.122.27/32",
"d4s_vpn_2_cidr": "146.48.122.49/32",
"infrascience_net_cidr": "146.48.122.0/23",
"s2i2s_vpn_1_cidr": "146.48.28.10/32",
"s2i2s_vpn_2_cidr": "146.48.28.11/32",
"shell_d4s_cidr": "146.48.122.95/32"
},
"storage_nfs_network_id": "5f4023cc-4016-404c-94e5-86220095fbaf",
"storage_nfs_subnet_id": "6ff0f9e8-0e74-4cc3-a268-7ed4af435696",
"ubuntu1804_data_file": "../../openstack_vm_data_scripts/ubuntu1804.sh",
"ubuntu2204_data_file": "../../openstack_vm_data_scripts/ubuntu2204.sh",
"ubuntu_1804": {
"name": "Ubuntu-Bionic-18.04",
"user_data_file": "../../openstack_vm_data_scripts/ubuntu1804.sh",
"uuid": "7ed6a2cd-2b07-482e-8ce4-f018dff16c89"
},
"ubuntu_2204": {
"name": "Ubuntu-Jammy-22.04",
"user_data_file": "../../openstack_vm_data_scripts/ubuntu2204.sh",
"uuid": "54768889-8556-4be4-a2eb-82a4d9b34627"
}
},
"type": [
"object",
{
"almalinux_9": [
"map",
"string"
],
"availability_zone_no_gpu_name": "string",
"availability_zone_with_gpu_name": "string",
"availability_zones_names": [
"map",
"string"
],
"basic_services_ip": [
"map",
"string"
],
"centos_7": [
"map",
"string"
],
"default_security_group_name": "string",
"dns_zone": [
"map",
"string"
],
"dns_zone_id": "string",
"el7_data_file": "string",
"external_gateway_ip": [
"list",
[
"object",
{
"ip_address": "string",
"subnet_id": "string"
}
]
],
"external_network": [
"map",
"string"
],
"external_network_id": "string",
"external_router": [
"map",
"string"
],
"flavor_list": [
"map",
"string"
],
"floating_ip_pools": [
"map",
"string"
],
"haproxy_l7_data": [
"map",
"string"
],
"internal_ca_data": [
"map",
"string"
],
"main_haproxy_l7_ip": [
"list",
"string"
],
"main_private_network": [
"map",
"string"
],
"main_private_network_id": "string",
"main_private_subnet": [
"map",
"string"
],
"main_region": "string",
"main_subnet_network_id": "string",
"mtu_size": "number",
"networks_list": [
"map",
"string"
],
"networks_with_d4s_services": [
"map",
"string"
],
"nfs_share_no_ingress_secgroup_id": "string",
"octavia_information": [
"map",
"string"
],
"os_project_data": [
"map",
"string"
],
"policy_list": [
"map",
"string"
],
"prometheus_server_data": [
"map",
"string"
],
"resolvers_ip": [
"list",
"string"
],
"resource_registry_addresses": [
"map",
"string"
],
"security_group_list": [
"map",
"string"
],
"shared_postgresql_server_data": [
"map",
"string"
],
"smartexecutor_addresses": [
"map",
"string"
],
"ssh_jump_proxy": [
"map",
"string"
],
"ssh_sources": [
"map",
"string"
],
"storage_nfs_network_id": "string",
"storage_nfs_subnet_id": "string",
"ubuntu1804_data_file": "string",
"ubuntu2204_data_file": "string",
"ubuntu_1804": [
"map",
"string"
],
"ubuntu_2204": [
"map",
"string"
]
}
]
},
"workspace": null
},
"sensitive_attributes": []
}
]
},
{
"mode": "managed",
"type": "openstack_compute_instance_v2",
"name": "icproxy1_dev",
"provider": "provider[\"registry.terraform.io/terraform-provider-openstack/openstack\"]",
"instances": [
{
"schema_version": 0,
"attributes": {
"access_ip_v4": "10.1.30.29",
"access_ip_v6": "",
"admin_pass": null,
"all_metadata": {},
"all_tags": [],
"availability_zone": "cnr-isti-nova-a",
"availability_zone_hints": "cnr-isti-nova-a",
"block_device": [
{
"boot_index": 0,
"delete_on_termination": false,
"destination_type": "volume",
"device_type": "",
"disk_bus": "",
"guest_format": "",
"multiattach": false,
"source_type": "image",
"uuid": "7ed6a2cd-2b07-482e-8ce4-f018dff16c89",
"volume_size": 10,
"volume_type": ""
}
],
"config_drive": null,
"created": "2024-07-29 12:19:23 +0000 UTC",
"flavor_id": "4",
"flavor_name": "m1.medium",
"force_delete": false,
"id": "8e779980-105f-433e-952f-539a1e1d8c4c",
"image_id": "Attempt to boot from volume - no image supplied",
"image_name": null,
"key_pair": "Giancarlo Panichi",
"metadata": null,
"name": "registry1",
"network": [
{
"access_network": false,
"fixed_ip_v4": "10.1.30.29",
"fixed_ip_v6": "",
"mac": "fa:16:3e:f0:e1:7a",
"name": "d4s-dev-cloud-main",
"port": "",
"uuid": "e0af5eba-f24a-4d0d-8184-bc654b980c4a"
}
],
"network_mode": null,
"personality": [],
"power_state": "active",
"region": "isti_area_pi_1",
"scheduler_hints": [],
"security_groups": [
"default",
"traffic_from_the_main_load_balancers"
],
"stop_before_destroy": false,
"tags": null,
"timeouts": null,
"updated": "2024-07-29 12:20:18 +0000 UTC",
"user_data": "47d4769e61324c305c4b70ed6673de4fad84150d",
"vendor_options": []
},
"sensitive_attributes": [],
"private": "eyJlMmJmYjczMC1lY2FhLTExZTYtOGY4OC0zNDM2M2JjN2M0YzAiOnsiY3JlYXRlIjoxODAwMDAwMDAwMDAwLCJkZWxldGUiOjE4MDAwMDAwMDAwMDAsInVwZGF0ZSI6MTgwMDAwMDAwMDAwMH19",
"dependencies": [
"data.terraform_remote_state.privnet_dns_router"
]
}
]
},
{
"module": "module.dns_records_create",
"mode": "managed",
"type": "openstack_dns_recordset_v2",
"name": "add_dns_recordset",
"provider": "provider[\"registry.terraform.io/terraform-provider-openstack/openstack\"]",
"instances": [
{
"index_key": "icproxy1-dev",
"schema_version": 0,
"attributes": {
"description": "ICProxy 1",
"disable_status_check": false,
"id": "cbae638a-9d99-44aa-946c-0f5ffb7fc488/dade7d41-a74b-489c-ae67-660f49ea3b7c",
"name": "registry1.cloud-dev.d4science.org.",
"project_id": "e8f8ca72f30648a8b389b4e745ac83a9",
"records": [
"main-lb.cloud-dev.d4science.org."
],
"region": "isti_area_pi_1",
"timeouts": null,
"ttl": 8600,
"type": "CNAME",
"value_specs": null,
"zone_id": "cbae638a-9d99-44aa-946c-0f5ffb7fc488"
},
"sensitive_attributes": [],
"private": "eyJlMmJmYjczMC1lY2FhLTExZTYtOGY4OC0zNDM2M2JjN2M0YzAiOnsiY3JlYXRlIjo2MDAwMDAwMDAwMDAsImRlbGV0ZSI6NjAwMDAwMDAwMDAwLCJ1cGRhdGUiOjYwMDAwMDAwMDAwMH19",
"dependencies": [
"data.terraform_remote_state.privnet_dns_router"
]
}
]
}
],
"check_results": null
}

View File

@ -4,7 +4,7 @@ terraform {
required_providers {
openstack = {
source = "terraform-provider-openstack/openstack"
version = "~> 1.53.0"
# version = "~> 1.53.0"
}
}
}
@ -24,42 +24,14 @@ module "common_variables" {
source = "../../modules/common_variables"
}
#
# Creates the server group "keycloak"
# Even in dev because this service is crucial the server group is
# created with anti-affinity policy
#
resource "openstack_compute_servergroup_v2" "keycloak_server_group" {
name = "keycloak"
policies = [module.common_variables.policy_list.anti_affinity]
}
# Creating object bucket to store avatars
resource "openstack_objectstorage_container_v1" "keycloak_1" {
name = "keycloak"
}
module "instance_without_data_volume" {
source = "../../modules/instance_without_data_volume"
instances_without_data_volume_map = {
keycloak = {
name = "keycloak",
description = "This instance serves keycloak service",
flavor = module.common_variables.flavor_list.m1_medium,
networks = [data.terraform_remote_state.privnet_dns_router.outputs.main_private_network.name, module.common_variables.networks_list.shared_postgresql],
security_groups = [data.terraform_remote_state.privnet_dns_router.outputs.security_group_list.default, data.terraform_remote_state.privnet_dns_router.outputs.security_group_list.http_and_https_from_the_load_balancers],
server_groups_ids = [],
image_ref = data.terraform_remote_state.privnet_dns_router.outputs.ubuntu_2204
module "keycloak" {
source = "../../modules/keycloak"
keycloak_recordsets = {
keycloak_main_record = {
name = join(".", ["accounts", data.terraform_remote_state.privnet_dns_router.outputs.dns_zone.zone_name]),
description = "Keycloak dev endpoint"
}
}
}
resource "openstack_dns_recordset_v2" "keycloak_dev_dns_recordset" {
zone_id = data.terraform_remote_state.privnet_dns_router.outputs.dns_zone_id
name = join(".", ["accounts"], [data.terraform_remote_state.privnet_dns_router.outputs.dns_zone.zone_name])
description = "Keycloak d4science dev endpoint"
ttl = 8600
type = "CNAME"
records = [join(".", ["main-lb"], [data.terraform_remote_state.privnet_dns_router.outputs.dns_zone.zone_name])]
keycloak_object_store = "keycloak-data-dev"
}

View File

@ -1,7 +1,7 @@
{
"version": 4,
"terraform_version": "1.6.6",
"serial": 9,
"terraform_version": "1.7.5",
"serial": 36,
"lineage": "2d09d087-e2e3-bb5d-0474-c09dfa4c7145",
"outputs": {},
"resources": [
@ -394,105 +394,406 @@
]
},
{
"mode": "managed",
"type": "openstack_compute_servergroup_v2",
"name": "keycloak_server_group",
"provider": "provider[\"registry.terraform.io/terraform-provider-openstack/openstack\"]",
"module": "module.keycloak",
"mode": "data",
"type": "terraform_remote_state",
"name": "privnet_dns_router",
"provider": "provider[\"terraform.io/builtin/terraform\"]",
"instances": [
{
"schema_version": 0,
"attributes": {
"id": "9bb60610-a2ba-433b-a7c6-6c0bb3d47089",
"members": [],
"name": "keycloak",
"policies": [
"anti-affinity"
],
"region": "isti_area_pi_1",
"rules": [
{
"max_server_per_host": 0
}
],
"value_specs": null
"backend": "local",
"config": {
"value": {
"path": "../project-setup/terraform.tfstate"
},
"type": [
"object",
{
"path": "string"
}
]
},
"defaults": null,
"outputs": {
"value": {
"almalinux_9": {
"name": "AlmaLinux-9.0-20220718",
"uuid": "541650fc-dd19-4f38-bb1d-7333ed9dd688"
},
"availability_zone_no_gpu_name": "cnr-isti-nova-a",
"availability_zone_with_gpu_name": "cnr-isti-nova-gpu-a",
"availability_zones_names": {
"availability_zone_no_gpu": "cnr-isti-nova-a",
"availability_zone_with_gpu": "cnr-isti-nova-gpu-a"
},
"basic_services_ip": {
"ca": "10.1.29.247",
"ca_cidr": "10.1.29.247/32",
"haproxy_l7_1": "10.1.28.50",
"haproxy_l7_1_cidr": "10.1.28.50/32",
"haproxy_l7_2": "10.1.30.241",
"haproxy_l7_2_cidr": "10.1.30.241/32",
"octavia_main": "10.1.28.227",
"octavia_main_cidr": "10.1.28.227/32",
"prometheus": "10.1.30.129",
"prometheus_cidr": "10.1.30.129/32",
"ssh_jump": "10.1.29.164",
"ssh_jump_cidr": "10.1.29.164/32"
},
"centos_7": {
"name": "CentOS-7",
"uuid": "f0187a99-64f6-462a-ab5f-ef52fe62f2ca"
},
"default_security_group_name": "default",
"dns_zone": {
"description": "DNS primary zone for the d4s-dev-cloud project",
"email": "postmaster@isti.cnr.it",
"ttl": "8600",
"zone_name": "cloud-dev.d4science.org."
},
"dns_zone_id": "cbae638a-9d99-44aa-946c-0f5ffb7fc488",
"el7_data_file": "../../openstack_vm_data_scripts/el7.sh",
"external_gateway_ip": [
{
"ip_address": "146.48.31.109",
"subnet_id": "57f87509-4016-46fb-b8c3-25fca7f72ccb"
}
],
"external_network": {
"id": "1d2ff137-6ff7-4017-be2b-0d6c4af2353b",
"name": "external-network"
},
"external_network_id": "1d2ff137-6ff7-4017-be2b-0d6c4af2353b",
"external_router": {
"description": "D4Science DEV main router",
"id": "2ae28c5f-036b-45db-bc9f-5bab8fa3e914",
"name": "d4s-dev-cloud-external-router"
},
"flavor_list": {
"c1_large": "c1.large",
"c1_medium": "c1.medium",
"c1_small": "c1.small",
"c2_large": "c2.large",
"m1_large": "m1.large",
"m1_medium": "m1.medium",
"m1_xlarge": "m1.xlarge",
"m1_xxl": "m1.xxl",
"m2_large": "m2.large",
"m2_medium": "m2.medium",
"m2_small": "m2.small",
"m3_large": "m3.large"
},
"floating_ip_pools": {
"main_public_ip_pool": "external-network"
},
"haproxy_l7_data": {
"flavor": "m1.medium",
"haproxy_1": "haproxy-l7-1",
"haproxy_2": "haproxy-l7-2",
"name": "main-haproxy-l7",
"vm_count": "2"
},
"internal_ca_data": {
"flavor": "m1.small",
"name": "ca"
},
"main_haproxy_l7_ip": [
"10.1.28.50",
"10.1.30.241"
],
"main_private_network": {
"description": "D4Science DEV private network (use this as the main network)",
"name": "d4s-dev-cloud-main"
},
"main_private_network_id": "e0af5eba-f24a-4d0d-8184-bc654b980c4a",
"main_private_subnet": {
"allocation_end": "10.1.31.254",
"allocation_start": "10.1.28.30",
"cidr": "10.1.28.0/22",
"description": "D4Science DEV main private subnet",
"gateway_ip": "10.1.28.1",
"name": "d4s-dev-cloud-sub"
},
"main_region": "isti_area_pi_1",
"main_subnet_network_id": "2aa977f2-80b4-447c-a6b0-dfa06bf68751",
"mtu_size": 8942,
"networks_list": {
"cassandra": "cassandra-net",
"orientdb": "orientdb-net",
"orientdb_se": "orientdb-se-net",
"shared_postgresql": "postgresql-srv-net",
"swarm": "swarm-nfs-net",
"timescaledb": "timescaledb-net"
},
"networks_with_d4s_services": {
"garr_ct1_net": "90.147.166.0/23",
"garr_na_net": "90.147.152.0/24",
"garr_pa1_net": "90.147.188.0/23",
"infrascience_net": "146.48.122.0/23",
"isti_net": "146.48.80.0/21",
"s2i2s_net": "146.48.28.0/22"
},
"nfs_share_no_ingress_secgroup_id": "5887da8d-e362-4509-93ac-8a70bf8baef9",
"octavia_information": {
"main_lb_description": "Main L4 load balancer for the D4Science DEV",
"main_lb_hostname": "main-lb",
"main_lb_name": "lb-dev-l4",
"octavia_flavor": "octavia_amphora-mvcpu-ha",
"octavia_flavor_id": "394988b5-6603-4a1e-a939-8e177c6681c7"
},
"os_project_data": {
"id": "e8f8ca72f30648a8b389b4e745ac83a9"
},
"policy_list": {
"affinity": "affinity",
"anti_affinity": "anti-affinity",
"soft_affinity": "soft-affinity",
"soft_anti_affinity": "soft-anti-affinity"
},
"prometheus_server_data": {
"flavor": "m1.medium",
"name": "prometheus",
"public_grafana_server_cidr": "146.48.28.103/32",
"vol_data_device": "/dev/vdb",
"vol_data_name": "prometheus-data",
"vol_data_size": "100"
},
"resolvers_ip": [
"146.48.29.97",
"146.48.29.98",
"146.48.29.99"
],
"resource_registry_addresses": {},
"security_group_list": {
"acaland": "acaland's dev machine",
"access_to_orientdb": "access_to_orientdb",
"access_to_orientdb_se": "access_to_orientdb_se",
"access_to_the_timescaledb_service": "access_to_the_timescaledb_service",
"cassandra": "Cassandra",
"dataminer-publish": "dataminer-publish",
"debugging_from_jump_node": "debugging_from_jump_node",
"default": "default",
"docker_swarm": "Docker Swarm",
"docker_swarm_NFS": "Docker Swarm NFS",
"haproxy": "traffic_from_main_lb_to_haproxy_l7",
"http_and_https_from_the_load_balancers": "traffic_from_the_main_load_balancers",
"limited_HTTPS_access": "restricted_web_service",
"limited_SSH_access": "Limited SSH access",
"mongo": "mongo",
"nfs_share_no_ingress": "nfs_share_no_ingress",
"orientdb_internal_docker_traffic": "orientdb_internal_docker_traffic",
"postgreSQL": "PostgreSQL service",
"public_HTTPS": "Public HTTPS"
},
"shared_postgresql_server_data": {
"allocation_pool_end": "192.168.3.254",
"allocation_pool_start": "192.168.0.100",
"flavor": "m1.medium",
"name": "shared-postgresql-server",
"network_cidr": "192.168.0.0/22",
"network_description": "Network used to communicate with the shared postgresql service",
"network_name": "postgresql-srv-net",
"server_cidr": "192.168.0.5/22",
"server_ip": "192.168.0.5",
"vol_data_device": "/dev/vdb",
"vol_data_name": "shared-postgresql-data",
"vol_data_size": "100"
},
"smartexecutor_addresses": {},
"ssh_jump_proxy": {
"flavor": "m2.small",
"name": "ssh-jump-proxy"
},
"ssh_sources": {
"d4s_vpn_1_cidr": "146.48.122.27/32",
"d4s_vpn_2_cidr": "146.48.122.49/32",
"infrascience_net_cidr": "146.48.122.0/23",
"s2i2s_vpn_1_cidr": "146.48.28.10/32",
"s2i2s_vpn_2_cidr": "146.48.28.11/32",
"shell_d4s_cidr": "146.48.122.95/32"
},
"storage_nfs_network_id": "5f4023cc-4016-404c-94e5-86220095fbaf",
"storage_nfs_subnet_id": "6ff0f9e8-0e74-4cc3-a268-7ed4af435696",
"ubuntu1804_data_file": "../../openstack_vm_data_scripts/ubuntu1804.sh",
"ubuntu2204_data_file": "../../openstack_vm_data_scripts/ubuntu2204.sh",
"ubuntu_1804": {
"name": "Ubuntu-Bionic-18.04",
"user_data_file": "../../openstack_vm_data_scripts/ubuntu1804.sh",
"uuid": "7ed6a2cd-2b07-482e-8ce4-f018dff16c89"
},
"ubuntu_2204": {
"name": "Ubuntu-Jammy-22.04",
"user_data_file": "../../openstack_vm_data_scripts/ubuntu2204.sh",
"uuid": "54768889-8556-4be4-a2eb-82a4d9b34627"
}
},
"type": [
"object",
{
"almalinux_9": [
"map",
"string"
],
"availability_zone_no_gpu_name": "string",
"availability_zone_with_gpu_name": "string",
"availability_zones_names": [
"map",
"string"
],
"basic_services_ip": [
"map",
"string"
],
"centos_7": [
"map",
"string"
],
"default_security_group_name": "string",
"dns_zone": [
"map",
"string"
],
"dns_zone_id": "string",
"el7_data_file": "string",
"external_gateway_ip": [
"list",
[
"object",
{
"ip_address": "string",
"subnet_id": "string"
}
]
],
"external_network": [
"map",
"string"
],
"external_network_id": "string",
"external_router": [
"map",
"string"
],
"flavor_list": [
"map",
"string"
],
"floating_ip_pools": [
"map",
"string"
],
"haproxy_l7_data": [
"map",
"string"
],
"internal_ca_data": [
"map",
"string"
],
"main_haproxy_l7_ip": [
"list",
"string"
],
"main_private_network": [
"map",
"string"
],
"main_private_network_id": "string",
"main_private_subnet": [
"map",
"string"
],
"main_region": "string",
"main_subnet_network_id": "string",
"mtu_size": "number",
"networks_list": [
"map",
"string"
],
"networks_with_d4s_services": [
"map",
"string"
],
"nfs_share_no_ingress_secgroup_id": "string",
"octavia_information": [
"map",
"string"
],
"os_project_data": [
"map",
"string"
],
"policy_list": [
"map",
"string"
],
"prometheus_server_data": [
"map",
"string"
],
"resolvers_ip": [
"list",
"string"
],
"resource_registry_addresses": [
"map",
"string"
],
"security_group_list": [
"map",
"string"
],
"shared_postgresql_server_data": [
"map",
"string"
],
"smartexecutor_addresses": [
"map",
"string"
],
"ssh_jump_proxy": [
"map",
"string"
],
"ssh_sources": [
"map",
"string"
],
"storage_nfs_network_id": "string",
"storage_nfs_subnet_id": "string",
"ubuntu1804_data_file": "string",
"ubuntu2204_data_file": "string",
"ubuntu_1804": [
"map",
"string"
],
"ubuntu_2204": [
"map",
"string"
]
}
]
},
"workspace": null
},
"sensitive_attributes": [],
"private": "bnVsbA=="
"sensitive_attributes": []
}
]
},
{
"mode": "managed",
"type": "openstack_dns_recordset_v2",
"name": "keycloak_dev_dns_recordset",
"provider": "provider[\"registry.terraform.io/terraform-provider-openstack/openstack\"]",
"instances": [
{
"schema_version": 0,
"attributes": {
"description": "Keycloak d4science dev endpoint",
"disable_status_check": false,
"id": "cbae638a-9d99-44aa-946c-0f5ffb7fc488/effa71d2-37ff-4237-9a6e-86f4c2e1c53f",
"name": "accounts.cloud-dev.d4science.org.",
"project_id": "e8f8ca72f30648a8b389b4e745ac83a9",
"records": [
"main-lb.cloud-dev.d4science.org."
],
"region": "isti_area_pi_1",
"timeouts": null,
"ttl": 8600,
"type": "CNAME",
"value_specs": null,
"zone_id": "cbae638a-9d99-44aa-946c-0f5ffb7fc488"
},
"sensitive_attributes": [],
"private": "eyJlMmJmYjczMC1lY2FhLTExZTYtOGY4OC0zNDM2M2JjN2M0YzAiOnsiY3JlYXRlIjo2MDAwMDAwMDAwMDAsImRlbGV0ZSI6NjAwMDAwMDAwMDAwLCJ1cGRhdGUiOjYwMDAwMDAwMDAwMH19",
"dependencies": [
"data.terraform_remote_state.privnet_dns_router"
]
}
]
},
{
"mode": "managed",
"type": "openstack_objectstorage_container_v1",
"name": "keycloak_1",
"provider": "provider[\"registry.terraform.io/terraform-provider-openstack/openstack\"]",
"instances": [
{
"schema_version": 1,
"attributes": {
"container_read": null,
"container_sync_key": null,
"container_sync_to": null,
"container_write": null,
"content_type": null,
"force_destroy": null,
"id": "keycloak",
"metadata": null,
"name": "keycloak",
"region": "isti_area_pi_1",
"storage_policy": "default-placement",
"versioning": false,
"versioning_legacy": []
},
"sensitive_attributes": [],
"private": "eyJzY2hlbWFfdmVyc2lvbiI6IjEifQ=="
}
]
},
{
"module": "module.instance_without_data_volume",
"module": "module.keycloak",
"mode": "managed",
"type": "openstack_compute_instance_v2",
"name": "smartgears_service",
"name": "keycloak",
"provider": "provider[\"registry.terraform.io/terraform-provider-openstack/openstack\"]",
"instances": [
{
"index_key": "keycloak",
"index_key": 0,
"schema_version": 0,
"attributes": {
"access_ip_v4": "10.1.28.218",
"access_ip_v4": "10.1.31.104",
"access_ip_v6": "",
"admin_pass": null,
"all_metadata": {},
@ -515,34 +816,34 @@
}
],
"config_drive": null,
"created": "2023-12-14 15:47:39 +0000 UTC",
"created": "2024-03-22 14:02:30 +0000 UTC",
"flavor_id": "4",
"flavor_name": "m1.medium",
"floating_ip": null,
"force_delete": false,
"id": "40dfb5fb-ec19-4f51-9fd6-1b1be47f66bb",
"id": "1d087839-d883-4e25-a2ee-a596640e3dff",
"image_id": "Attempt to boot from volume - no image supplied",
"image_name": null,
"key_pair": "mauromugnaini",
"key_pair": "adellam",
"metadata": null,
"name": "keycloak",
"name": "keycloak-01",
"network": [
{
"access_network": false,
"fixed_ip_v4": "10.1.28.218",
"fixed_ip_v4": "10.1.31.104",
"fixed_ip_v6": "",
"floating_ip": "",
"mac": "fa:16:3e:ca:dc:34",
"mac": "fa:16:3e:21:8f:df",
"name": "d4s-dev-cloud-main",
"port": "",
"uuid": "e0af5eba-f24a-4d0d-8184-bc654b980c4a"
},
{
"access_network": false,
"fixed_ip_v4": "192.168.2.143",
"fixed_ip_v4": "192.168.2.101",
"fixed_ip_v6": "",
"floating_ip": "",
"mac": "fa:16:3e:76:7c:b5",
"mac": "fa:16:3e:f8:d3:0b",
"name": "postgresql-srv-net",
"port": "",
"uuid": "00422a4a-4b8b-4c85-acf9-ef733df842b9"
@ -552,26 +853,383 @@
"personality": [],
"power_state": "active",
"region": "isti_area_pi_1",
"scheduler_hints": [],
"scheduler_hints": [
{
"additional_properties": {},
"build_near_host_ip": "",
"different_cell": [],
"different_host": [],
"group": "23506021-0871-472e-b8f2-199ccdca8ec7",
"query": [],
"same_host": [],
"target_cell": ""
}
],
"security_groups": [
"default",
"traffic_from_the_main_load_balancers"
"keycloak_cluster_traffic",
"traffic_to_keycloak_from_the_main_load_balancers"
],
"stop_before_destroy": false,
"tags": [],
"timeouts": null,
"updated": "2023-12-14 15:48:18 +0000 UTC",
"user_data": "bb83b25fd1219aa1b850ece9be8d7b0f31714608",
"updated": "2024-03-22 14:04:26 +0000 UTC",
"user_data": "47d4769e61324c305c4b70ed6673de4fad84150d",
"vendor_options": [],
"volume": []
},
"sensitive_attributes": [],
"private": "eyJlMmJmYjczMC1lY2FhLTExZTYtOGY4OC0zNDM2M2JjN2M0YzAiOnsiY3JlYXRlIjoxODAwMDAwMDAwMDAwLCJkZWxldGUiOjE4MDAwMDAwMDAwMDAsInVwZGF0ZSI6MTgwMDAwMDAwMDAwMH19",
"dependencies": [
"data.terraform_remote_state.privnet_dns_router"
"module.keycloak.data.terraform_remote_state.privnet_dns_router",
"module.keycloak.openstack_compute_servergroup_v2.keycloak_server_group",
"module.keycloak.openstack_networking_secgroup_v2.keycloak_cluster_traffic",
"module.keycloak.openstack_networking_secgroup_v2.traffic_from_haproxy_to_keycloak"
]
}
]
},
{
"module": "module.keycloak",
"mode": "managed",
"type": "openstack_compute_servergroup_v2",
"name": "keycloak_server_group",
"provider": "provider[\"registry.terraform.io/terraform-provider-openstack/openstack\"]",
"instances": [
{
"schema_version": 0,
"attributes": {
"id": "23506021-0871-472e-b8f2-199ccdca8ec7",
"members": [
"1d087839-d883-4e25-a2ee-a596640e3dff"
],
"name": "keycloak",
"policies": [
"soft-anti-affinity"
],
"region": "isti_area_pi_1",
"rules": [
{
"max_server_per_host": 0
}
],
"value_specs": null
},
"sensitive_attributes": [],
"private": "bnVsbA=="
}
]
},
{
"module": "module.keycloak",
"mode": "managed",
"type": "openstack_dns_recordset_v2",
"name": "keycloak_dns_recordset",
"provider": "provider[\"registry.terraform.io/terraform-provider-openstack/openstack\"]",
"instances": [
{
"index_key": "keycloak_main_record",
"schema_version": 0,
"attributes": {
"description": "Keycloak dev endpoint",
"disable_status_check": false,
"id": "cbae638a-9d99-44aa-946c-0f5ffb7fc488/197bb339-e445-47e2-828b-e1b6b4da8368",
"name": "accounts.cloud-dev.d4science.org.",
"project_id": "e8f8ca72f30648a8b389b4e745ac83a9",
"records": [
"main-lb.cloud-dev.d4science.org."
],
"region": "isti_area_pi_1",
"timeouts": null,
"ttl": 8600,
"type": "CNAME",
"value_specs": null,
"zone_id": "cbae638a-9d99-44aa-946c-0f5ffb7fc488"
},
"sensitive_attributes": [],
"private": "eyJlMmJmYjczMC1lY2FhLTExZTYtOGY4OC0zNDM2M2JjN2M0YzAiOnsiY3JlYXRlIjo2MDAwMDAwMDAwMDAsImRlbGV0ZSI6NjAwMDAwMDAwMDAwLCJ1cGRhdGUiOjYwMDAwMDAwMDAwMH19",
"dependencies": [
"data.terraform_remote_state.privnet_dns_router",
"module.keycloak.data.terraform_remote_state.privnet_dns_router"
]
}
]
},
{
"module": "module.keycloak",
"mode": "managed",
"type": "openstack_networking_secgroup_rule_v2",
"name": "haproxy-l7-8443",
"provider": "provider[\"registry.terraform.io/terraform-provider-openstack/openstack\"]",
"instances": [
{
"index_key": "10.1.28.50",
"schema_version": 0,
"attributes": {
"description": "HTTPS traffic from HAPROXY L7 to Keycloak",
"direction": "ingress",
"ethertype": "IPv4",
"id": "ebc725ed-0133-46f4-a26c-498bfb4798b6",
"port_range_max": 9443,
"port_range_min": 9443,
"protocol": "tcp",
"region": "isti_area_pi_1",
"remote_group_id": "",
"remote_ip_prefix": "10.1.28.50/32",
"security_group_id": "cbbd4036-e1c4-43ac-80cd-24d3fbbef692",
"tenant_id": "e8f8ca72f30648a8b389b4e745ac83a9",
"timeouts": null
},
"sensitive_attributes": [],
"private": "eyJlMmJmYjczMC1lY2FhLTExZTYtOGY4OC0zNDM2M2JjN2M0YzAiOnsiZGVsZXRlIjo2MDAwMDAwMDAwMDB9fQ==",
"dependencies": [
"module.keycloak.data.terraform_remote_state.privnet_dns_router",
"module.keycloak.openstack_networking_secgroup_v2.traffic_from_haproxy_to_keycloak"
]
},
{
"index_key": "10.1.30.241",
"schema_version": 0,
"attributes": {
"description": "HTTPS traffic from HAPROXY L7 to Keycloak",
"direction": "ingress",
"ethertype": "IPv4",
"id": "21b774d6-b0f2-4b2e-841e-32f5cb2e842a",
"port_range_max": 9443,
"port_range_min": 9443,
"protocol": "tcp",
"region": "isti_area_pi_1",
"remote_group_id": "",
"remote_ip_prefix": "10.1.30.241/32",
"security_group_id": "cbbd4036-e1c4-43ac-80cd-24d3fbbef692",
"tenant_id": "e8f8ca72f30648a8b389b4e745ac83a9",
"timeouts": null
},
"sensitive_attributes": [],
"private": "eyJlMmJmYjczMC1lY2FhLTExZTYtOGY4OC0zNDM2M2JjN2M0YzAiOnsiZGVsZXRlIjo2MDAwMDAwMDAwMDB9fQ==",
"dependencies": [
"module.keycloak.data.terraform_remote_state.privnet_dns_router",
"module.keycloak.openstack_networking_secgroup_v2.traffic_from_haproxy_to_keycloak"
]
}
]
},
{
"module": "module.keycloak",
"mode": "managed",
"type": "openstack_networking_secgroup_rule_v2",
"name": "igmp_egress_between_keycloak_nodes",
"provider": "provider[\"registry.terraform.io/terraform-provider-openstack/openstack\"]",
"instances": [
{
"schema_version": 0,
"attributes": {
"description": "Egress IGMP traffic between keycloak nodes",
"direction": "egress",
"ethertype": "IPv4",
"id": "0856a12c-f897-43a8-bdaa-91355930f1c0",
"port_range_max": 0,
"port_range_min": 0,
"protocol": "igmp",
"region": "isti_area_pi_1",
"remote_group_id": "",
"remote_ip_prefix": "0.0.0.0/0",
"security_group_id": "6d68b513-7ecd-43da-9cee-8f82b567049c",
"tenant_id": "e8f8ca72f30648a8b389b4e745ac83a9",
"timeouts": null
},
"sensitive_attributes": [],
"private": "eyJlMmJmYjczMC1lY2FhLTExZTYtOGY4OC0zNDM2M2JjN2M0YzAiOnsiZGVsZXRlIjo2MDAwMDAwMDAwMDB9fQ==",
"dependencies": [
"module.keycloak.openstack_networking_secgroup_v2.keycloak_cluster_traffic"
]
}
]
},
{
"module": "module.keycloak",
"mode": "managed",
"type": "openstack_networking_secgroup_rule_v2",
"name": "igmp_ingress_between_keycloak_nodes",
"provider": "provider[\"registry.terraform.io/terraform-provider-openstack/openstack\"]",
"instances": [
{
"schema_version": 0,
"attributes": {
"description": "Ingress IGMP traffic between keycloak nodes",
"direction": "ingress",
"ethertype": "IPv4",
"id": "3f6419b5-8079-4445-80dd-5bb259705664",
"port_range_max": 0,
"port_range_min": 0,
"protocol": "igmp",
"region": "isti_area_pi_1",
"remote_group_id": "",
"remote_ip_prefix": "0.0.0.0/0",
"security_group_id": "6d68b513-7ecd-43da-9cee-8f82b567049c",
"tenant_id": "e8f8ca72f30648a8b389b4e745ac83a9",
"timeouts": null
},
"sensitive_attributes": [],
"private": "eyJlMmJmYjczMC1lY2FhLTExZTYtOGY4OC0zNDM2M2JjN2M0YzAiOnsiZGVsZXRlIjo2MDAwMDAwMDAwMDB9fQ==",
"dependencies": [
"module.keycloak.openstack_networking_secgroup_v2.keycloak_cluster_traffic"
]
}
]
},
{
"module": "module.keycloak",
"mode": "managed",
"type": "openstack_networking_secgroup_rule_v2",
"name": "tcp_traffic_between_keycloak_nodes",
"provider": "provider[\"registry.terraform.io/terraform-provider-openstack/openstack\"]",
"instances": [
{
"index_key": 0,
"schema_version": 0,
"attributes": {
"description": "TCP traffic between keycloak nodes",
"direction": "ingress",
"ethertype": "IPv4",
"id": "399505c1-e0d3-4077-85d7-e000a46dfa8e",
"port_range_max": 0,
"port_range_min": 0,
"protocol": "tcp",
"region": "isti_area_pi_1",
"remote_group_id": "",
"remote_ip_prefix": "10.1.31.104/32",
"security_group_id": "6d68b513-7ecd-43da-9cee-8f82b567049c",
"tenant_id": "e8f8ca72f30648a8b389b4e745ac83a9",
"timeouts": null
},
"sensitive_attributes": [],
"private": "eyJlMmJmYjczMC1lY2FhLTExZTYtOGY4OC0zNDM2M2JjN2M0YzAiOnsiZGVsZXRlIjo2MDAwMDAwMDAwMDB9fQ==",
"dependencies": [
"module.keycloak.data.terraform_remote_state.privnet_dns_router",
"module.keycloak.openstack_compute_instance_v2.keycloak",
"module.keycloak.openstack_compute_servergroup_v2.keycloak_server_group",
"module.keycloak.openstack_networking_secgroup_v2.keycloak_cluster_traffic",
"module.keycloak.openstack_networking_secgroup_v2.traffic_from_haproxy_to_keycloak"
]
}
]
},
{
"module": "module.keycloak",
"mode": "managed",
"type": "openstack_networking_secgroup_rule_v2",
"name": "udp_traffic_between_keycloak_nodes",
"provider": "provider[\"registry.terraform.io/terraform-provider-openstack/openstack\"]",
"instances": [
{
"index_key": 0,
"schema_version": 0,
"attributes": {
"description": "UDP traffic between keycloak nodes",
"direction": "ingress",
"ethertype": "IPv4",
"id": "88c61a79-d86f-4f07-a0a7-91f0033b242a",
"port_range_max": 0,
"port_range_min": 0,
"protocol": "udp",
"region": "isti_area_pi_1",
"remote_group_id": "",
"remote_ip_prefix": "10.1.31.104/32",
"security_group_id": "6d68b513-7ecd-43da-9cee-8f82b567049c",
"tenant_id": "e8f8ca72f30648a8b389b4e745ac83a9",
"timeouts": null
},
"sensitive_attributes": [],
"private": "eyJlMmJmYjczMC1lY2FhLTExZTYtOGY4OC0zNDM2M2JjN2M0YzAiOnsiZGVsZXRlIjo2MDAwMDAwMDAwMDB9fQ==",
"dependencies": [
"module.keycloak.data.terraform_remote_state.privnet_dns_router",
"module.keycloak.openstack_compute_instance_v2.keycloak",
"module.keycloak.openstack_compute_servergroup_v2.keycloak_server_group",
"module.keycloak.openstack_networking_secgroup_v2.keycloak_cluster_traffic",
"module.keycloak.openstack_networking_secgroup_v2.traffic_from_haproxy_to_keycloak"
]
}
]
},
{
"module": "module.keycloak",
"mode": "managed",
"type": "openstack_networking_secgroup_v2",
"name": "keycloak_cluster_traffic",
"provider": "provider[\"registry.terraform.io/terraform-provider-openstack/openstack\"]",
"instances": [
{
"schema_version": 0,
"attributes": {
"all_tags": [],
"delete_default_rules": true,
"description": "Traffic between the keycloak cluster nodes",
"id": "6d68b513-7ecd-43da-9cee-8f82b567049c",
"name": "keycloak_cluster_traffic",
"region": "isti_area_pi_1",
"tags": [],
"tenant_id": "e8f8ca72f30648a8b389b4e745ac83a9",
"timeouts": null
},
"sensitive_attributes": [],
"private": "eyJlMmJmYjczMC1lY2FhLTExZTYtOGY4OC0zNDM2M2JjN2M0YzAiOnsiZGVsZXRlIjo2MDAwMDAwMDAwMDB9fQ=="
}
]
},
{
"module": "module.keycloak",
"mode": "managed",
"type": "openstack_networking_secgroup_v2",
"name": "traffic_from_haproxy_to_keycloak",
"provider": "provider[\"registry.terraform.io/terraform-provider-openstack/openstack\"]",
"instances": [
{
"schema_version": 0,
"attributes": {
"all_tags": [],
"delete_default_rules": true,
"description": "Allow traffic from the main L7 HAPROXY load balancers to keycloak",
"id": "cbbd4036-e1c4-43ac-80cd-24d3fbbef692",
"name": "traffic_to_keycloak_from_the_main_load_balancers",
"region": "isti_area_pi_1",
"tags": [],
"tenant_id": "e8f8ca72f30648a8b389b4e745ac83a9",
"timeouts": null
},
"sensitive_attributes": [],
"private": "eyJlMmJmYjczMC1lY2FhLTExZTYtOGY4OC0zNDM2M2JjN2M0YzAiOnsiZGVsZXRlIjo2MDAwMDAwMDAwMDB9fQ=="
}
]
},
{
"module": "module.keycloak",
"mode": "managed",
"type": "openstack_objectstorage_container_v1",
"name": "keycloak_1",
"provider": "provider[\"registry.terraform.io/terraform-provider-openstack/openstack\"]",
"instances": [
{
"schema_version": 1,
"attributes": {
"container_read": null,
"container_sync_key": null,
"container_sync_to": null,
"container_write": null,
"content_type": null,
"force_destroy": false,
"id": "keycloak-data-dev",
"metadata": null,
"name": "keycloak-data-dev",
"region": "isti_area_pi_1",
"storage_policy": "default-placement",
"versioning": false,
"versioning_legacy": []
},
"sensitive_attributes": [],
"private": "eyJzY2hlbWFfdmVyc2lvbiI6IjEifQ=="
}
]
}
],
"check_results": null

View File

@ -0,0 +1,55 @@
# NFS shares required by the CCP
# Create a NFS share for the repository data
#
resource "openstack_sharedfilesystem_share_v2" "ccp_dev_repository_data" {
name = "ccp_dev_repository_data"
description = "NFS share for the CCP repository data"
share_proto = "NFS"
size = 5
}
# Allow access to the NFS share
resource "openstack_sharedfilesystem_share_access_v2" "ccp_dev_repository_nfs_access" {
for_each = var.swarm_manila_interfaces_ip
share_id = openstack_sharedfilesystem_share_v2.ccp_dev_repository_data.id
access_type = "ip"
access_to = each.value
access_level = "rw"
}
# NFS shares required by the CCP
# Create a NFS share for the method logs
#
resource "openstack_sharedfilesystem_share_v2" "ccp_dev_methods_logs" {
name = "ccp_dev_method_logs"
description = "NFS share for the CCP method logs"
share_proto = "NFS"
size = 1
}
# Allow access to the NFS share
resource "openstack_sharedfilesystem_share_access_v2" "ccp_dev_methods_logs_nfs_access" {
for_each = var.swarm_manila_interfaces_ip
share_id = openstack_sharedfilesystem_share_v2.ccp_dev_methods_logs.id
access_type = "ip"
access_to = each.value
access_level = "rw"
}
output "ccp_dev_repository_data" {
value = openstack_sharedfilesystem_share_v2.ccp_dev_repository_data
}
output "ccp_dev_repository_data_nfs_acls" {
value = openstack_sharedfilesystem_share_access_v2.ccp_dev_repository_nfs_access
sensitive = true
}
output "ccp_dev_methods_logs" {
value = openstack_sharedfilesystem_share_v2.ccp_dev_methods_logs
}
output "ccp_dev_methods_logs_access_nfs_acls" {
value = openstack_sharedfilesystem_share_access_v2.ccp_dev_methods_logs_nfs_access
sensitive = true
}

View File

@ -0,0 +1,51 @@
# 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"
}
variable "swarm_manila_interfaces_ip" {
type = map(string)
default = {
"mgr_1" = "172.17.2.74"
"mgr_2" = "172.17.3.218"
"mgr_3" = "172.17.2.230"
"worker_1" = "172.17.0.166"
"worker_2" = "172.17.2.171"
"worker_3" = "172.17.0.146"
"worker_4" = "172.17.1.195"
"worker_5" = "172.17.2.187"
}
}

View File

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

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,162 @@
# Define required providers
terraform {
required_version = ">= 0.14.0"
required_providers {
openstack = {
source = "terraform-provider-openstack/openstack"
version = ">= 1.54.0"
}
}
}
data "terraform_remote_state" "privnet_dns_router" {
backend = "local"
config = {
path = "../project-setup/terraform.tfstate"
}
}
#
# Uses common_variables as module
#
module "common_variables" {
source = "../../modules/common_variables"
}
# Module used
module "ssh_settings" {
source = "../../modules/ssh-key-ref"
}
resource "openstack_blockstorage_volume_v3" "storagehub_3_dev_data_volume" {
name = "storagehub_3_data_volume"
size = "25"
}
resource "openstack_blockstorage_volume_v3" "storagehub_4_dev_data_volume" {
name = "storagehub_4_data_volume"
size = "25"
}
# Instances 3
resource "openstack_compute_instance_v2" "storagehub_3_dev" {
name = "storagehub-3"
availability_zone_hints = module.common_variables.availability_zone_no_gpu_name
flavor_name = "m2.small"
key_pair = module.ssh_settings.ssh_key_name
security_groups = [data.terraform_remote_state.privnet_dns_router.outputs.default_security_group_name, data.terraform_remote_state.privnet_dns_router.outputs.security_group_list.http_and_https_from_the_load_balancers]
block_device {
uuid = module.common_variables.ubuntu_2404.uuid
source_type = "image"
volume_size = 10
boot_index = 0
destination_type = "volume"
delete_on_termination = false
}
# Creates the networks according to input networks
dynamic "network" {
for_each = toset([data.terraform_remote_state.privnet_dns_router.outputs.main_private_network.name, module.common_variables.networks_list.shared_postgresql])
content {
name = network.value
}
}
# user_data script used
user_data = file("${module.common_variables.ubuntu_2404.user_data_file}")
# Do not replace the instance when the ssh key changes
lifecycle {
ignore_changes = [
# Ignore changes to tags, e.g. because a management agent
# updates these based on some ruleset managed elsewhere.
key_pair, user_data, network
]
}
}
# Instances 4
resource "openstack_compute_instance_v2" "storagehub_4_dev" {
name = "storagehub-4"
availability_zone_hints = module.common_variables.availability_zone_no_gpu_name
flavor_name = "m2.small"
key_pair = module.ssh_settings.ssh_key_name
security_groups = [data.terraform_remote_state.privnet_dns_router.outputs.default_security_group_name, data.terraform_remote_state.privnet_dns_router.outputs.security_group_list.http_and_https_from_the_load_balancers]
block_device {
uuid = module.common_variables.ubuntu_2404.uuid
source_type = "image"
volume_size = 10
boot_index = 0
destination_type = "volume"
delete_on_termination = false
}
# Creates the networks according to input networks
dynamic "network" {
for_each = toset([data.terraform_remote_state.privnet_dns_router.outputs.main_private_network.name, module.common_variables.networks_list.shared_postgresql])
content {
name = network.value
}
}
# user_data script used
user_data = file("${module.common_variables.ubuntu_2404.user_data_file}")
# Do not replace the instance when the ssh key changes
lifecycle {
ignore_changes = [
# Ignore changes to tags, e.g. because a management agent
# updates these based on some ruleset managed elsewhere.
key_pair, user_data, network
]
}
}
# Attach
resource "openstack_compute_volume_attach_v2" "storagehub_3_dev_attach" {
instance_id = openstack_compute_instance_v2.storagehub_3_dev.id
volume_id = openstack_blockstorage_volume_v3.storagehub_3_dev_data_volume.id
device = "/dev/vdb"
}
resource "openstack_compute_volume_attach_v2" "storagehub_4_dev_attach" {
instance_id = openstack_compute_instance_v2.storagehub_4_dev.id
volume_id = openstack_blockstorage_volume_v3.storagehub_4_dev_data_volume.id
device = "/dev/vdb"
}
locals {
cname_target = "main-lb.${data.terraform_remote_state.privnet_dns_router.outputs.dns_zone.zone_name}"
}
#
# Add DNS record/s
#
module "dns_records_create" {
source = "../../modules/dns_resources"
dns_resources_map = {
storagehub-3 = {
zone_id = data.terraform_remote_state.privnet_dns_router.outputs.dns_zone_id
name = join(".", ["storagehub-3", data.terraform_remote_state.privnet_dns_router.outputs.dns_zone.zone_name])
description = "StorageHub 3"
ttl = 8600
type = "CNAME"
records = [local.cname_target]
},
storagehub-4 = {
zone_id = data.terraform_remote_state.privnet_dns_router.outputs.dns_zone_id
name = join(".", ["storagehub-4", data.terraform_remote_state.privnet_dns_router.outputs.dns_zone.zone_name])
description = "StorageHub 4"
ttl = 8600
type = "CNAME"
records = [local.cname_target]
}
}
}

View File

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

View File

@ -0,0 +1,765 @@
{
"version": 4,
"terraform_version": "1.6.4",
"serial": 23,
"lineage": "7ae19997-17fe-7f03-9bcb-e326176791ba",
"outputs": {},
"resources": [
{
"mode": "data",
"type": "terraform_remote_state",
"name": "privnet_dns_router",
"provider": "provider[\"terraform.io/builtin/terraform\"]",
"instances": [
{
"schema_version": 0,
"attributes": {
"backend": "local",
"config": {
"value": {
"path": "../project-setup/terraform.tfstate"
},
"type": [
"object",
{
"path": "string"
}
]
},
"defaults": null,
"outputs": {
"value": {
"almalinux_9": {
"name": "AlmaLinux-9.0-20220718",
"uuid": "541650fc-dd19-4f38-bb1d-7333ed9dd688"
},
"availability_zone_no_gpu_name": "cnr-isti-nova-a",
"availability_zone_with_gpu_name": "cnr-isti-nova-gpu-a",
"availability_zones_names": {
"availability_zone_no_gpu": "cnr-isti-nova-a",
"availability_zone_with_gpu": "cnr-isti-nova-gpu-a"
},
"basic_services_ip": {
"ca": "10.1.29.247",
"ca_cidr": "10.1.29.247/32",
"haproxy_l7_1": "10.1.28.50",
"haproxy_l7_1_cidr": "10.1.28.50/32",
"haproxy_l7_2": "10.1.30.241",
"haproxy_l7_2_cidr": "10.1.30.241/32",
"octavia_main": "10.1.28.227",
"octavia_main_cidr": "10.1.28.227/32",
"prometheus": "10.1.30.129",
"prometheus_cidr": "10.1.30.129/32",
"ssh_jump": "10.1.29.164",
"ssh_jump_cidr": "10.1.29.164/32"
},
"centos_7": {
"name": "CentOS-7",
"uuid": "f0187a99-64f6-462a-ab5f-ef52fe62f2ca"
},
"default_security_group_name": "default",
"dns_zone": {
"description": "DNS primary zone for the d4s-dev-cloud project",
"email": "postmaster@isti.cnr.it",
"ttl": "8600",
"zone_name": "cloud-dev.d4science.org."
},
"dns_zone_id": "cbae638a-9d99-44aa-946c-0f5ffb7fc488",
"el7_data_file": "../../openstack_vm_data_scripts/el7.sh",
"external_gateway_ip": [
{
"ip_address": "146.48.31.109",
"subnet_id": "57f87509-4016-46fb-b8c3-25fca7f72ccb"
}
],
"external_network": {
"id": "1d2ff137-6ff7-4017-be2b-0d6c4af2353b",
"name": "external-network"
},
"external_network_id": "1d2ff137-6ff7-4017-be2b-0d6c4af2353b",
"external_router": {
"description": "D4Science DEV main router",
"id": "2ae28c5f-036b-45db-bc9f-5bab8fa3e914",
"name": "d4s-dev-cloud-external-router"
},
"flavor_list": {
"c1_large": "c1.large",
"c1_medium": "c1.medium",
"c1_small": "c1.small",
"c2_large": "c2.large",
"m1_large": "m1.large",
"m1_medium": "m1.medium",
"m1_xlarge": "m1.xlarge",
"m1_xxl": "m1.xxl",
"m2_large": "m2.large",
"m2_medium": "m2.medium",
"m2_small": "m2.small",
"m3_large": "m3.large"
},
"floating_ip_pools": {
"main_public_ip_pool": "external-network"
},
"haproxy_l7_data": {
"flavor": "m1.medium",
"haproxy_1": "haproxy-l7-1",
"haproxy_2": "haproxy-l7-2",
"name": "main-haproxy-l7",
"vm_count": "2"
},
"internal_ca_data": {
"flavor": "m1.small",
"name": "ca"
},
"main_haproxy_l7_ip": [
"10.1.28.50",
"10.1.30.241"
],
"main_private_network": {
"description": "D4Science DEV private network (use this as the main network)",
"name": "d4s-dev-cloud-main"
},
"main_private_network_id": "e0af5eba-f24a-4d0d-8184-bc654b980c4a",
"main_private_subnet": {
"allocation_end": "10.1.31.254",
"allocation_start": "10.1.28.30",
"cidr": "10.1.28.0/22",
"description": "D4Science DEV main private subnet",
"gateway_ip": "10.1.28.1",
"name": "d4s-dev-cloud-sub"
},
"main_region": "isti_area_pi_1",
"main_subnet_network_id": "2aa977f2-80b4-447c-a6b0-dfa06bf68751",
"mtu_size": 8942,
"networks_list": {
"cassandra": "cassandra-net",
"orientdb": "orientdb-net",
"orientdb_se": "orientdb-se-net",
"shared_postgresql": "postgresql-srv-net",
"swarm": "swarm-nfs-net",
"timescaledb": "timescaledb-net"
},
"networks_with_d4s_services": {
"garr_ct1_net": "90.147.166.0/23",
"garr_na_net": "90.147.152.0/24",
"garr_pa1_net": "90.147.188.0/23",
"infrascience_net": "146.48.122.0/23",
"isti_net": "146.48.80.0/21",
"s2i2s_net": "146.48.28.0/22"
},
"nfs_share_no_ingress_secgroup_id": "5887da8d-e362-4509-93ac-8a70bf8baef9",
"octavia_information": {
"main_lb_description": "Main L4 load balancer for the D4Science DEV",
"main_lb_hostname": "main-lb",
"main_lb_name": "lb-dev-l4",
"octavia_flavor": "octavia_amphora-mvcpu-ha",
"octavia_flavor_id": "394988b5-6603-4a1e-a939-8e177c6681c7"
},
"os_project_data": {
"id": "e8f8ca72f30648a8b389b4e745ac83a9"
},
"policy_list": {
"affinity": "affinity",
"anti_affinity": "anti-affinity",
"soft_affinity": "soft-affinity",
"soft_anti_affinity": "soft-anti-affinity"
},
"prometheus_server_data": {
"flavor": "m1.medium",
"name": "prometheus",
"public_grafana_server_cidr": "146.48.28.103/32",
"vol_data_device": "/dev/vdb",
"vol_data_name": "prometheus-data",
"vol_data_size": "100"
},
"resolvers_ip": [
"146.48.29.97",
"146.48.29.98",
"146.48.29.99"
],
"resource_registry_addresses": {},
"security_group_list": {
"acaland": "acaland's dev machine",
"access_to_orientdb": "access_to_orientdb",
"access_to_orientdb_se": "access_to_orientdb_se",
"access_to_the_timescaledb_service": "access_to_the_timescaledb_service",
"cassandra": "Cassandra",
"dataminer-publish": "dataminer-publish",
"debugging_from_jump_node": "debugging_from_jump_node",
"default": "default",
"docker_swarm": "Docker Swarm",
"docker_swarm_NFS": "Docker Swarm NFS",
"haproxy": "traffic_from_main_lb_to_haproxy_l7",
"http_and_https_from_the_load_balancers": "traffic_from_the_main_load_balancers",
"limited_HTTPS_access": "restricted_web_service",
"limited_SSH_access": "Limited SSH access",
"mongo": "mongo",
"nfs_share_no_ingress": "nfs_share_no_ingress",
"orientdb_internal_docker_traffic": "orientdb_internal_docker_traffic",
"postgreSQL": "PostgreSQL service",
"public_HTTPS": "Public HTTPS"
},
"shared_postgresql_server_data": {
"allocation_pool_end": "192.168.3.254",
"allocation_pool_start": "192.168.0.100",
"flavor": "m1.medium",
"name": "shared-postgresql-server",
"network_cidr": "192.168.0.0/22",
"network_description": "Network used to communicate with the shared postgresql service",
"network_name": "postgresql-srv-net",
"server_cidr": "192.168.0.5/22",
"server_ip": "192.168.0.5",
"vol_data_device": "/dev/vdb",
"vol_data_name": "shared-postgresql-data",
"vol_data_size": "100"
},
"smartexecutor_addresses": {},
"ssh_jump_proxy": {
"flavor": "m2.small",
"name": "ssh-jump-proxy"
},
"ssh_sources": {
"d4s_vpn_1_cidr": "146.48.122.27/32",
"d4s_vpn_2_cidr": "146.48.122.49/32",
"infrascience_net_cidr": "146.48.122.0/23",
"s2i2s_vpn_1_cidr": "146.48.28.10/32",
"s2i2s_vpn_2_cidr": "146.48.28.11/32",
"shell_d4s_cidr": "146.48.122.95/32"
},
"storage_nfs_network_id": "5f4023cc-4016-404c-94e5-86220095fbaf",
"storage_nfs_subnet_id": "6ff0f9e8-0e74-4cc3-a268-7ed4af435696",
"ubuntu1804_data_file": "../../openstack_vm_data_scripts/ubuntu1804.sh",
"ubuntu2204_data_file": "../../openstack_vm_data_scripts/ubuntu2204.sh",
"ubuntu_1804": {
"name": "Ubuntu-Bionic-18.04",
"user_data_file": "../../openstack_vm_data_scripts/ubuntu1804.sh",
"uuid": "7ed6a2cd-2b07-482e-8ce4-f018dff16c89"
},
"ubuntu_2204": {
"name": "Ubuntu-Jammy-22.04",
"user_data_file": "../../openstack_vm_data_scripts/ubuntu2204.sh",
"uuid": "54768889-8556-4be4-a2eb-82a4d9b34627"
}
},
"type": [
"object",
{
"almalinux_9": [
"map",
"string"
],
"availability_zone_no_gpu_name": "string",
"availability_zone_with_gpu_name": "string",
"availability_zones_names": [
"map",
"string"
],
"basic_services_ip": [
"map",
"string"
],
"centos_7": [
"map",
"string"
],
"default_security_group_name": "string",
"dns_zone": [
"map",
"string"
],
"dns_zone_id": "string",
"el7_data_file": "string",
"external_gateway_ip": [
"list",
[
"object",
{
"ip_address": "string",
"subnet_id": "string"
}
]
],
"external_network": [
"map",
"string"
],
"external_network_id": "string",
"external_router": [
"map",
"string"
],
"flavor_list": [
"map",
"string"
],
"floating_ip_pools": [
"map",
"string"
],
"haproxy_l7_data": [
"map",
"string"
],
"internal_ca_data": [
"map",
"string"
],
"main_haproxy_l7_ip": [
"list",
"string"
],
"main_private_network": [
"map",
"string"
],
"main_private_network_id": "string",
"main_private_subnet": [
"map",
"string"
],
"main_region": "string",
"main_subnet_network_id": "string",
"mtu_size": "number",
"networks_list": [
"map",
"string"
],
"networks_with_d4s_services": [
"map",
"string"
],
"nfs_share_no_ingress_secgroup_id": "string",
"octavia_information": [
"map",
"string"
],
"os_project_data": [
"map",
"string"
],
"policy_list": [
"map",
"string"
],
"prometheus_server_data": [
"map",
"string"
],
"resolvers_ip": [
"list",
"string"
],
"resource_registry_addresses": [
"map",
"string"
],
"security_group_list": [
"map",
"string"
],
"shared_postgresql_server_data": [
"map",
"string"
],
"smartexecutor_addresses": [
"map",
"string"
],
"ssh_jump_proxy": [
"map",
"string"
],
"ssh_sources": [
"map",
"string"
],
"storage_nfs_network_id": "string",
"storage_nfs_subnet_id": "string",
"ubuntu1804_data_file": "string",
"ubuntu2204_data_file": "string",
"ubuntu_1804": [
"map",
"string"
],
"ubuntu_2204": [
"map",
"string"
]
}
]
},
"workspace": null
},
"sensitive_attributes": []
}
]
},
{
"mode": "managed",
"type": "openstack_blockstorage_volume_v3",
"name": "storagehub_3_dev_data_volume",
"provider": "provider[\"registry.terraform.io/terraform-provider-openstack/openstack\"]",
"instances": [
{
"schema_version": 0,
"attributes": {
"attachment": [
{
"device": "/dev/vdb",
"id": "760379aa-ba97-4d23-9e84-e10ddb7aae88",
"instance_id": "28fafca3-13db-48ce-8453-ae5a1bfd8640"
}
],
"availability_zone": "nova",
"backup_id": "",
"consistency_group_id": null,
"description": "",
"enable_online_resize": null,
"id": "760379aa-ba97-4d23-9e84-e10ddb7aae88",
"image_id": null,
"metadata": {},
"name": "storagehub_3_data_volume",
"region": "isti_area_pi_1",
"scheduler_hints": [],
"size": 25,
"snapshot_id": "",
"source_replica": null,
"source_vol_id": "",
"timeouts": null,
"volume_type": "cephUnencrypted"
},
"sensitive_attributes": [],
"private": "eyJlMmJmYjczMC1lY2FhLTExZTYtOGY4OC0zNDM2M2JjN2M0YzAiOnsiY3JlYXRlIjo2MDAwMDAwMDAwMDAsImRlbGV0ZSI6NjAwMDAwMDAwMDAwfX0="
}
]
},
{
"mode": "managed",
"type": "openstack_blockstorage_volume_v3",
"name": "storagehub_4_dev_data_volume",
"provider": "provider[\"registry.terraform.io/terraform-provider-openstack/openstack\"]",
"instances": [
{
"schema_version": 0,
"attributes": {
"attachment": [
{
"device": "/dev/vdb",
"id": "ffd82b63-0c07-4f0b-88fb-a6f3bdfd8d6b",
"instance_id": "52622dd4-4f62-4405-b4cd-ab4b43bab9ea"
}
],
"availability_zone": "nova",
"backup_id": "",
"consistency_group_id": null,
"description": "",
"enable_online_resize": null,
"id": "ffd82b63-0c07-4f0b-88fb-a6f3bdfd8d6b",
"image_id": null,
"metadata": {},
"name": "storagehub_4_data_volume",
"region": "isti_area_pi_1",
"scheduler_hints": [],
"size": 25,
"snapshot_id": "",
"source_replica": null,
"source_vol_id": "",
"timeouts": null,
"volume_type": "cephUnencrypted"
},
"sensitive_attributes": [],
"private": "eyJlMmJmYjczMC1lY2FhLTExZTYtOGY4OC0zNDM2M2JjN2M0YzAiOnsiY3JlYXRlIjo2MDAwMDAwMDAwMDAsImRlbGV0ZSI6NjAwMDAwMDAwMDAwfX0="
}
]
},
{
"mode": "managed",
"type": "openstack_compute_instance_v2",
"name": "storagehub_3_dev",
"provider": "provider[\"registry.terraform.io/terraform-provider-openstack/openstack\"]",
"instances": [
{
"schema_version": 0,
"attributes": {
"access_ip_v4": "10.1.30.146",
"access_ip_v6": "",
"admin_pass": null,
"all_metadata": {},
"all_tags": [],
"availability_zone": "cnr-isti-nova-a",
"availability_zone_hints": "cnr-isti-nova-a",
"block_device": [
{
"boot_index": 0,
"delete_on_termination": false,
"destination_type": "volume",
"device_type": "",
"disk_bus": "",
"guest_format": "",
"multiattach": false,
"source_type": "image",
"uuid": "fc3f705d-3cf5-4866-8ef6-ff6e2cdd4075",
"volume_size": 10,
"volume_type": ""
}
],
"config_drive": null,
"created": "2024-07-19 15:43:11 +0000 UTC",
"flavor_id": "10",
"flavor_name": "m2.small",
"force_delete": false,
"id": "28fafca3-13db-48ce-8453-ae5a1bfd8640",
"image_id": "Attempt to boot from volume - no image supplied",
"image_name": null,
"key_pair": "Giancarlo Panichi",
"metadata": null,
"name": "storagehub-3",
"network": [
{
"access_network": false,
"fixed_ip_v4": "10.1.30.146",
"fixed_ip_v6": "",
"mac": "fa:16:3e:58:5b:29",
"name": "d4s-dev-cloud-main",
"port": "",
"uuid": "e0af5eba-f24a-4d0d-8184-bc654b980c4a"
},
{
"access_network": false,
"fixed_ip_v4": "192.168.2.6",
"fixed_ip_v6": "",
"mac": "fa:16:3e:82:98:4e",
"name": "postgresql-srv-net",
"port": "",
"uuid": "00422a4a-4b8b-4c85-acf9-ef733df842b9"
}
],
"network_mode": null,
"personality": [],
"power_state": "active",
"region": "isti_area_pi_1",
"scheduler_hints": [],
"security_groups": [
"default",
"traffic_from_the_main_load_balancers"
],
"stop_before_destroy": false,
"tags": [],
"timeouts": null,
"updated": "2024-11-12 14:14:47 +0000 UTC",
"user_data": "",
"vendor_options": []
},
"sensitive_attributes": [],
"private": "eyJlMmJmYjczMC1lY2FhLTExZTYtOGY4OC0zNDM2M2JjN2M0YzAiOnsiY3JlYXRlIjoxODAwMDAwMDAwMDAwLCJkZWxldGUiOjE4MDAwMDAwMDAwMDAsInVwZGF0ZSI6MTgwMDAwMDAwMDAwMH19",
"dependencies": [
"data.terraform_remote_state.privnet_dns_router"
]
}
]
},
{
"mode": "managed",
"type": "openstack_compute_instance_v2",
"name": "storagehub_4_dev",
"provider": "provider[\"registry.terraform.io/terraform-provider-openstack/openstack\"]",
"instances": [
{
"schema_version": 0,
"attributes": {
"access_ip_v4": "10.1.29.195",
"access_ip_v6": "",
"admin_pass": null,
"all_metadata": {},
"all_tags": [],
"availability_zone": "cnr-isti-nova-a",
"availability_zone_hints": "cnr-isti-nova-a",
"block_device": [
{
"boot_index": 0,
"delete_on_termination": false,
"destination_type": "volume",
"device_type": "",
"disk_bus": "",
"guest_format": "",
"multiattach": false,
"source_type": "image",
"uuid": "fc3f705d-3cf5-4866-8ef6-ff6e2cdd4075",
"volume_size": 10,
"volume_type": ""
}
],
"config_drive": null,
"created": "2024-10-07 10:05:52 +0000 UTC",
"flavor_id": "10",
"flavor_name": "m2.small",
"force_delete": false,
"id": "52622dd4-4f62-4405-b4cd-ab4b43bab9ea",
"image_id": "Attempt to boot from volume - no image supplied",
"image_name": null,
"key_pair": "Giancarlo Panichi",
"metadata": null,
"name": "storagehub-4",
"network": [
{
"access_network": false,
"fixed_ip_v4": "10.1.29.195",
"fixed_ip_v6": "",
"mac": "fa:16:3e:2f:58:d8",
"name": "d4s-dev-cloud-main",
"port": "",
"uuid": "e0af5eba-f24a-4d0d-8184-bc654b980c4a"
},
{
"access_network": false,
"fixed_ip_v4": "192.168.2.221",
"fixed_ip_v6": "",
"mac": "fa:16:3e:29:f9:b8",
"name": "postgresql-srv-net",
"port": "",
"uuid": "00422a4a-4b8b-4c85-acf9-ef733df842b9"
}
],
"network_mode": null,
"personality": [],
"power_state": "active",
"region": "isti_area_pi_1",
"scheduler_hints": [],
"security_groups": [
"default",
"traffic_from_the_main_load_balancers"
],
"stop_before_destroy": false,
"tags": [],
"timeouts": null,
"updated": "2024-11-12 14:14:48 +0000 UTC",
"user_data": "",
"vendor_options": []
},
"sensitive_attributes": [],
"private": "eyJlMmJmYjczMC1lY2FhLTExZTYtOGY4OC0zNDM2M2JjN2M0YzAiOnsiY3JlYXRlIjoxODAwMDAwMDAwMDAwLCJkZWxldGUiOjE4MDAwMDAwMDAwMDAsInVwZGF0ZSI6MTgwMDAwMDAwMDAwMH19",
"dependencies": [
"data.terraform_remote_state.privnet_dns_router"
]
}
]
},
{
"mode": "managed",
"type": "openstack_compute_volume_attach_v2",
"name": "storagehub_3_dev_attach",
"provider": "provider[\"registry.terraform.io/terraform-provider-openstack/openstack\"]",
"instances": [
{
"schema_version": 0,
"attributes": {
"device": "/dev/vdb",
"id": "28fafca3-13db-48ce-8453-ae5a1bfd8640/760379aa-ba97-4d23-9e84-e10ddb7aae88",
"instance_id": "28fafca3-13db-48ce-8453-ae5a1bfd8640",
"multiattach": null,
"region": "isti_area_pi_1",
"tag": null,
"timeouts": null,
"vendor_options": [],
"volume_id": "760379aa-ba97-4d23-9e84-e10ddb7aae88"
},
"sensitive_attributes": [],
"private": "eyJlMmJmYjczMC1lY2FhLTExZTYtOGY4OC0zNDM2M2JjN2M0YzAiOnsiY3JlYXRlIjo2MDAwMDAwMDAwMDAsImRlbGV0ZSI6NjAwMDAwMDAwMDAwfX0=",
"dependencies": [
"data.terraform_remote_state.privnet_dns_router",
"openstack_blockstorage_volume_v3.storagehub_3_dev_data_volume",
"openstack_compute_instance_v2.storagehub_3_dev"
]
}
]
},
{
"mode": "managed",
"type": "openstack_compute_volume_attach_v2",
"name": "storagehub_4_dev_attach",
"provider": "provider[\"registry.terraform.io/terraform-provider-openstack/openstack\"]",
"instances": [
{
"schema_version": 0,
"attributes": {
"device": "/dev/vdb",
"id": "52622dd4-4f62-4405-b4cd-ab4b43bab9ea/ffd82b63-0c07-4f0b-88fb-a6f3bdfd8d6b",
"instance_id": "52622dd4-4f62-4405-b4cd-ab4b43bab9ea",
"multiattach": null,
"region": "isti_area_pi_1",
"tag": null,
"timeouts": null,
"vendor_options": [],
"volume_id": "ffd82b63-0c07-4f0b-88fb-a6f3bdfd8d6b"
},
"sensitive_attributes": [],
"private": "eyJlMmJmYjczMC1lY2FhLTExZTYtOGY4OC0zNDM2M2JjN2M0YzAiOnsiY3JlYXRlIjo2MDAwMDAwMDAwMDAsImRlbGV0ZSI6NjAwMDAwMDAwMDAwfX0=",
"dependencies": [
"data.terraform_remote_state.privnet_dns_router",
"openstack_blockstorage_volume_v3.storagehub_4_dev_data_volume",
"openstack_compute_instance_v2.storagehub_4_dev"
]
}
]
},
{
"module": "module.dns_records_create",
"mode": "managed",
"type": "openstack_dns_recordset_v2",
"name": "add_dns_recordset",
"provider": "provider[\"registry.terraform.io/terraform-provider-openstack/openstack\"]",
"instances": [
{
"index_key": "storagehub-3",
"schema_version": 0,
"attributes": {
"description": "StorageHub 3",
"disable_status_check": false,
"id": "cbae638a-9d99-44aa-946c-0f5ffb7fc488/e810a552-62bf-451d-b78b-45138988b853",
"name": "storagehub-3.cloud-dev.d4science.org.",
"project_id": "e8f8ca72f30648a8b389b4e745ac83a9",
"records": [
"main-lb.cloud-dev.d4science.org."
],
"region": "isti_area_pi_1",
"timeouts": null,
"ttl": 8600,
"type": "CNAME",
"value_specs": null,
"zone_id": "cbae638a-9d99-44aa-946c-0f5ffb7fc488"
},
"sensitive_attributes": [],
"private": "eyJlMmJmYjczMC1lY2FhLTExZTYtOGY4OC0zNDM2M2JjN2M0YzAiOnsiY3JlYXRlIjo2MDAwMDAwMDAwMDAsImRlbGV0ZSI6NjAwMDAwMDAwMDAwLCJ1cGRhdGUiOjYwMDAwMDAwMDAwMH19",
"dependencies": [
"data.terraform_remote_state.privnet_dns_router"
]
},
{
"index_key": "storagehub-4",
"schema_version": 0,
"attributes": {
"description": "StorageHub 4",
"disable_status_check": false,
"id": "cbae638a-9d99-44aa-946c-0f5ffb7fc488/7c13f300-98b2-42a2-a261-bcc616d85cbe",
"name": "storagehub-4.cloud-dev.d4science.org.",
"project_id": "e8f8ca72f30648a8b389b4e745ac83a9",
"records": [
"main-lb.cloud-dev.d4science.org."
],
"region": "isti_area_pi_1",
"timeouts": null,
"ttl": 8600,
"type": "CNAME",
"value_specs": null,
"zone_id": "cbae638a-9d99-44aa-946c-0f5ffb7fc488"
},
"sensitive_attributes": [],
"private": "eyJlMmJmYjczMC1lY2FhLTExZTYtOGY4OC0zNDM2M2JjN2M0YzAiOnsiY3JlYXRlIjo2MDAwMDAwMDAwMDAsImRlbGV0ZSI6NjAwMDAwMDAwMDAwLCJ1cGRhdGUiOjYwMDAwMDAwMDAwMH19",
"dependencies": [
"data.terraform_remote_state.privnet_dns_router"
]
}
]
}
],
"check_results": null
}

View File

@ -1,7 +1,7 @@
{
"version": 4,
"terraform_version": "1.6.6",
"serial": 263,
"terraform_version": "1.7.5",
"serial": 267,
"lineage": "6a53b692-c1a8-ed53-bc6c-b7fb5e017eb8",
"outputs": {
"almalinux_9": {
@ -114,6 +114,8 @@
"c1_medium": "c1.medium",
"c1_small": "c1.small",
"c2_large": "c2.large",
"d1_large": "d1.large",
"d1_medium": "d1.medium",
"m1_large": "m1.large",
"m1_medium": "m1.medium",
"m1_xlarge": "m1.xlarge",
@ -208,6 +210,7 @@
},
"networks_list": {
"value": {
"cassandra": "cassandra-net",
"orientdb": "orientdb-net",
"orientdb_se": "orientdb-se-net",
"shared_postgresql": "postgresql-srv-net",
@ -270,6 +273,10 @@
"string"
]
},
"prometheus_public_ip_address": {
"value": "146.48.29.203",
"type": "string"
},
"prometheus_server_data": {
"value": {
"flavor": "m1.medium",
@ -284,6 +291,10 @@
"string"
]
},
"prometheus_server_hostname": {
"value": "prometheus.cloud-pre.d4science.org.",
"type": "string"
},
"resolvers_ip": {
"value": [
"146.48.29.97",
@ -319,6 +330,7 @@
"limited_HTTPS_access": "restricted_web_service",
"limited_SSH_access": "Limited SSH access",
"mongo": "mongo",
"nfs_share_no_ingress": "nfs_share_no_ingress",
"orientdb_internal_docker_traffic": "orientdb_internal_docker_traffic",
"postgreSQL": "PostgreSQL service",
"public_HTTPS": "Public HTTPS"
@ -332,7 +344,7 @@
"value": {
"allocation_pool_end": "192.168.3.254",
"allocation_pool_start": "192.168.0.100",
"flavor": "m1.medium",
"flavor": "m1.large",
"name": "shared-postgresql-server",
"network_cidr": "192.168.0.0/22",
"network_description": "Network used to communicate with the shared postgresql service",
@ -538,6 +550,7 @@
"main_subnet_network_id": "cd77a2fd-4a36-4254-b1d0-70b3874c6d04",
"mtu_size": 8942,
"networks_list": {
"cassandra": "cassandra-net",
"orientdb": "orientdb-net",
"orientdb_se": "orientdb-se-net",
"shared_postgresql": "postgresql-srv-net",
@ -552,6 +565,7 @@
"isti_net": "146.48.80.0/21",
"s2i2s_net": "146.48.28.0/22"
},
"nfs_share_no_ingress_secgroup_id": "ddb16502-7217-4677-a8a7-ca0cbf9a779a",
"octavia_information": {
"main_lb_description": "Main L4 load balancer for the D4Science PRE production",
"main_lb_hostname": "main-lb",
@ -574,7 +588,7 @@
"prometheus_server_data": {
"flavor": "m1.medium",
"name": "prometheus",
"public_grafana_server_cidr": "146.48.122.132/32",
"public_grafana_server_cidr": "146.48.28.103/32",
"vol_data_device": "/dev/vdb",
"vol_data_name": "prometheus-data",
"vol_data_size": "100"
@ -601,6 +615,7 @@
"limited_HTTPS_access": "restricted_web_service",
"limited_SSH_access": "Limited SSH access",
"mongo": "mongo",
"nfs_share_no_ingress": "nfs_share_no_ingress",
"orientdb_internal_docker_traffic": "orientdb_internal_docker_traffic",
"postgreSQL": "PostgreSQL service",
"public_HTTPS": "Public HTTPS"
@ -632,6 +647,8 @@
"s2i2s_vpn_2_cidr": "146.48.28.11/32",
"shell_d4s_cidr": "146.48.122.95/32"
},
"storage_nfs_network_id": "5f4023cc-4016-404c-94e5-86220095fbaf",
"storage_nfs_subnet_id": "6ff0f9e8-0e74-4cc3-a268-7ed4af435696",
"ubuntu1804_data_file": "../../openstack_vm_data_scripts/ubuntu1804.sh",
"ubuntu2204_data_file": "../../openstack_vm_data_scripts/ubuntu2204.sh",
"ubuntu_1804": {
@ -732,6 +749,7 @@
"map",
"string"
],
"nfs_share_no_ingress_secgroup_id": "string",
"octavia_information": [
"map",
"string"
@ -776,6 +794,8 @@
"map",
"string"
],
"storage_nfs_network_id": "string",
"storage_nfs_subnet_id": "string",
"ubuntu1804_data_file": "string",
"ubuntu2204_data_file": "string",
"ubuntu_1804": [
@ -1297,8 +1317,8 @@
],
"config_drive": null,
"created": "2023-11-05 14:54:15 +0000 UTC",
"flavor_id": "4",
"flavor_name": "m1.medium",
"flavor_id": "9",
"flavor_name": "m1.large",
"floating_ip": null,
"force_delete": false,
"id": "9ede65c7-70ca-4698-8551-754aa4f6fa1e",
@ -1341,8 +1361,8 @@
"stop_before_destroy": false,
"tags": [],
"timeouts": null,
"updated": "2023-11-05 14:54:48 +0000 UTC",
"user_data": "bb83b25fd1219aa1b850ece9be8d7b0f31714608",
"updated": "2024-06-06 15:43:37 +0000 UTC",
"user_data": "",
"vendor_options": [],
"volume": []
},
@ -1711,9 +1731,9 @@
"sni_container_refs": [],
"tags": [],
"tenant_id": "6fdc02e2827b405dad99f34698659742",
"timeout_client_data": 50000,
"timeout_member_connect": 5000,
"timeout_member_data": 50000,
"timeout_client_data": 3600000,
"timeout_member_connect": 10000,
"timeout_member_data": 7200000,
"timeout_tcp_inspect": 0,
"timeouts": null
},

View File

@ -59,7 +59,7 @@ module "instance_without_data_volume" {
port_max = 9042
},
rpc = {
description = "Cassandra TCP transport 9042",
description = "Cassandra TCP transport 9160",
port_min = 9160,
port_max = 9160
}

View File

@ -1,7 +1,7 @@
{
"version": 4,
"terraform_version": "1.6.6",
"serial": 34,
"terraform_version": "1.9.7",
"serial": 38,
"lineage": "db04bbdd-e5b8-763e-b3d3-e46d10738f42",
"outputs": {},
"resources": [
@ -132,6 +132,7 @@
"main_subnet_network_id": "cd77a2fd-4a36-4254-b1d0-70b3874c6d04",
"mtu_size": 8942,
"networks_list": {
"cassandra": "cassandra-net",
"orientdb": "orientdb-net",
"orientdb_se": "orientdb-se-net",
"shared_postgresql": "postgresql-srv-net",
@ -146,6 +147,7 @@
"isti_net": "146.48.80.0/21",
"s2i2s_net": "146.48.28.0/22"
},
"nfs_share_no_ingress_secgroup_id": "ddb16502-7217-4677-a8a7-ca0cbf9a779a",
"octavia_information": {
"main_lb_description": "Main L4 load balancer for the D4Science PRE production",
"main_lb_hostname": "main-lb",
@ -168,7 +170,7 @@
"prometheus_server_data": {
"flavor": "m1.medium",
"name": "prometheus",
"public_grafana_server_cidr": "146.48.122.132/32",
"public_grafana_server_cidr": "146.48.28.103/32",
"vol_data_device": "/dev/vdb",
"vol_data_name": "prometheus-data",
"vol_data_size": "100"
@ -195,6 +197,7 @@
"limited_HTTPS_access": "restricted_web_service",
"limited_SSH_access": "Limited SSH access",
"mongo": "mongo",
"nfs_share_no_ingress": "nfs_share_no_ingress",
"orientdb_internal_docker_traffic": "orientdb_internal_docker_traffic",
"postgreSQL": "PostgreSQL service",
"public_HTTPS": "Public HTTPS"
@ -226,6 +229,8 @@
"s2i2s_vpn_2_cidr": "146.48.28.11/32",
"shell_d4s_cidr": "146.48.122.95/32"
},
"storage_nfs_network_id": "5f4023cc-4016-404c-94e5-86220095fbaf",
"storage_nfs_subnet_id": "6ff0f9e8-0e74-4cc3-a268-7ed4af435696",
"ubuntu1804_data_file": "../../openstack_vm_data_scripts/ubuntu1804.sh",
"ubuntu2204_data_file": "../../openstack_vm_data_scripts/ubuntu2204.sh",
"ubuntu_1804": {
@ -326,6 +331,7 @@
"map",
"string"
],
"nfs_share_no_ingress_secgroup_id": "string",
"octavia_information": [
"map",
"string"
@ -370,6 +376,8 @@
"map",
"string"
],
"storage_nfs_network_id": "string",
"storage_nfs_subnet_id": "string",
"ubuntu1804_data_file": "string",
"ubuntu2204_data_file": "string",
"ubuntu_1804": [
@ -545,6 +553,7 @@
"main_subnet_network_id": "cd77a2fd-4a36-4254-b1d0-70b3874c6d04",
"mtu_size": 8942,
"networks_list": {
"cassandra": "cassandra-net",
"orientdb": "orientdb-net",
"orientdb_se": "orientdb-se-net",
"shared_postgresql": "postgresql-srv-net",
@ -559,6 +568,7 @@
"isti_net": "146.48.80.0/21",
"s2i2s_net": "146.48.28.0/22"
},
"nfs_share_no_ingress_secgroup_id": "ddb16502-7217-4677-a8a7-ca0cbf9a779a",
"octavia_information": {
"main_lb_description": "Main L4 load balancer for the D4Science PRE production",
"main_lb_hostname": "main-lb",
@ -581,7 +591,7 @@
"prometheus_server_data": {
"flavor": "m1.medium",
"name": "prometheus",
"public_grafana_server_cidr": "146.48.122.132/32",
"public_grafana_server_cidr": "146.48.28.103/32",
"vol_data_device": "/dev/vdb",
"vol_data_name": "prometheus-data",
"vol_data_size": "100"
@ -608,6 +618,7 @@
"limited_HTTPS_access": "restricted_web_service",
"limited_SSH_access": "Limited SSH access",
"mongo": "mongo",
"nfs_share_no_ingress": "nfs_share_no_ingress",
"orientdb_internal_docker_traffic": "orientdb_internal_docker_traffic",
"postgreSQL": "PostgreSQL service",
"public_HTTPS": "Public HTTPS"
@ -639,6 +650,8 @@
"s2i2s_vpn_2_cidr": "146.48.28.11/32",
"shell_d4s_cidr": "146.48.122.95/32"
},
"storage_nfs_network_id": "5f4023cc-4016-404c-94e5-86220095fbaf",
"storage_nfs_subnet_id": "6ff0f9e8-0e74-4cc3-a268-7ed4af435696",
"ubuntu1804_data_file": "../../openstack_vm_data_scripts/ubuntu1804.sh",
"ubuntu2204_data_file": "../../openstack_vm_data_scripts/ubuntu2204.sh",
"ubuntu_1804": {
@ -739,6 +752,7 @@
"map",
"string"
],
"nfs_share_no_ingress_secgroup_id": "string",
"octavia_information": [
"map",
"string"
@ -783,6 +797,8 @@
"map",
"string"
],
"storage_nfs_network_id": "string",
"storage_nfs_subnet_id": "string",
"ubuntu1804_data_file": "string",
"ubuntu2204_data_file": "string",
"ubuntu_1804": [
@ -888,7 +904,7 @@
"region": "isti_area_pi_1",
"scheduler_hints": [
{
"additional_properties": null,
"additional_properties": {},
"build_near_host_ip": "",
"different_cell": [],
"different_host": [],
@ -903,14 +919,21 @@
"default_for_all"
],
"stop_before_destroy": false,
"tags": null,
"tags": [],
"timeouts": null,
"updated": "2024-01-17 18:39:00 +0000 UTC",
"user_data": "bb83b25fd1219aa1b850ece9be8d7b0f31714608",
"vendor_options": [],
"volume": []
},
"sensitive_attributes": [],
"sensitive_attributes": [
[
{
"type": "get_attr",
"value": "admin_pass"
}
]
],
"private": "eyJlMmJmYjczMC1lY2FhLTExZTYtOGY4OC0zNDM2M2JjN2M0YzAiOnsiY3JlYXRlIjoxODAwMDAwMDAwMDAwLCJkZWxldGUiOjE4MDAwMDAwMDAwMDAsInVwZGF0ZSI6MTgwMDAwMDAwMDAwMH19",
"dependencies": [
"module.instance_without_data_volume.data.terraform_remote_state.privnet_dns_router",
@ -999,7 +1022,7 @@
"region": "isti_area_pi_1",
"scheduler_hints": [
{
"additional_properties": null,
"additional_properties": {},
"build_near_host_ip": "",
"different_cell": [],
"different_host": [],
@ -1014,14 +1037,21 @@
"default_for_all"
],
"stop_before_destroy": false,
"tags": null,
"tags": [],
"timeouts": null,
"updated": "2024-01-17 18:39:10 +0000 UTC",
"user_data": "bb83b25fd1219aa1b850ece9be8d7b0f31714608",
"vendor_options": [],
"volume": []
},
"sensitive_attributes": [],
"sensitive_attributes": [
[
{
"type": "get_attr",
"value": "admin_pass"
}
]
],
"private": "eyJlMmJmYjczMC1lY2FhLTExZTYtOGY4OC0zNDM2M2JjN2M0YzAiOnsiY3JlYXRlIjoxODAwMDAwMDAwMDAwLCJkZWxldGUiOjE4MDAwMDAwMDAwMDAsInVwZGF0ZSI6MTgwMDAwMDAwMDAwMH19",
"dependencies": [
"module.instance_without_data_volume.data.terraform_remote_state.privnet_dns_router",
@ -1110,7 +1140,7 @@
"region": "isti_area_pi_1",
"scheduler_hints": [
{
"additional_properties": null,
"additional_properties": {},
"build_near_host_ip": "",
"different_cell": [],
"different_host": [],
@ -1125,14 +1155,21 @@
"default_for_all"
],
"stop_before_destroy": false,
"tags": null,
"tags": [],
"timeouts": null,
"updated": "2024-01-17 18:39:07 +0000 UTC",
"user_data": "bb83b25fd1219aa1b850ece9be8d7b0f31714608",
"vendor_options": [],
"volume": []
},
"sensitive_attributes": [],
"sensitive_attributes": [
[
{
"type": "get_attr",
"value": "admin_pass"
}
]
],
"private": "eyJlMmJmYjczMC1lY2FhLTExZTYtOGY4OC0zNDM2M2JjN2M0YzAiOnsiY3JlYXRlIjoxODAwMDAwMDAwMDAwLCJkZWxldGUiOjE4MDAwMDAwMDAwMDAsInVwZGF0ZSI6MTgwMDAwMDAwMDAwMH19",
"dependencies": [
"module.instance_without_data_volume.data.terraform_remote_state.privnet_dns_router",
@ -1156,8 +1193,9 @@
"attributes": {
"id": "51de52be-6c6b-4727-961d-a609e3e1ba25",
"members": [
"42035e92-c138-4204-bdbe-ff1e89e1ff9d",
"ea1ce095-dd04-40e0-931e-f5a506e537e2"
"a2e6593f-3d89-4bdb-8e1f-3c7bab7b3d8a",
"d511882d-f79d-4aa3-9edb-a365b0540db0",
"7bd78dfd-ff98-446a-955c-820c8f7c1d6e"
],
"name": "cassandra_cluster",
"policies": [
@ -1225,10 +1263,10 @@
"index_key": "rpc",
"schema_version": 0,
"attributes": {
"description": "Cassandra TCP transport 9042",
"description": "Cassandra TCP transport 9160",
"direction": "ingress",
"ethertype": "IPv4",
"id": "acd8be8d-b786-4bf2-9572-4ad99a0ca5b7",
"id": "f29bc2f4-6cb2-4941-947c-9bce70ffc88c",
"port_range_max": 9160,
"port_range_min": 9160,
"protocol": "tcp",
@ -1319,6 +1357,39 @@
}
]
},
{
"module": "module.instance_without_data_volume",
"mode": "managed",
"type": "openstack_networking_secgroup_rule_v2",
"name": "cassandra_debug_from_ssh",
"provider": "provider[\"registry.terraform.io/terraform-provider-openstack/openstack\"]",
"instances": [
{
"schema_version": 0,
"attributes": {
"description": "Cassandra debug from the ssh jump proxy",
"direction": "ingress",
"ethertype": "IPv4",
"id": "e664f16c-326f-4968-b082-803401f02ea1",
"port_range_max": 9042,
"port_range_min": 9042,
"protocol": "tcp",
"region": "isti_area_pi_1",
"remote_group_id": "",
"remote_ip_prefix": "10.1.32.5/32",
"security_group_id": "c1db941c-3d71-4c40-bd53-0059a18fe32c",
"tenant_id": "6fdc02e2827b405dad99f34698659742",
"timeouts": null
},
"sensitive_attributes": [],
"private": "eyJlMmJmYjczMC1lY2FhLTExZTYtOGY4OC0zNDM2M2JjN2M0YzAiOnsiZGVsZXRlIjo2MDAwMDAwMDAwMDB9fQ==",
"dependencies": [
"module.instance_without_data_volume.data.terraform_remote_state.privnet_dns_router",
"module.instance_without_data_volume.openstack_networking_secgroup_v2.cassandra_access"
]
}
]
},
{
"module": "module.instance_without_data_volume",
"mode": "managed",

View File

@ -0,0 +1,3 @@
# Docker Swarm setup in preprod. Manager nodes only
It's expected to use Manila for NFS, and a OVN load balancer.

View File

@ -0,0 +1,510 @@
#
# Server groups for both the manager nodes
#
resource "openstack_compute_servergroup_v2" "swarm_masters" {
name = "swarm_masters"
policies = ["soft-anti-affinity"]
}
#
# Security groups
#
resource "openstack_networking_secgroup_v2" "swarm_internal_traffic" {
name = "swarm_internal_docker_traffic"
delete_default_rules = "true"
description = "Traffic between the Docker Swarm nodes"
}
resource "openstack_networking_secgroup_rule_v2" "everything_udp" {
security_group_id = openstack_networking_secgroup_v2.swarm_internal_traffic.id
description = "UDP traffic between Swarm nodes"
direction = "ingress"
ethertype = "IPv4"
protocol = "udp"
remote_ip_prefix = data.terraform_remote_state.privnet_dns_router.outputs.main_private_subnet.cidr
}
resource "openstack_networking_secgroup_rule_v2" "everything_tcp" {
security_group_id = openstack_networking_secgroup_v2.swarm_internal_traffic.id
description = "TCP traffic between Swarm nodes"
direction = "ingress"
ethertype = "IPv4"
protocol = "tcp"
remote_ip_prefix = data.terraform_remote_state.privnet_dns_router.outputs.main_private_subnet.cidr
}
resource "openstack_networking_secgroup_rule_v2" "https_from_outside" {
security_group_id = openstack_networking_secgroup_v2.swarm_internal_traffic.id
description = "HTTPS from outside"
direction = "ingress"
ethertype = "IPv4"
protocol = "tcp"
port_range_min = 443
port_range_max = 443
remote_ip_prefix = "0.0.0.0/0"
}
resource "openstack_networking_secgroup_rule_v2" "http_from_outside" {
security_group_id = openstack_networking_secgroup_v2.swarm_internal_traffic.id
description = "HTTP from outside"
direction = "ingress"
ethertype = "IPv4"
protocol = "tcp"
port_range_min = 80
port_range_max = 80
remote_ip_prefix = "0.0.0.0/0"
}
# resource "openstack_networking_secgroup_rule_v2" "quic_from_outside" {
# security_group_id = openstack_networking_secgroup_v2.swarm_internal_traffic.id
# description = "QUIC from outside"
# direction = "ingress"
# ethertype = "IPv4"
# protocol = "udp"
# port_range_min = 443
# port_range_max = 443
# remote_ip_prefix = "0.0.0.0/0"
# }
resource "openstack_networking_secgroup_rule_v2" "haproxy_stats_from_outside" {
security_group_id = openstack_networking_secgroup_v2.swarm_internal_traffic.id
description = "HAPROXY stats from outside"
direction = "ingress"
ethertype = "IPv4"
protocol = "tcp"
port_range_min = 8880
port_range_max = 8880
remote_ip_prefix = "0.0.0.0/0"
}
#
# Swarm Manager VMs
#
# Instance
resource "openstack_compute_instance_v2" "docker_swarm_managers" {
count = var.docker_swarm_data.mgr_count
name = format("%s-%02d", var.docker_swarm_data.mgr_name, count.index + 1)
# availability_zone_hints = var.availability_zones_names.availability_zone_no_gpu
flavor_name = var.docker_swarm_data.mgr_flavor
key_pair = module.ssh_settings.ssh_key_name
security_groups = [data.terraform_remote_state.privnet_dns_router.outputs.default_security_group_name, openstack_networking_secgroup_v2.swarm_internal_traffic.name, "default", "nfs_share_no_ingress"]
scheduler_hints {
group = openstack_compute_servergroup_v2.swarm_masters.id
}
block_device {
uuid = module.common_variables.ubuntu_2204.uuid
source_type = "image"
volume_size = 10
boot_index = 0
destination_type = "volume"
delete_on_termination = false
}
block_device {
source_type = "blank"
volume_size = var.docker_swarm_data.mgr_data_disk_size
boot_index = -1
destination_type = "volume"
delete_on_termination = false
}
network {
name = data.terraform_remote_state.privnet_dns_router.outputs.main_private_network.name
fixed_ip_v4 = var.swarm_managers_ip.* [count.index]
}
network {
name = module.common_variables.networks_list.shared_postgresql
}
user_data = file("${module.common_variables.ubuntu2204_data_file}")
# Do not replace the instance when the ssh key changes
lifecycle {
ignore_changes = [
# Ignore changes to tags, e.g. because a management agent
# updates these based on some ruleset managed elsewhere.
key_pair, user_data, network
]
}
}
#
# Manila NFS Share
#
# Managers
resource "openstack_networking_port_v2" "swarm_mgr_nfs_port" {
count = var.docker_swarm_data.mgr_count
name = format("%s-%02d", var.docker_swarm_data.mgr_name, count.index + 1)
network_id = data.terraform_remote_state.privnet_dns_router.outputs.storage_nfs_network_id
admin_state_up = "true"
fixed_ip {
subnet_id = data.terraform_remote_state.privnet_dns_router.outputs.storage_nfs_subnet_id
}
}
resource "openstack_networking_port_secgroup_associate_v2" "swarm_mgr_nfs_port_secgroup" {
count = var.docker_swarm_data.mgr_count
port_id = openstack_networking_port_v2.swarm_mgr_nfs_port[count.index].id
security_group_ids = [data.terraform_remote_state.privnet_dns_router.outputs.nfs_share_no_ingress_secgroup_id]
}
resource "openstack_compute_interface_attach_v2" "nfs_port_to_swarm_mgr" {
count = var.docker_swarm_data.mgr_count
instance_id = openstack_compute_instance_v2.docker_swarm_managers[count.index].id
port_id = openstack_networking_port_v2.swarm_mgr_nfs_port[count.index].id
}
#
# Octavia
#
# Swarm load balancer. L4, backed by Octavia
resource "openstack_lb_loadbalancer_v2" "swarm_lb" {
vip_subnet_id = data.terraform_remote_state.privnet_dns_router.outputs.main_subnet_network_id
name = var.octavia_swarm_data.swarm_lb_name
description = var.octavia_swarm_data.swarm_lb_description
# flavor_id = var.octavia_swarm_data.octavia_flavor_id
vip_address = var.octavia_swarm_data.swarm_octavia_main_ip
# availability_zone = var.availability_zones_names.availability_zone_no_gpu
# loadbalancer_provider = "amphora"
loadbalancer_provider = "ovn"
}
# Allocate a floating IP
resource "openstack_networking_floatingip_v2" "swarm_lb_ip" {
pool = data.terraform_remote_state.privnet_dns_router.outputs.floating_ip_pools.main_public_ip_pool
# The DNS association does not work because of a bug in the OpenStack API
# dns_name = "main-lb"
# dns_domain = data.terraform_remote_state.privnet_dns_router.outputs.dns_zone.zone_name
description = var.octavia_swarm_data.swarm_lb_description
}
resource "openstack_networking_floatingip_associate_v2" "swarm_lb" {
floating_ip = openstack_networking_floatingip_v2.swarm_lb_ip.address
port_id = openstack_lb_loadbalancer_v2.swarm_lb.vip_port_id
}
locals {
swarm_recordset_name = "${var.octavia_swarm_data.swarm_lb_hostname}.${data.terraform_remote_state.privnet_dns_router.outputs.dns_zone.zone_name}"
portainer_recordset_name = "portainer.${data.terraform_remote_state.privnet_dns_router.outputs.dns_zone.zone_name}"
conductor_recordset_name = "conductor.${data.terraform_remote_state.privnet_dns_router.outputs.dns_zone.zone_name}"
}
resource "openstack_dns_recordset_v2" "swarm_lb_dns_recordset" {
zone_id = data.terraform_remote_state.privnet_dns_router.outputs.dns_zone_id
name = local.swarm_recordset_name
description = "Public IP address of the load balancer in front of Docker Swarm"
ttl = 8600
type = "A"
records = [openstack_networking_floatingip_v2.swarm_lb_ip.address]
}
resource "openstack_dns_recordset_v2" "swarm_portainer_dns_recordset" {
zone_id = data.terraform_remote_state.privnet_dns_router.outputs.dns_zone_id
name = local.portainer_recordset_name
description = "Portainer hostname"
ttl = 8600
type = "CNAME"
records = [local.swarm_recordset_name]
}
resource "openstack_dns_recordset_v2" "conductor_dns_recordset" {
zone_id = data.terraform_remote_state.privnet_dns_router.outputs.dns_zone_id
name = local.conductor_recordset_name
description = "Conductor hostname"
ttl = 8600
type = "CNAME"
records = [local.swarm_recordset_name]
}
# Main HAPROXY stats listener
resource "openstack_lb_listener_v2" "swarm_haproxy_stats_listener" {
loadbalancer_id = openstack_lb_loadbalancer_v2.swarm_lb.id
protocol = "TCP"
protocol_port = 8880
description = "Listener for the stats of the Docker Swarm HAPROXY instances"
name = "swarm_haproxy_stats_listener"
# allowed_cidrs = [data.terraform_remote_state.infrastructure_setup.outputs.ssh_sources.d4s_vpn_1_cidr, data.terraform_remote_state.infrastructure_setup.outputs.ssh_sources.d4s_vpn_2_cidr, data.terraform_remote_state.infrastructure_setup.outputs.ssh_sources.s2i2s_vpn_1_cidr, data.terraform_remote_state.infrastructure_setup.outputs.ssh_sources.s2i2s_vpn_2_cidr]
}
resource "openstack_lb_pool_v2" "swarm_haproxy_stats_pool" {
listener_id = openstack_lb_listener_v2.swarm_haproxy_stats_listener.id
protocol = "TCP"
lb_method = "SOURCE_IP_PORT"
name = "swarm-haproxy-lb-stats"
description = "Pool for the stats of the main HAPROXY instances"
persistence {
type = "SOURCE_IP"
}
}
resource "openstack_lb_members_v2" "swarm_haproxy_stats_pool_members" {
pool_id = openstack_lb_pool_v2.swarm_haproxy_stats_pool.id
member {
name = "swarm mgr haproxy 1"
address = var.docker_swarm_data.mgr1_ip
protocol_port = 8880
}
member {
name = "swarm mgr haproxy 2"
address = var.docker_swarm_data.mgr2_ip
protocol_port = 8880
}
member {
name = "swarm mgr haproxy 3"
address = var.docker_swarm_data.mgr3_ip
protocol_port = 8880
}
}
# resource "openstack_lb_monitor_v2" "swarm_haproxy_stats_monitor" {
# pool_id = openstack_lb_pool_v2.swarm_haproxy_stats_pool.id
# name = "swarm_haproxy_stats_monitor"
# type = "TCP"
# delay = 20
# timeout = 5
# max_retries = 3
# admin_state_up = true
# }
# HAPROXY HTTP
resource "openstack_lb_listener_v2" "swarm_haproxy_http_listener" {
loadbalancer_id = openstack_lb_loadbalancer_v2.swarm_lb.id
protocol = "TCP"
protocol_port = 80
description = "HTTP listener of the Docker Swarm HAPROXY instances"
name = "swarm_haproxy_http_listener"
admin_state_up = true
}
resource "openstack_lb_pool_v2" "swarm_haproxy_http_pool" {
listener_id = openstack_lb_listener_v2.swarm_haproxy_http_listener.id
protocol = "TCP"
lb_method = "SOURCE_IP_PORT"
name = "swarm-haproxy-lb-http"
description = "Pool for the HTTP listener of the Docker Swarm HAPROXY instances"
persistence {
type = "SOURCE_IP"
}
admin_state_up = true
}
resource "openstack_lb_members_v2" "swarm_haproxy_http_pool_members" {
pool_id = openstack_lb_pool_v2.swarm_haproxy_http_pool.id
member {
name = "swarm mgr haproxy 1"
address = var.docker_swarm_data.mgr1_ip
protocol_port = 80
}
member {
name = "swarm mgr haproxy 2"
address = var.docker_swarm_data.mgr2_ip
protocol_port = 80
}
member {
name = "swarm mgr haproxy 3"
address = var.docker_swarm_data.mgr3_ip
protocol_port = 80
}
}
# resource "openstack_lb_monitor_v2" "swarm_haproxy_http_monitor" {
# pool_id = openstack_lb_pool_v2.swarm_haproxy_http_pool.id
# name = "swarm_haproxy_http_monitor"
# type = "TCP"
# delay = 20
# timeout = 5
# max_retries = 3
# admin_state_up = true
# }
# HAPROXY HTTPS
resource "openstack_lb_listener_v2" "swarm_haproxy_https_listener" {
loadbalancer_id = openstack_lb_loadbalancer_v2.swarm_lb.id
protocol = "TCP"
protocol_port = 443
description = "HTTPS listener of the main HAPROXY instances"
name = "swarm_haproxy_https_listener"
timeout_client_data = 3600000
timeout_member_connect = 10000
timeout_member_data = 7200000
admin_state_up = true
}
resource "openstack_lb_pool_v2" "swarm_haproxy_https_pool" {
listener_id = openstack_lb_listener_v2.swarm_haproxy_https_listener.id
protocol = "TCP"
lb_method = "SOURCE_IP_PORT"
name = "swarm-haproxy-lb-https"
description = "Pool for the HTTPS listener of the Docker Swarm HAPROXY instances"
persistence {
type = "SOURCE_IP"
}
admin_state_up = true
}
resource "openstack_lb_members_v2" "swarm_haproxy_https_pool_members" {
pool_id = openstack_lb_pool_v2.swarm_haproxy_https_pool.id
member {
name = "swarm mgr haproxy 1"
address = var.docker_swarm_data.mgr1_ip
protocol_port = 443
}
member {
name = "swarm mgr haproxy 2"
address = var.docker_swarm_data.mgr2_ip
protocol_port = 443
}
member {
name = "swarm mgr haproxy 3"
address = var.docker_swarm_data.mgr3_ip
protocol_port = 443
}
}
# resource "openstack_lb_monitor_v2" "swarm_haproxy_https_monitor" {
# pool_id = openstack_lb_pool_v2.swarm_haproxy_https_pool.id
# name = "swarm_haproxy_https_monitor"
# type = "TCP"
# delay = 20
# timeout = 5
# max_retries = 3
# admin_state_up = true
# }
# HTTP/3 (QUIC)
# resource "openstack_lb_listener_v2" "swarm_haproxy_quic_listener" {
# loadbalancer_id = openstack_lb_loadbalancer_v2.swarm_lb.id
# protocol = "UDP"
# protocol_port = 443
# description = "HTTPS listener of the main HAPROXY instances"
# name = "swarm_haproxy_quic_listener"
# timeout_client_data = 3600000
# timeout_member_connect = 10000
# timeout_member_data = 7200000
# admin_state_up = true
# }
# resource "openstack_lb_pool_v2" "swarm_haproxy_quic_pool" {
# listener_id = openstack_lb_listener_v2.swarm_haproxy_quic_listener.id
# protocol = "UDP"
# lb_method = "SOURCE_IP_PORT"
# name = "swarm-haproxy-lb-quic"
# description = "Pool for the HTTP/3 (QUIC) listener of the Docker Swarm HAPROXY instances"
# persistence {
# type = "SOURCE_IP"
# }
# admin_state_up = true
# }
# resource "openstack_lb_members_v2" "swarm_haproxy_quic_pool_members" {
# pool_id = openstack_lb_pool_v2.swarm_haproxy_quic_pool.id
# member {
# name = "swarm mgr haproxy 1"
# address = var.docker_swarm_data.mgr1_ip
# protocol_port = 443
# }
# member {
# name = "swarm mgr haproxy 2"
# address = var.docker_swarm_data.mgr2_ip
# protocol_port = 443
# }
# member {
# name = "swarm mgr haproxy 3"
# address = var.docker_swarm_data.mgr3_ip
# protocol_port = 443
# }
# }
# HAPROXY HTTP on port 8080
# resource "openstack_lb_listener_v2" "swarm_haproxy_8080_listener" {
# loadbalancer_id = openstack_lb_loadbalancer_v2.swarm_lb.id
# protocol = "TCP"
# protocol_port = 8080
# description = "HTTP port 8080 listener of the Docker Swarm HAPROXY instances"
# name = "swarm_haproxy_8080_listener"
# admin_state_up = true
# }
# resource "openstack_lb_pool_v2" "swarm_haproxy_8080_pool" {
# listener_id = openstack_lb_listener_v2.swarm_haproxy_8080_listener.id
# protocol = "TCP"
# lb_method = "SOURCE_IP_PORT"
# name = "swarm-haproxy-lb-http-8080"
# description = "Pool for the HTTP port 8080 listener of the Docker Swarm HAPROXY instances"
# persistence {
# type = "SOURCE_IP"
# }
# admin_state_up = true
# }
# resource "openstack_lb_members_v2" "swarm_haproxy_8080_pool_members" {
# pool_id = openstack_lb_pool_v2.swarm_haproxy_8080_pool.id
# member {
# name = "swarm mgr haproxy 1"
# address = var.docker_swarm_data.mgr1_ip
# protocol_port = 8080
# }
# member {
# name = "swarm mgr haproxy 2"
# address = var.docker_swarm_data.mgr2_ip
# protocol_port = 8080
# }
# member {
# name = "swarm mgr haproxy 3"
# address = var.docker_swarm_data.mgr3_ip
# protocol_port = 8080
# }
# }
# resource "openstack_lb_monitor_v2" "swarm_haproxy_8080_monitor" {
# pool_id = openstack_lb_pool_v2.swarm_haproxy_8080_pool.id
# name = "swarm_haproxy_8080_monitor"
# type = "TCP"
# delay = 20
# timeout = 5
# max_retries = 3
# admin_state_up = true
# }
# NFS share for portainer
#
resource "openstack_sharedfilesystem_share_v2" "portainer_data" {
name = "portainer_data"
description = "NFS share for the Portainer preprod data"
share_proto = "NFS"
size = 10
}
# Allow access to the NFS share
resource "openstack_sharedfilesystem_share_access_v2" "portainer_access_swarm_mgr" {
count = var.docker_swarm_data.mgr_count
share_id = openstack_sharedfilesystem_share_v2.portainer_data.id
access_type = "ip"
access_to = openstack_compute_interface_attach_v2.nfs_port_to_swarm_mgr[count.index].fixed_ip
access_level = "rw"
}
# Outputs
output "swarm_loadbalancer_ip" {
description = "Docker Swarm Load balancer IP address"
value = openstack_lb_loadbalancer_v2.swarm_lb.vip_address
}
output "swarm_manager_nodes" {
description = "Docker Swarm Manager nodes data"
value = openstack_compute_instance_v2.docker_swarm_managers
sensitive = true
}
output "swarm_managers_nfs_ip_ports" {
description = "IP addresses in the share NFS network"
value = openstack_networking_port_v2.swarm_mgr_nfs_port
}
output "portainer_data_volume" {
value = openstack_sharedfilesystem_share_v2.portainer_data
}
output "portainer_data_mgr_acls" {
value = openstack_sharedfilesystem_share_access_v2.portainer_access_swarm_mgr
sensitive = true
}

View File

@ -4,7 +4,7 @@ terraform {
required_providers {
openstack = {
source = "terraform-provider-openstack/openstack"
version = "~> 1.53.0"
version = ">= 2.0.0"
}
}
}
@ -17,7 +17,7 @@ data "terraform_remote_state" "privnet_dns_router" {
}
}
data "terraform_remote_state" "main_infrastructure" {
data "terraform_remote_state" "infrastructure_setup" {
backend = "local"
config = {
@ -25,13 +25,14 @@ data "terraform_remote_state" "main_infrastructure" {
}
}
# SSH settings
module "ssh_settings" {
source = "../../modules/ssh-key-ref"
}
#
# Uses common_variables as module
#
module "common_variables" {
source = "../../modules/common_variables"
}
# Module used
module "ssh_settings" {
source = "../../modules/ssh-key-ref"
}

View File

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

View File

@ -0,0 +1,33 @@
variable "docker_swarm_data" {
type = map(string)
default = {
mgr_name = "swarm-mgr"
mgr1_ip = "10.1.32.31"
mgr1_cidr = "10.1.32.31/32"
mgr2_ip = "10.1.32.32"
mgr2_cidr = "10.1.32.32/32"
mgr3_ip = "10.1.32.33"
mgr3_cidr = "10.1.32.33/32"
mgr_count = 3
mgr_flavor = "m1.large"
mgr_data_disk_size = 100
}
}
variable "swarm_managers_ip" {
type = list(string)
default = ["10.1.32.31", "10.1.32.32", "10.1.32.33"]
}
variable "octavia_swarm_data" {
type = map(string)
default = {
swarm_lb_name = "d4s-pre-cloud-swarm-l4"
swarm_lb_description = "L4 balancer that serves the D4Science pre Docker Swarm cluster"
swarm_lb_name = "d4s-pre-cloud-swarm-l4"
swarm_lb_hostname = "swarm-lb"
swarm_octavia_main_ip = "10.1.32.30"
swarm_octavia_main_cidr = "10.1.32.30/32"
}
}

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,611 @@
{
"version": 4,
"terraform_version": "1.6.4",
"serial": 4,
"lineage": "ae3bcea2-8dd3-cf90-ba90-8b2ea32a8335",
"outputs": {},
"resources": [
{
"mode": "data",
"type": "terraform_remote_state",
"name": "privnet_dns_router",
"provider": "provider[\"terraform.io/builtin/terraform\"]",
"instances": [
{
"schema_version": 0,
"attributes": {
"backend": "local",
"config": {
"value": {
"path": "../project-setup/terraform.tfstate"
},
"type": [
"object",
{
"path": "string"
}
]
},
"defaults": null,
"outputs": {
"value": {
"almalinux_9": {
"name": "AlmaLinux-9.0-20220718",
"uuid": "541650fc-dd19-4f38-bb1d-7333ed9dd688"
},
"availability_zone_no_gpu_name": "cnr-isti-nova-a",
"availability_zone_with_gpu_name": "cnr-isti-nova-gpu-a",
"availability_zones_names": {
"availability_zone_no_gpu": "cnr-isti-nova-a",
"availability_zone_with_gpu": "cnr-isti-nova-gpu-a"
},
"basic_services_ip": {
"ca": "10.1.32.4",
"ca_cidr": "10.1.32.4/32",
"haproxy_l7_1": "10.1.32.11",
"haproxy_l7_1_cidr": "10.1.32.11/32",
"haproxy_l7_2": "10.1.32.12",
"haproxy_l7_2_cidr": "10.1.32.12/32",
"octavia_main": "10.1.32.20",
"octavia_main_cidr": "10.1.32.20/32",
"prometheus": "10.1.32.10",
"prometheus_cidr": "10.1.32.10/32",
"ssh_jump": "10.1.32.5",
"ssh_jump_cidr": "10.1.32.5/32"
},
"centos_7": {
"name": "CentOS-7",
"uuid": "f0187a99-64f6-462a-ab5f-ef52fe62f2ca"
},
"default_security_group_name": "default_for_all",
"dns_zone": {
"description": "DNS primary zone for the d4s-pre-cloud project",
"email": "postmaster@isti.cnr.it",
"id": "c1a4b4bc-f167-4387-855d-38f0f99ca05c",
"ttl": "8600",
"zone_name": "cloud-pre.d4science.org."
},
"dns_zone_id": "c1a4b4bc-f167-4387-855d-38f0f99ca05c",
"el7_data_file": "../../openstack_vm_data_scripts/el7.sh",
"external_gateway_ip": [
{
"ip_address": "146.48.30.241",
"subnet_id": "57f87509-4016-46fb-b8c3-25fca7f72ccb"
}
],
"external_network": {
"id": "1d2ff137-6ff7-4017-be2b-0d6c4af2353b",
"name": "external-network"
},
"external_network_id": "1d2ff137-6ff7-4017-be2b-0d6c4af2353b",
"external_router": {
"description": "D4Science Preprod main router",
"id": "cc26064a-bb08-4c0b-929f-d0cb39f934a3",
"name": "d4s-pre-cloud-external-router"
},
"flavor_list": {
"c1_large": "c1.large",
"c1_medium": "c1.medium",
"c1_small": "c1.small",
"c2_large": "c2.large",
"m1_large": "m1.large",
"m1_medium": "m1.medium",
"m1_xlarge": "m1.xlarge",
"m1_xxl": "m1.xxl",
"m2_large": "m2.large",
"m2_medium": "m2.medium",
"m2_small": "m2.small",
"m3_large": "m3.large"
},
"floating_ip_pools": {
"main_public_ip_pool": "external-network"
},
"haproxy_l7_data": {
"flavor": "m1.medium",
"haproxy_1": "haproxy-l7-1",
"haproxy_2": "haproxy-l7-2",
"name": "main-haproxy-l7",
"vm_count": "2"
},
"internal_ca_data": {
"flavor": "m1.small",
"name": "ca"
},
"main_haproxy_l7_ip": [
"10.1.32.11",
"10.1.32.12"
],
"main_private_network": {
"description": "D4Science Preprod private network (use this as the main network)",
"name": "d4s-pre-cloud-main"
},
"main_private_network_id": "23fd8a99-d551-4ada-8d3a-9859542ebb8c",
"main_private_subnet": {
"allocation_end": "10.1.35.254",
"allocation_start": "10.1.32.100",
"cidr": "10.1.32.0/22",
"description": "D4Science Preprod main private subnet",
"gateway_ip": "10.1.32.1",
"name": "d4s-pre-cloud-main-subnet"
},
"main_region": "isti_area_pi_1",
"main_subnet_network_id": "cd77a2fd-4a36-4254-b1d0-70b3874c6d04",
"mtu_size": 8942,
"networks_list": {
"cassandra": "cassandra-net",
"orientdb": "orientdb-net",
"orientdb_se": "orientdb-se-net",
"shared_postgresql": "postgresql-srv-net",
"swarm": "swarm-nfs-net",
"timescaledb": "timescaledb-net"
},
"networks_with_d4s_services": {
"garr_ct1_net": "90.147.166.0/23",
"garr_na_net": "90.147.152.0/24",
"garr_pa1_net": "90.147.188.0/23",
"infrascience_net": "146.48.122.0/23",
"isti_net": "146.48.80.0/21",
"s2i2s_net": "146.48.28.0/22"
},
"nfs_share_no_ingress_secgroup_id": "ddb16502-7217-4677-a8a7-ca0cbf9a779a",
"octavia_information": {
"main_lb_description": "Main L4 load balancer for the D4Science PRE production",
"main_lb_hostname": "main-lb",
"main_lb_name": "d4s-pre-cloud-l4-load-balancer",
"octavia_flavor": "octavia_amphora-mvcpu-ha",
"octavia_flavor_id": "394988b5-6603-4a1e-a939-8e177c6681c7",
"octavia_vrrp_ip_1": "10.1.33.159/32",
"octavia_vrrp_ip_2": "10.1.32.199/32",
"swarm_lb_name": "d4s-pre-cloud-l4-swarm-load-balancer"
},
"os_project_data": {
"id": "6fdc02e2827b405dad99f34698659742"
},
"policy_list": {
"affinity": "affinity",
"anti_affinity": "anti-affinity",
"soft_affinity": "soft-affinity",
"soft_anti_affinity": "soft-anti-affinity"
},
"prometheus_server_data": {
"flavor": "m1.medium",
"name": "prometheus",
"public_grafana_server_cidr": "146.48.28.103/32",
"vol_data_device": "/dev/vdb",
"vol_data_name": "prometheus-data",
"vol_data_size": "100"
},
"resolvers_ip": [
"146.48.29.97",
"146.48.29.98",
"146.48.29.99"
],
"resource_registry_addresses": {},
"security_group_list": {
"acaland": "acaland's dev machine",
"access_to_orientdb": "access_to_orientdb",
"access_to_orientdb_se": "access_to_orientdb_se",
"access_to_the_timescaledb_service": "access_to_the_timescaledb_service",
"cassandra": "Cassandra",
"dataminer-publish": "dataminer-publish",
"debugging_from_jump_node": "debugging_from_jump_node",
"default": "default",
"docker_swarm": "Docker Swarm",
"docker_swarm_NFS": "Docker Swarm NFS",
"haproxy": "traffic_from_main_lb_to_haproxy_l7",
"http_and_https_from_the_load_balancers": "traffic_from_the_main_load_balancers",
"limited_HTTPS_access": "restricted_web_service",
"limited_SSH_access": "Limited SSH access",
"mongo": "mongo",
"nfs_share_no_ingress": "nfs_share_no_ingress",
"orientdb_internal_docker_traffic": "orientdb_internal_docker_traffic",
"postgreSQL": "PostgreSQL service",
"public_HTTPS": "Public HTTPS"
},
"shared_postgresql_server_data": {
"allocation_pool_end": "192.168.3.254",
"allocation_pool_start": "192.168.0.100",
"flavor": "m1.medium",
"name": "shared-postgresql-server",
"network_cidr": "192.168.0.0/22",
"network_description": "Network used to communicate with the shared postgresql service",
"network_name": "postgresql-srv-net",
"server_cidr": "192.168.0.5/22",
"server_ip": "192.168.0.5",
"vol_data_device": "/dev/vdb",
"vol_data_name": "shared-postgresql-data",
"vol_data_size": "100"
},
"smartexecutor_addresses": {},
"ssh_jump_proxy": {
"flavor": "m2.small",
"name": "ssh-jump-proxy"
},
"ssh_sources": {
"d4s_vpn_1_cidr": "146.48.122.27/32",
"d4s_vpn_2_cidr": "146.48.122.49/32",
"infrascience_net_cidr": "146.48.122.0/23",
"s2i2s_vpn_1_cidr": "146.48.28.10/32",
"s2i2s_vpn_2_cidr": "146.48.28.11/32",
"shell_d4s_cidr": "146.48.122.95/32"
},
"storage_nfs_network_id": "5f4023cc-4016-404c-94e5-86220095fbaf",
"storage_nfs_subnet_id": "6ff0f9e8-0e74-4cc3-a268-7ed4af435696",
"ubuntu1804_data_file": "../../openstack_vm_data_scripts/ubuntu1804.sh",
"ubuntu2204_data_file": "../../openstack_vm_data_scripts/ubuntu2204.sh",
"ubuntu_1804": {
"name": "Ubuntu-Bionic-18.04",
"user_data_file": "../../openstack_vm_data_scripts/ubuntu1804.sh",
"uuid": "7ed6a2cd-2b07-482e-8ce4-f018dff16c89"
},
"ubuntu_2204": {
"name": "Ubuntu-Jammy-22.04",
"user_data_file": "../../openstack_vm_data_scripts/ubuntu2204.sh",
"uuid": "54768889-8556-4be4-a2eb-82a4d9b34627"
}
},
"type": [
"object",
{
"almalinux_9": [
"map",
"string"
],
"availability_zone_no_gpu_name": "string",
"availability_zone_with_gpu_name": "string",
"availability_zones_names": [
"map",
"string"
],
"basic_services_ip": [
"map",
"string"
],
"centos_7": [
"map",
"string"
],
"default_security_group_name": "string",
"dns_zone": [
"map",
"string"
],
"dns_zone_id": "string",
"el7_data_file": "string",
"external_gateway_ip": [
"list",
[
"object",
{
"ip_address": "string",
"subnet_id": "string"
}
]
],
"external_network": [
"map",
"string"
],
"external_network_id": "string",
"external_router": [
"map",
"string"
],
"flavor_list": [
"map",
"string"
],
"floating_ip_pools": [
"map",
"string"
],
"haproxy_l7_data": [
"map",
"string"
],
"internal_ca_data": [
"map",
"string"
],
"main_haproxy_l7_ip": [
"list",
"string"
],
"main_private_network": [
"map",
"string"
],
"main_private_network_id": "string",
"main_private_subnet": [
"map",
"string"
],
"main_region": "string",
"main_subnet_network_id": "string",
"mtu_size": "number",
"networks_list": [
"map",
"string"
],
"networks_with_d4s_services": [
"map",
"string"
],
"nfs_share_no_ingress_secgroup_id": "string",
"octavia_information": [
"map",
"string"
],
"os_project_data": [
"map",
"string"
],
"policy_list": [
"map",
"string"
],
"prometheus_server_data": [
"map",
"string"
],
"resolvers_ip": [
"list",
"string"
],
"resource_registry_addresses": [
"map",
"string"
],
"security_group_list": [
"map",
"string"
],
"shared_postgresql_server_data": [
"map",
"string"
],
"smartexecutor_addresses": [
"map",
"string"
],
"ssh_jump_proxy": [
"map",
"string"
],
"ssh_sources": [
"map",
"string"
],
"storage_nfs_network_id": "string",
"storage_nfs_subnet_id": "string",
"ubuntu1804_data_file": "string",
"ubuntu2204_data_file": "string",
"ubuntu_1804": [
"map",
"string"
],
"ubuntu_2204": [
"map",
"string"
]
}
]
},
"workspace": null
},
"sensitive_attributes": []
}
]
},
{
"mode": "managed",
"type": "openstack_compute_servergroup_v2",
"name": "gcat_server_group",
"provider": "provider[\"registry.terraform.io/terraform-provider-openstack/openstack\"]",
"instances": [
{
"schema_version": 0,
"attributes": {
"id": "f981e05b-9488-4c14-bbde-dd2b4a738221",
"members": [],
"name": "gcat",
"policies": [
"soft-anti-affinity"
],
"region": "isti_area_pi_1",
"rules": [
{
"max_server_per_host": 0
}
],
"value_specs": null
},
"sensitive_attributes": [],
"private": "bnVsbA=="
}
]
},
{
"module": "module.instance_without_data_volume",
"mode": "managed",
"type": "openstack_compute_instance_v2",
"name": "smartgears_service",
"provider": "provider[\"registry.terraform.io/terraform-provider-openstack/openstack\"]",
"instances": [
{
"index_key": "gcat_1",
"schema_version": 0,
"attributes": {
"access_ip_v4": "10.1.34.254",
"access_ip_v6": "",
"admin_pass": null,
"all_metadata": {},
"all_tags": [],
"availability_zone": "cnr-isti-nova-a",
"availability_zone_hints": "cnr-isti-nova-a",
"block_device": [
{
"boot_index": 0,
"delete_on_termination": false,
"destination_type": "volume",
"device_type": "",
"disk_bus": "",
"guest_format": "",
"multiattach": false,
"source_type": "image",
"uuid": "7ed6a2cd-2b07-482e-8ce4-f018dff16c89",
"volume_size": 10,
"volume_type": ""
}
],
"config_drive": null,
"created": "2024-10-03 09:28:08 +0000 UTC",
"flavor_id": "4",
"flavor_name": "m1.medium",
"floating_ip": null,
"force_delete": false,
"id": "80f62e3d-2155-42a0-a168-d9516dd152f9",
"image_id": "Attempt to boot from volume - no image supplied",
"image_name": null,
"key_pair": "pc-frosini_key",
"metadata": null,
"name": "gcat-1",
"network": [
{
"access_network": false,
"fixed_ip_v4": "10.1.34.254",
"fixed_ip_v6": "",
"floating_ip": "",
"mac": "fa:16:3e:2d:4a:12",
"name": "d4s-pre-cloud-main",
"port": "",
"uuid": "23fd8a99-d551-4ada-8d3a-9859542ebb8c"
}
],
"network_mode": null,
"personality": [],
"power_state": "active",
"region": "isti_area_pi_1",
"scheduler_hints": [
{
"additional_properties": null,
"build_near_host_ip": "",
"different_cell": [],
"different_host": [],
"group": "f981e05b-9488-4c14-bbde-dd2b4a738221",
"query": [],
"same_host": [],
"target_cell": ""
}
],
"security_groups": [
"debugging_from_jump_node",
"default_for_all",
"traffic_from_the_main_load_balancers"
],
"stop_before_destroy": false,
"tags": null,
"timeouts": null,
"updated": "2024-10-03 09:29:01 +0000 UTC",
"user_data": "ef3d6e5deb29bd1e5de5a76ae6860f3ee872738c",
"vendor_options": [],
"volume": []
},
"sensitive_attributes": [],
"private": "eyJlMmJmYjczMC1lY2FhLTExZTYtOGY4OC0zNDM2M2JjN2M0YzAiOnsiY3JlYXRlIjoxODAwMDAwMDAwMDAwLCJkZWxldGUiOjE4MDAwMDAwMDAwMDAsInVwZGF0ZSI6MTgwMDAwMDAwMDAwMH19",
"dependencies": [
"data.terraform_remote_state.privnet_dns_router",
"openstack_compute_servergroup_v2.gcat_server_group"
]
},
{
"index_key": "gcat_2",
"schema_version": 0,
"attributes": {
"access_ip_v4": "10.1.32.116",
"access_ip_v6": "",
"admin_pass": null,
"all_metadata": {},
"all_tags": [],
"availability_zone": "cnr-isti-nova-a",
"availability_zone_hints": "cnr-isti-nova-a",
"block_device": [
{
"boot_index": 0,
"delete_on_termination": false,
"destination_type": "volume",
"device_type": "",
"disk_bus": "",
"guest_format": "",
"multiattach": false,
"source_type": "image",
"uuid": "7ed6a2cd-2b07-482e-8ce4-f018dff16c89",
"volume_size": 10,
"volume_type": ""
}
],
"config_drive": null,
"created": "2024-10-03 09:28:08 +0000 UTC",
"flavor_id": "4",
"flavor_name": "m1.medium",
"floating_ip": null,
"force_delete": false,
"id": "830c530c-9d18-4e36-9f39-91232809f5d5",
"image_id": "Attempt to boot from volume - no image supplied",
"image_name": null,
"key_pair": "pc-frosini_key",
"metadata": null,
"name": "gcat-2",
"network": [
{
"access_network": false,
"fixed_ip_v4": "10.1.32.116",
"fixed_ip_v6": "",
"floating_ip": "",
"mac": "fa:16:3e:9e:92:78",
"name": "d4s-pre-cloud-main",
"port": "",
"uuid": "23fd8a99-d551-4ada-8d3a-9859542ebb8c"
}
],
"network_mode": null,
"personality": [],
"power_state": "active",
"region": "isti_area_pi_1",
"scheduler_hints": [
{
"additional_properties": null,
"build_near_host_ip": "",
"different_cell": [],
"different_host": [],
"group": "f981e05b-9488-4c14-bbde-dd2b4a738221",
"query": [],
"same_host": [],
"target_cell": ""
}
],
"security_groups": [
"debugging_from_jump_node",
"default_for_all",
"traffic_from_the_main_load_balancers"
],
"stop_before_destroy": false,
"tags": null,
"timeouts": null,
"updated": "2024-10-03 09:29:01 +0000 UTC",
"user_data": "ef3d6e5deb29bd1e5de5a76ae6860f3ee872738c",
"vendor_options": [],
"volume": []
},
"sensitive_attributes": [],
"private": "eyJlMmJmYjczMC1lY2FhLTExZTYtOGY4OC0zNDM2M2JjN2M0YzAiOnsiY3JlYXRlIjoxODAwMDAwMDAwMDAwLCJkZWxldGUiOjE4MDAwMDAwMDAwMDAsInVwZGF0ZSI6MTgwMDAwMDAwMDAwMH19",
"dependencies": [
"data.terraform_remote_state.privnet_dns_router",
"openstack_compute_servergroup_v2.gcat_server_group"
]
}
]
}
],
"check_results": null
}

View File

@ -4,7 +4,7 @@ terraform {
required_providers {
openstack = {
source = "terraform-provider-openstack/openstack"
version = "~> 1.53.0"
version = ">= 1.54.0"
}
}
}
@ -27,8 +27,8 @@ module "instance_with_data_volume" {
source = "../../modules/instance_with_data_volume"
instances_with_data_volume_map = {
geonetwork1_pre = {
name = "geonetwork1-pre",
geonetwork1 = {
name = "geonetwork1",
description = "This instance serves geonetwork service",
flavor = module.common_variables.flavor_list.m1_medium,
networks = [data.terraform_remote_state.privnet_dns_router.outputs.main_private_network.name, module.common_variables.networks_list.shared_postgresql],
@ -36,7 +36,7 @@ module "instance_with_data_volume" {
server_groups_ids = [],
image_ref = module.common_variables.ubuntu_1804
volume = {
name = "geonetwork1_pre_data_volume",
name = "geonetwork1_data_volume",
size = "20",
device = "/dev/vdb"
}
@ -55,10 +55,10 @@ module "dns_records_create" {
source = "../../modules/dns_resources"
dns_resources_map = {
geonetwork1-pre = {
geonetwork1 = {
zone_id = data.terraform_remote_state.privnet_dns_router.outputs.dns_zone_id
name = join(".", ["geonetwork1-pre", data.terraform_remote_state.privnet_dns_router.outputs.dns_zone.zone_name])
description = "Geonetwork geonetwork1-pre"
name = join(".", ["geonetwork1", data.terraform_remote_state.privnet_dns_router.outputs.dns_zone.zone_name])
description = "Geonetwork geonetwork1"
ttl = 8600
type = "CNAME"
records = [local.cname_target]

View File

@ -1,7 +1,7 @@
{
"version": 4,
"terraform_version": "1.6.4",
"serial": 19,
"serial": 28,
"lineage": "80fc3754-c1fc-b63b-a078-170496b36b2a",
"outputs": {},
"resources": [
@ -132,6 +132,7 @@
"main_subnet_network_id": "cd77a2fd-4a36-4254-b1d0-70b3874c6d04",
"mtu_size": 8942,
"networks_list": {
"cassandra": "cassandra-net",
"orientdb": "orientdb-net",
"orientdb_se": "orientdb-se-net",
"shared_postgresql": "postgresql-srv-net",
@ -146,6 +147,7 @@
"isti_net": "146.48.80.0/21",
"s2i2s_net": "146.48.28.0/22"
},
"nfs_share_no_ingress_secgroup_id": "ddb16502-7217-4677-a8a7-ca0cbf9a779a",
"octavia_information": {
"main_lb_description": "Main L4 load balancer for the D4Science PRE production",
"main_lb_hostname": "main-lb",
@ -168,7 +170,7 @@
"prometheus_server_data": {
"flavor": "m1.medium",
"name": "prometheus",
"public_grafana_server_cidr": "146.48.122.132/32",
"public_grafana_server_cidr": "146.48.28.103/32",
"vol_data_device": "/dev/vdb",
"vol_data_name": "prometheus-data",
"vol_data_size": "100"
@ -195,6 +197,7 @@
"limited_HTTPS_access": "restricted_web_service",
"limited_SSH_access": "Limited SSH access",
"mongo": "mongo",
"nfs_share_no_ingress": "nfs_share_no_ingress",
"orientdb_internal_docker_traffic": "orientdb_internal_docker_traffic",
"postgreSQL": "PostgreSQL service",
"public_HTTPS": "Public HTTPS"
@ -226,6 +229,8 @@
"s2i2s_vpn_2_cidr": "146.48.28.11/32",
"shell_d4s_cidr": "146.48.122.95/32"
},
"storage_nfs_network_id": "5f4023cc-4016-404c-94e5-86220095fbaf",
"storage_nfs_subnet_id": "6ff0f9e8-0e74-4cc3-a268-7ed4af435696",
"ubuntu1804_data_file": "../../openstack_vm_data_scripts/ubuntu1804.sh",
"ubuntu2204_data_file": "../../openstack_vm_data_scripts/ubuntu2204.sh",
"ubuntu_1804": {
@ -326,6 +331,7 @@
"map",
"string"
],
"nfs_share_no_ingress_secgroup_id": "string",
"octavia_information": [
"map",
"string"
@ -370,6 +376,8 @@
"map",
"string"
],
"storage_nfs_network_id": "string",
"storage_nfs_subnet_id": "string",
"ubuntu1804_data_file": "string",
"ubuntu2204_data_file": "string",
"ubuntu_1804": [
@ -397,13 +405,13 @@
"provider": "provider[\"registry.terraform.io/terraform-provider-openstack/openstack\"]",
"instances": [
{
"index_key": "geonetwork1-pre",
"index_key": "geonetwork1",
"schema_version": 0,
"attributes": {
"description": "Geonetwork geonetwork1-pre",
"description": "Geonetwork geonetwork1",
"disable_status_check": false,
"id": "c1a4b4bc-f167-4387-855d-38f0f99ca05c/0bad49a2-0244-4714-8e03-e0923b135cec",
"name": "geonetwork1-pre.cloud-pre.d4science.org.",
"id": "c1a4b4bc-f167-4387-855d-38f0f99ca05c/c8a501e8-06ff-4009-bd9e-bbe7999564c1",
"name": "geonetwork1.cloud-pre.d4science.org.",
"project_id": "6fdc02e2827b405dad99f34698659742",
"records": [
"main-lb.cloud-pre.d4science.org."
@ -431,19 +439,19 @@
"provider": "provider[\"registry.terraform.io/terraform-provider-openstack/openstack\"]",
"instances": [
{
"index_key": "geonetwork1_pre",
"index_key": "geonetwork1",
"schema_version": 0,
"attributes": {
"attachment": [],
"availability_zone": "nova",
"backup_id": "",
"consistency_group_id": null,
"description": "",
"enable_online_resize": null,
"id": "ab367e14-03ae-4cc6-980f-a7a72e418e35",
"id": "1b2d6109-72ed-45ba-a064-d695c1a6d62e",
"image_id": null,
"metadata": {},
"multiattach": null,
"name": "geonetwork1_pre_data_volume",
"name": "geonetwork1_data_volume",
"region": "isti_area_pi_1",
"scheduler_hints": [],
"size": 20,
@ -469,10 +477,10 @@
"provider": "provider[\"registry.terraform.io/terraform-provider-openstack/openstack\"]",
"instances": [
{
"index_key": "geonetwork1_pre",
"index_key": "geonetwork1",
"schema_version": 0,
"attributes": {
"access_ip_v4": "10.1.35.94",
"access_ip_v4": "10.1.33.56",
"access_ip_v6": "",
"admin_pass": null,
"all_metadata": {},
@ -495,34 +503,31 @@
}
],
"config_drive": null,
"created": "2024-01-24 16:48:03 +0000 UTC",
"created": "2024-10-31 11:12:05 +0000 UTC",
"flavor_id": "4",
"flavor_name": "m1.medium",
"floating_ip": null,
"force_delete": false,
"id": "2b91c809-baea-4cd9-b623-920d7ad1f345",
"id": "1fa0d42a-3b5f-4f96-9089-9b9e11822db3",
"image_id": "Attempt to boot from volume - no image supplied",
"image_name": null,
"key_pair": "Giancarlo Panichi",
"metadata": null,
"name": "geonetwork1-pre",
"name": "geonetwork1",
"network": [
{
"access_network": false,
"fixed_ip_v4": "10.1.35.94",
"fixed_ip_v4": "10.1.33.56",
"fixed_ip_v6": "",
"floating_ip": "",
"mac": "fa:16:3e:6a:e8:bc",
"mac": "fa:16:3e:9f:14:47",
"name": "d4s-pre-cloud-main",
"port": "",
"uuid": "23fd8a99-d551-4ada-8d3a-9859542ebb8c"
},
{
"access_network": false,
"fixed_ip_v4": "192.168.3.132",
"fixed_ip_v4": "192.168.1.15",
"fixed_ip_v6": "",
"floating_ip": "",
"mac": "fa:16:3e:33:0c:1a",
"mac": "fa:16:3e:22:d8:25",
"name": "postgresql-srv-net",
"port": "",
"uuid": "e25395f4-f1aa-4819-b5a5-36d25ee5af54"
@ -540,10 +545,9 @@
"stop_before_destroy": false,
"tags": null,
"timeouts": null,
"updated": "2024-01-24 16:48:43 +0000 UTC",
"updated": "2024-10-31 11:12:56 +0000 UTC",
"user_data": "47d4769e61324c305c4b70ed6673de4fad84150d",
"vendor_options": [],
"volume": []
"vendor_options": []
},
"sensitive_attributes": [],
"private": "eyJlMmJmYjczMC1lY2FhLTExZTYtOGY4OC0zNDM2M2JjN2M0YzAiOnsiY3JlYXRlIjoxODAwMDAwMDAwMDAwLCJkZWxldGUiOjE4MDAwMDAwMDAwMDAsInVwZGF0ZSI6MTgwMDAwMDAwMDAwMH19",
@ -561,17 +565,18 @@
"provider": "provider[\"registry.terraform.io/terraform-provider-openstack/openstack\"]",
"instances": [
{
"index_key": "geonetwork1_pre",
"index_key": "geonetwork1",
"schema_version": 0,
"attributes": {
"device": "/dev/vdb",
"id": "2b91c809-baea-4cd9-b623-920d7ad1f345/ab367e14-03ae-4cc6-980f-a7a72e418e35",
"instance_id": "2b91c809-baea-4cd9-b623-920d7ad1f345",
"id": "1fa0d42a-3b5f-4f96-9089-9b9e11822db3/1b2d6109-72ed-45ba-a064-d695c1a6d62e",
"instance_id": "1fa0d42a-3b5f-4f96-9089-9b9e11822db3",
"multiattach": null,
"region": "isti_area_pi_1",
"tag": null,
"timeouts": null,
"vendor_options": [],
"volume_id": "ab367e14-03ae-4cc6-980f-a7a72e418e35"
"volume_id": "1b2d6109-72ed-45ba-a064-d695c1a6d62e"
},
"sensitive_attributes": [],
"private": "eyJlMmJmYjczMC1lY2FhLTExZTYtOGY4OC0zNDM2M2JjN2M0YzAiOnsiY3JlYXRlIjo2MDAwMDAwMDAwMDAsImRlbGV0ZSI6NjAwMDAwMDAwMDAwfX0=",

View File

@ -0,0 +1,66 @@
# Define required providers
terraform {
required_version = ">= 0.14.0"
required_providers {
openstack = {
source = "terraform-provider-openstack/openstack"
version = ">= 1.54.0"
}
}
}
data "terraform_remote_state" "privnet_dns_router" {
backend = "local"
config = {
path = "../project-setup/terraform.tfstate"
}
}
#
# Uses common_variables as module
#
module "common_variables" {
source = "../../modules/common_variables"
}
module "instance_without_data_volume" {
source = "../../modules/instance_without_data_volume"
instances_without_data_volume_map = {
geoportal = {
name = "geoportal-cms",
description = "This instance serves the Geoportal service of Preproduction",
flavor = module.common_variables.flavor_list.m1_medium,
networks = [data.terraform_remote_state.privnet_dns_router.outputs.main_private_network.name, module.common_variables.networks_list.shared_postgresql],
security_groups = [data.terraform_remote_state.privnet_dns_router.outputs.default_security_group_name, data.terraform_remote_state.privnet_dns_router.outputs.security_group_list.http_and_https_from_the_load_balancers, data.terraform_remote_state.privnet_dns_router.outputs.security_group_list.debugging_from_jump_node],
server_groups_ids = [],
image_ref = module.common_variables.ubuntu_1804
}
}
}
locals {
cname_target = "main-lb.${data.terraform_remote_state.privnet_dns_router.outputs.dns_zone.zone_name}"
}
#
# Add DNS record/s
#
module "dns_records_create" {
source = "../../modules/dns_resources"
dns_resources_map = {
geoportal = {
zone_id = data.terraform_remote_state.privnet_dns_router.outputs.dns_zone_id
name = join(".", ["geoportal", data.terraform_remote_state.privnet_dns_router.outputs.dns_zone.zone_name])
description = "Geoportal CNAME"
ttl = 8600
type = "CNAME"
records = [local.cname_target]
}
}
}

View File

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

View File

@ -0,0 +1,525 @@
{
"version": 4,
"terraform_version": "1.6.4",
"serial": 8,
"lineage": "a19bbf32-cc78-a543-44c6-448d97911701",
"outputs": {},
"resources": [
{
"mode": "data",
"type": "terraform_remote_state",
"name": "privnet_dns_router",
"provider": "provider[\"terraform.io/builtin/terraform\"]",
"instances": [
{
"schema_version": 0,
"attributes": {
"backend": "local",
"config": {
"value": {
"path": "../project-setup/terraform.tfstate"
},
"type": [
"object",
{
"path": "string"
}
]
},
"defaults": null,
"outputs": {
"value": {
"almalinux_9": {
"name": "AlmaLinux-9.0-20220718",
"uuid": "541650fc-dd19-4f38-bb1d-7333ed9dd688"
},
"availability_zone_no_gpu_name": "cnr-isti-nova-a",
"availability_zone_with_gpu_name": "cnr-isti-nova-gpu-a",
"availability_zones_names": {
"availability_zone_no_gpu": "cnr-isti-nova-a",
"availability_zone_with_gpu": "cnr-isti-nova-gpu-a"
},
"basic_services_ip": {
"ca": "10.1.32.4",
"ca_cidr": "10.1.32.4/32",
"haproxy_l7_1": "10.1.32.11",
"haproxy_l7_1_cidr": "10.1.32.11/32",
"haproxy_l7_2": "10.1.32.12",
"haproxy_l7_2_cidr": "10.1.32.12/32",
"octavia_main": "10.1.32.20",
"octavia_main_cidr": "10.1.32.20/32",
"prometheus": "10.1.32.10",
"prometheus_cidr": "10.1.32.10/32",
"ssh_jump": "10.1.32.5",
"ssh_jump_cidr": "10.1.32.5/32"
},
"centos_7": {
"name": "CentOS-7",
"uuid": "f0187a99-64f6-462a-ab5f-ef52fe62f2ca"
},
"default_security_group_name": "default_for_all",
"dns_zone": {
"description": "DNS primary zone for the d4s-pre-cloud project",
"email": "postmaster@isti.cnr.it",
"id": "c1a4b4bc-f167-4387-855d-38f0f99ca05c",
"ttl": "8600",
"zone_name": "cloud-pre.d4science.org."
},
"dns_zone_id": "c1a4b4bc-f167-4387-855d-38f0f99ca05c",
"el7_data_file": "../../openstack_vm_data_scripts/el7.sh",
"external_gateway_ip": [
{
"ip_address": "146.48.30.241",
"subnet_id": "57f87509-4016-46fb-b8c3-25fca7f72ccb"
}
],
"external_network": {
"id": "1d2ff137-6ff7-4017-be2b-0d6c4af2353b",
"name": "external-network"
},
"external_network_id": "1d2ff137-6ff7-4017-be2b-0d6c4af2353b",
"external_router": {
"description": "D4Science Preprod main router",
"id": "cc26064a-bb08-4c0b-929f-d0cb39f934a3",
"name": "d4s-pre-cloud-external-router"
},
"flavor_list": {
"c1_large": "c1.large",
"c1_medium": "c1.medium",
"c1_small": "c1.small",
"c2_large": "c2.large",
"m1_large": "m1.large",
"m1_medium": "m1.medium",
"m1_xlarge": "m1.xlarge",
"m1_xxl": "m1.xxl",
"m2_large": "m2.large",
"m2_medium": "m2.medium",
"m2_small": "m2.small",
"m3_large": "m3.large"
},
"floating_ip_pools": {
"main_public_ip_pool": "external-network"
},
"haproxy_l7_data": {
"flavor": "m1.medium",
"haproxy_1": "haproxy-l7-1",
"haproxy_2": "haproxy-l7-2",
"name": "main-haproxy-l7",
"vm_count": "2"
},
"internal_ca_data": {
"flavor": "m1.small",
"name": "ca"
},
"main_haproxy_l7_ip": [
"10.1.32.11",
"10.1.32.12"
],
"main_private_network": {
"description": "D4Science Preprod private network (use this as the main network)",
"name": "d4s-pre-cloud-main"
},
"main_private_network_id": "23fd8a99-d551-4ada-8d3a-9859542ebb8c",
"main_private_subnet": {
"allocation_end": "10.1.35.254",
"allocation_start": "10.1.32.100",
"cidr": "10.1.32.0/22",
"description": "D4Science Preprod main private subnet",
"gateway_ip": "10.1.32.1",
"name": "d4s-pre-cloud-main-subnet"
},
"main_region": "isti_area_pi_1",
"main_subnet_network_id": "cd77a2fd-4a36-4254-b1d0-70b3874c6d04",
"mtu_size": 8942,
"networks_list": {
"cassandra": "cassandra-net",
"orientdb": "orientdb-net",
"orientdb_se": "orientdb-se-net",
"shared_postgresql": "postgresql-srv-net",
"swarm": "swarm-nfs-net",
"timescaledb": "timescaledb-net"
},
"networks_with_d4s_services": {
"garr_ct1_net": "90.147.166.0/23",
"garr_na_net": "90.147.152.0/24",
"garr_pa1_net": "90.147.188.0/23",
"infrascience_net": "146.48.122.0/23",
"isti_net": "146.48.80.0/21",
"s2i2s_net": "146.48.28.0/22"
},
"nfs_share_no_ingress_secgroup_id": "ddb16502-7217-4677-a8a7-ca0cbf9a779a",
"octavia_information": {
"main_lb_description": "Main L4 load balancer for the D4Science PRE production",
"main_lb_hostname": "main-lb",
"main_lb_name": "d4s-pre-cloud-l4-load-balancer",
"octavia_flavor": "octavia_amphora-mvcpu-ha",
"octavia_flavor_id": "394988b5-6603-4a1e-a939-8e177c6681c7",
"octavia_vrrp_ip_1": "10.1.33.159/32",
"octavia_vrrp_ip_2": "10.1.32.199/32",
"swarm_lb_name": "d4s-pre-cloud-l4-swarm-load-balancer"
},
"os_project_data": {
"id": "6fdc02e2827b405dad99f34698659742"
},
"policy_list": {
"affinity": "affinity",
"anti_affinity": "anti-affinity",
"soft_affinity": "soft-affinity",
"soft_anti_affinity": "soft-anti-affinity"
},
"prometheus_server_data": {
"flavor": "m1.medium",
"name": "prometheus",
"public_grafana_server_cidr": "146.48.28.103/32",
"vol_data_device": "/dev/vdb",
"vol_data_name": "prometheus-data",
"vol_data_size": "100"
},
"resolvers_ip": [
"146.48.29.97",
"146.48.29.98",
"146.48.29.99"
],
"resource_registry_addresses": {},
"security_group_list": {
"acaland": "acaland's dev machine",
"access_to_orientdb": "access_to_orientdb",
"access_to_orientdb_se": "access_to_orientdb_se",
"access_to_the_timescaledb_service": "access_to_the_timescaledb_service",
"cassandra": "Cassandra",
"dataminer-publish": "dataminer-publish",
"debugging_from_jump_node": "debugging_from_jump_node",
"default": "default",
"docker_swarm": "Docker Swarm",
"docker_swarm_NFS": "Docker Swarm NFS",
"haproxy": "traffic_from_main_lb_to_haproxy_l7",
"http_and_https_from_the_load_balancers": "traffic_from_the_main_load_balancers",
"limited_HTTPS_access": "restricted_web_service",
"limited_SSH_access": "Limited SSH access",
"mongo": "mongo",
"nfs_share_no_ingress": "nfs_share_no_ingress",
"orientdb_internal_docker_traffic": "orientdb_internal_docker_traffic",
"postgreSQL": "PostgreSQL service",
"public_HTTPS": "Public HTTPS"
},
"shared_postgresql_server_data": {
"allocation_pool_end": "192.168.3.254",
"allocation_pool_start": "192.168.0.100",
"flavor": "m1.medium",
"name": "shared-postgresql-server",
"network_cidr": "192.168.0.0/22",
"network_description": "Network used to communicate with the shared postgresql service",
"network_name": "postgresql-srv-net",
"server_cidr": "192.168.0.5/22",
"server_ip": "192.168.0.5",
"vol_data_device": "/dev/vdb",
"vol_data_name": "shared-postgresql-data",
"vol_data_size": "100"
},
"smartexecutor_addresses": {},
"ssh_jump_proxy": {
"flavor": "m2.small",
"name": "ssh-jump-proxy"
},
"ssh_sources": {
"d4s_vpn_1_cidr": "146.48.122.27/32",
"d4s_vpn_2_cidr": "146.48.122.49/32",
"infrascience_net_cidr": "146.48.122.0/23",
"s2i2s_vpn_1_cidr": "146.48.28.10/32",
"s2i2s_vpn_2_cidr": "146.48.28.11/32",
"shell_d4s_cidr": "146.48.122.95/32"
},
"storage_nfs_network_id": "5f4023cc-4016-404c-94e5-86220095fbaf",
"storage_nfs_subnet_id": "6ff0f9e8-0e74-4cc3-a268-7ed4af435696",
"ubuntu1804_data_file": "../../openstack_vm_data_scripts/ubuntu1804.sh",
"ubuntu2204_data_file": "../../openstack_vm_data_scripts/ubuntu2204.sh",
"ubuntu_1804": {
"name": "Ubuntu-Bionic-18.04",
"user_data_file": "../../openstack_vm_data_scripts/ubuntu1804.sh",
"uuid": "7ed6a2cd-2b07-482e-8ce4-f018dff16c89"
},
"ubuntu_2204": {
"name": "Ubuntu-Jammy-22.04",
"user_data_file": "../../openstack_vm_data_scripts/ubuntu2204.sh",
"uuid": "54768889-8556-4be4-a2eb-82a4d9b34627"
}
},
"type": [
"object",
{
"almalinux_9": [
"map",
"string"
],
"availability_zone_no_gpu_name": "string",
"availability_zone_with_gpu_name": "string",
"availability_zones_names": [
"map",
"string"
],
"basic_services_ip": [
"map",
"string"
],
"centos_7": [
"map",
"string"
],
"default_security_group_name": "string",
"dns_zone": [
"map",
"string"
],
"dns_zone_id": "string",
"el7_data_file": "string",
"external_gateway_ip": [
"list",
[
"object",
{
"ip_address": "string",
"subnet_id": "string"
}
]
],
"external_network": [
"map",
"string"
],
"external_network_id": "string",
"external_router": [
"map",
"string"
],
"flavor_list": [
"map",
"string"
],
"floating_ip_pools": [
"map",
"string"
],
"haproxy_l7_data": [
"map",
"string"
],
"internal_ca_data": [
"map",
"string"
],
"main_haproxy_l7_ip": [
"list",
"string"
],
"main_private_network": [
"map",
"string"
],
"main_private_network_id": "string",
"main_private_subnet": [
"map",
"string"
],
"main_region": "string",
"main_subnet_network_id": "string",
"mtu_size": "number",
"networks_list": [
"map",
"string"
],
"networks_with_d4s_services": [
"map",
"string"
],
"nfs_share_no_ingress_secgroup_id": "string",
"octavia_information": [
"map",
"string"
],
"os_project_data": [
"map",
"string"
],
"policy_list": [
"map",
"string"
],
"prometheus_server_data": [
"map",
"string"
],
"resolvers_ip": [
"list",
"string"
],
"resource_registry_addresses": [
"map",
"string"
],
"security_group_list": [
"map",
"string"
],
"shared_postgresql_server_data": [
"map",
"string"
],
"smartexecutor_addresses": [
"map",
"string"
],
"ssh_jump_proxy": [
"map",
"string"
],
"ssh_sources": [
"map",
"string"
],
"storage_nfs_network_id": "string",
"storage_nfs_subnet_id": "string",
"ubuntu1804_data_file": "string",
"ubuntu2204_data_file": "string",
"ubuntu_1804": [
"map",
"string"
],
"ubuntu_2204": [
"map",
"string"
]
}
]
},
"workspace": null
},
"sensitive_attributes": []
}
]
},
{
"module": "module.dns_records_create",
"mode": "managed",
"type": "openstack_dns_recordset_v2",
"name": "add_dns_recordset",
"provider": "provider[\"registry.terraform.io/terraform-provider-openstack/openstack\"]",
"instances": [
{
"index_key": "geoportal",
"schema_version": 0,
"attributes": {
"description": "Geoportal CNAME",
"disable_status_check": false,
"id": "c1a4b4bc-f167-4387-855d-38f0f99ca05c/1acb0bfd-9e21-4813-b4d3-f34591e73232",
"name": "geoportal.cloud-pre.d4science.org.",
"project_id": "6fdc02e2827b405dad99f34698659742",
"records": [
"main-lb.cloud-pre.d4science.org."
],
"region": "isti_area_pi_1",
"timeouts": null,
"ttl": 8600,
"type": "CNAME",
"value_specs": null,
"zone_id": "c1a4b4bc-f167-4387-855d-38f0f99ca05c"
},
"sensitive_attributes": [],
"private": "eyJlMmJmYjczMC1lY2FhLTExZTYtOGY4OC0zNDM2M2JjN2M0YzAiOnsiY3JlYXRlIjo2MDAwMDAwMDAwMDAsImRlbGV0ZSI6NjAwMDAwMDAwMDAwLCJ1cGRhdGUiOjYwMDAwMDAwMDAwMH19",
"dependencies": [
"data.terraform_remote_state.privnet_dns_router"
]
}
]
},
{
"module": "module.instance_without_data_volume",
"mode": "managed",
"type": "openstack_compute_instance_v2",
"name": "smartgears_service",
"provider": "provider[\"registry.terraform.io/terraform-provider-openstack/openstack\"]",
"instances": [
{
"index_key": "geoportal",
"schema_version": 0,
"attributes": {
"access_ip_v4": "10.1.35.163",
"access_ip_v6": "",
"admin_pass": null,
"all_metadata": {},
"all_tags": [],
"availability_zone": "cnr-isti-nova-a",
"availability_zone_hints": "cnr-isti-nova-a",
"block_device": [
{
"boot_index": 0,
"delete_on_termination": false,
"destination_type": "volume",
"device_type": "",
"disk_bus": "",
"guest_format": "",
"multiattach": false,
"source_type": "image",
"uuid": "7ed6a2cd-2b07-482e-8ce4-f018dff16c89",
"volume_size": 10,
"volume_type": ""
}
],
"config_drive": null,
"created": "2024-10-31 16:38:28 +0000 UTC",
"flavor_id": "4",
"flavor_name": "m1.medium",
"force_delete": false,
"id": "798c66b0-c164-49d0-bce1-eb665e88ae49",
"image_id": "Attempt to boot from volume - no image supplied",
"image_name": null,
"key_pair": "Giancarlo Panichi",
"metadata": null,
"name": "geoportal-cms",
"network": [
{
"access_network": false,
"fixed_ip_v4": "10.1.35.163",
"fixed_ip_v6": "",
"mac": "fa:16:3e:28:dc:30",
"name": "d4s-pre-cloud-main",
"port": "",
"uuid": "23fd8a99-d551-4ada-8d3a-9859542ebb8c"
},
{
"access_network": false,
"fixed_ip_v4": "192.168.0.234",
"fixed_ip_v6": "",
"mac": "fa:16:3e:ab:f9:d7",
"name": "postgresql-srv-net",
"port": "",
"uuid": "e25395f4-f1aa-4819-b5a5-36d25ee5af54"
}
],
"network_mode": null,
"personality": [],
"power_state": "active",
"region": "isti_area_pi_1",
"scheduler_hints": [],
"security_groups": [
"debugging_from_jump_node",
"default_for_all",
"traffic_from_the_main_load_balancers"
],
"stop_before_destroy": false,
"tags": null,
"timeouts": null,
"updated": "2024-10-31 16:39:23 +0000 UTC",
"user_data": "47d4769e61324c305c4b70ed6673de4fad84150d",
"vendor_options": []
},
"sensitive_attributes": [],
"private": "eyJlMmJmYjczMC1lY2FhLTExZTYtOGY4OC0zNDM2M2JjN2M0YzAiOnsiY3JlYXRlIjoxODAwMDAwMDAwMDAwLCJkZWxldGUiOjE4MDAwMDAwMDAwMDAsInVwZGF0ZSI6MTgwMDAwMDAwMDAwMH19",
"dependencies": [
"data.terraform_remote_state.privnet_dns_router"
]
}
]
}
],
"check_results": null
}

View File

@ -4,7 +4,7 @@ terraform {
required_providers {
openstack = {
source = "terraform-provider-openstack/openstack"
version = "~> 1.53.0"
version = ">= 1.54.0"
}
}
}
@ -29,16 +29,16 @@ module "instance_with_data_volume" {
source = "../../modules/instance_with_data_volume"
instances_with_data_volume_map = {
geoserver1_pre = {
name = "geoserver1-pre",
description = "Geoserver preprod instance",
geoserver1 = {
name = "geoserver1",
description = "Geoserver 1 preprod instance",
flavor = module.common_variables.flavor_list.m1_large,
networks = [data.terraform_remote_state.privnet_dns_router.outputs.main_private_network.name, module.common_variables.networks_list.shared_postgresql],
security_groups = [data.terraform_remote_state.privnet_dns_router.outputs.default_security_group_name, data.terraform_remote_state.privnet_dns_router.outputs.security_group_list.http_and_https_from_the_load_balancers],
server_groups_ids = [],
image_ref = module.common_variables.ubuntu_1804,
volume = {
name = "geoserver1_pre_data_volume",
name = "geoserver1_data_volume",
size = "70",
device = "/dev/vdb"
}
@ -58,10 +58,10 @@ module "dns_records_create" {
source = "../../modules/dns_resources"
dns_resources_map = {
geoserver1-pre = {
geoserver1 = {
zone_id = data.terraform_remote_state.privnet_dns_router.outputs.dns_zone_id
name = join(".", ["geoserver1-pre", data.terraform_remote_state.privnet_dns_router.outputs.dns_zone.zone_name])
description = "Geoserver geoserver1-pre"
name = join(".", ["geoserver1", data.terraform_remote_state.privnet_dns_router.outputs.dns_zone.zone_name])
description = "Geoserver geoserver1"
ttl = 8600
type = "CNAME"
records = [local.cname_target]

View File

@ -1,7 +1,7 @@
{
"version": 4,
"terraform_version": "1.6.6",
"serial": 7,
"terraform_version": "1.6.4",
"serial": 22,
"lineage": "89065a12-d7ef-e97c-d514-fbacb3a932a3",
"outputs": {},
"resources": [
@ -132,6 +132,7 @@
"main_subnet_network_id": "cd77a2fd-4a36-4254-b1d0-70b3874c6d04",
"mtu_size": 8942,
"networks_list": {
"cassandra": "cassandra-net",
"orientdb": "orientdb-net",
"orientdb_se": "orientdb-se-net",
"shared_postgresql": "postgresql-srv-net",
@ -146,6 +147,7 @@
"isti_net": "146.48.80.0/21",
"s2i2s_net": "146.48.28.0/22"
},
"nfs_share_no_ingress_secgroup_id": "ddb16502-7217-4677-a8a7-ca0cbf9a779a",
"octavia_information": {
"main_lb_description": "Main L4 load balancer for the D4Science PRE production",
"main_lb_hostname": "main-lb",
@ -168,7 +170,7 @@
"prometheus_server_data": {
"flavor": "m1.medium",
"name": "prometheus",
"public_grafana_server_cidr": "146.48.122.132/32",
"public_grafana_server_cidr": "146.48.28.103/32",
"vol_data_device": "/dev/vdb",
"vol_data_name": "prometheus-data",
"vol_data_size": "100"
@ -195,6 +197,7 @@
"limited_HTTPS_access": "restricted_web_service",
"limited_SSH_access": "Limited SSH access",
"mongo": "mongo",
"nfs_share_no_ingress": "nfs_share_no_ingress",
"orientdb_internal_docker_traffic": "orientdb_internal_docker_traffic",
"postgreSQL": "PostgreSQL service",
"public_HTTPS": "Public HTTPS"
@ -226,6 +229,8 @@
"s2i2s_vpn_2_cidr": "146.48.28.11/32",
"shell_d4s_cidr": "146.48.122.95/32"
},
"storage_nfs_network_id": "5f4023cc-4016-404c-94e5-86220095fbaf",
"storage_nfs_subnet_id": "6ff0f9e8-0e74-4cc3-a268-7ed4af435696",
"ubuntu1804_data_file": "../../openstack_vm_data_scripts/ubuntu1804.sh",
"ubuntu2204_data_file": "../../openstack_vm_data_scripts/ubuntu2204.sh",
"ubuntu_1804": {
@ -326,6 +331,7 @@
"map",
"string"
],
"nfs_share_no_ingress_secgroup_id": "string",
"octavia_information": [
"map",
"string"
@ -370,6 +376,8 @@
"map",
"string"
],
"storage_nfs_network_id": "string",
"storage_nfs_subnet_id": "string",
"ubuntu1804_data_file": "string",
"ubuntu2204_data_file": "string",
"ubuntu_1804": [
@ -397,13 +405,13 @@
"provider": "provider[\"registry.terraform.io/terraform-provider-openstack/openstack\"]",
"instances": [
{
"index_key": "geoserver1-pre",
"index_key": "geoserver1",
"schema_version": 0,
"attributes": {
"description": "Geoserver geoserver1-pre",
"description": "Geoserver geoserver1",
"disable_status_check": false,
"id": "c1a4b4bc-f167-4387-855d-38f0f99ca05c/3399d951-12bc-49b1-85b3-450d60ee90f0",
"name": "geoserver1-pre.cloud-pre.d4science.org.",
"id": "c1a4b4bc-f167-4387-855d-38f0f99ca05c/cdd4ddd1-8a4e-4ea4-b14f-8cb0a82a6281",
"name": "geoserver1.cloud-pre.d4science.org.",
"project_id": "6fdc02e2827b405dad99f34698659742",
"records": [
"main-lb.cloud-pre.d4science.org."
@ -431,25 +439,25 @@
"provider": "provider[\"registry.terraform.io/terraform-provider-openstack/openstack\"]",
"instances": [
{
"index_key": "geoserver1_pre",
"index_key": "geoserver1",
"schema_version": 0,
"attributes": {
"attachment": [
{
"device": "/dev/vdb",
"id": "bfcc0649-29d2-484f-b6ee-a6e147197654",
"instance_id": "3ca3a73f-4ffa-4226-86b6-724c1f52719f"
"id": "de36e154-8145-45dd-abb8-4fd7a11236bd",
"instance_id": "5450e975-456c-4524-8aaa-937f6e8e5099"
}
],
"availability_zone": "nova",
"backup_id": "",
"consistency_group_id": null,
"description": "",
"enable_online_resize": null,
"id": "bfcc0649-29d2-484f-b6ee-a6e147197654",
"id": "de36e154-8145-45dd-abb8-4fd7a11236bd",
"image_id": null,
"metadata": {},
"multiattach": null,
"name": "geoserver1_pre_data_volume",
"name": "geoserver1_data_volume",
"region": "isti_area_pi_1",
"scheduler_hints": [],
"size": 70,
@ -475,10 +483,10 @@
"provider": "provider[\"registry.terraform.io/terraform-provider-openstack/openstack\"]",
"instances": [
{
"index_key": "geoserver1_pre",
"index_key": "geoserver1",
"schema_version": 0,
"attributes": {
"access_ip_v4": "10.1.33.78",
"access_ip_v4": "10.1.33.183",
"access_ip_v6": "",
"admin_pass": null,
"all_metadata": {},
@ -501,34 +509,31 @@
}
],
"config_drive": null,
"created": "2024-01-25 10:54:01 +0000 UTC",
"created": "2024-10-31 10:40:11 +0000 UTC",
"flavor_id": "9",
"flavor_name": "m1.large",
"floating_ip": null,
"force_delete": false,
"id": "3ca3a73f-4ffa-4226-86b6-724c1f52719f",
"id": "5450e975-456c-4524-8aaa-937f6e8e5099",
"image_id": "Attempt to boot from volume - no image supplied",
"image_name": null,
"key_pair": "adellam",
"key_pair": "Giancarlo Panichi",
"metadata": null,
"name": "geoserver1-pre",
"name": "geoserver1",
"network": [
{
"access_network": false,
"fixed_ip_v4": "10.1.33.78",
"fixed_ip_v4": "10.1.33.183",
"fixed_ip_v6": "",
"floating_ip": "",
"mac": "fa:16:3e:16:c7:a5",
"mac": "fa:16:3e:f5:81:06",
"name": "d4s-pre-cloud-main",
"port": "",
"uuid": "23fd8a99-d551-4ada-8d3a-9859542ebb8c"
},
{
"access_network": false,
"fixed_ip_v4": "192.168.1.41",
"fixed_ip_v4": "192.168.3.217",
"fixed_ip_v6": "",
"floating_ip": "",
"mac": "fa:16:3e:3b:f7:e4",
"mac": "fa:16:3e:38:3e:f0",
"name": "postgresql-srv-net",
"port": "",
"uuid": "e25395f4-f1aa-4819-b5a5-36d25ee5af54"
@ -546,10 +551,9 @@
"stop_before_destroy": false,
"tags": [],
"timeouts": null,
"updated": "2024-01-25 10:54:47 +0000 UTC",
"updated": "2024-10-31 10:41:15 +0000 UTC",
"user_data": "47d4769e61324c305c4b70ed6673de4fad84150d",
"vendor_options": [],
"volume": []
"vendor_options": []
},
"sensitive_attributes": [],
"private": "eyJlMmJmYjczMC1lY2FhLTExZTYtOGY4OC0zNDM2M2JjN2M0YzAiOnsiY3JlYXRlIjoxODAwMDAwMDAwMDAwLCJkZWxldGUiOjE4MDAwMDAwMDAwMDAsInVwZGF0ZSI6MTgwMDAwMDAwMDAwMH19",
@ -567,17 +571,18 @@
"provider": "provider[\"registry.terraform.io/terraform-provider-openstack/openstack\"]",
"instances": [
{
"index_key": "geoserver1_pre",
"index_key": "geoserver1",
"schema_version": 0,
"attributes": {
"device": "/dev/vdb",
"id": "3ca3a73f-4ffa-4226-86b6-724c1f52719f/bfcc0649-29d2-484f-b6ee-a6e147197654",
"instance_id": "3ca3a73f-4ffa-4226-86b6-724c1f52719f",
"id": "5450e975-456c-4524-8aaa-937f6e8e5099/de36e154-8145-45dd-abb8-4fd7a11236bd",
"instance_id": "5450e975-456c-4524-8aaa-937f6e8e5099",
"multiattach": null,
"region": "isti_area_pi_1",
"tag": null,
"timeouts": null,
"vendor_options": [],
"volume_id": "bfcc0649-29d2-484f-b6ee-a6e147197654"
"volume_id": "de36e154-8145-45dd-abb8-4fd7a11236bd"
},
"sensitive_attributes": [],
"private": "eyJlMmJmYjczMC1lY2FhLTExZTYtOGY4OC0zNDM2M2JjN2M0YzAiOnsiY3JlYXRlIjo2MDAwMDAwMDAwMDAsImRlbGV0ZSI6NjAwMDAwMDAwMDAwfX0=",

View File

@ -47,3 +47,25 @@ module "instance_without_data_volume" {
}
}
}
locals {
cname_target = "main-lb.${data.terraform_remote_state.privnet_dns_router.outputs.dns_zone.zone_name}"
}
#
# Add DNS record/s
#
module "dns_records_create" {
source = "../../modules/dns_resources"
dns_resources_map = {
grsf_publisher = {
zone_id = data.terraform_remote_state.privnet_dns_router.outputs.dns_zone_id
name = join(".", ["grsf-publisher", data.terraform_remote_state.privnet_dns_router.outputs.dns_zone.zone_name])
description = "GRSF publisher"
ttl = 8600
type = "CNAME"
records = [local.cname_target]
}
}
}

View File

@ -1,7 +1,7 @@
{
"version": 4,
"terraform_version": "1.6.4",
"serial": 3,
"terraform_version": "1.6.6",
"serial": 5,
"lineage": "826c8593-6c3d-8568-c9e1-1a57900d69b3",
"outputs": {},
"resources": [
@ -407,7 +407,9 @@
"schema_version": 0,
"attributes": {
"id": "8daab67e-ccab-40f7-bc76-84371a663dbf",
"members": [],
"members": [
"ee92a9cd-abb4-47a0-bee9-c9ffd9f22e1d"
],
"name": "grsf-publisher",
"policies": [
"soft-anti-affinity"
@ -425,6 +427,40 @@
}
]
},
{
"module": "module.dns_records_create",
"mode": "managed",
"type": "openstack_dns_recordset_v2",
"name": "add_dns_recordset",
"provider": "provider[\"registry.terraform.io/terraform-provider-openstack/openstack\"]",
"instances": [
{
"index_key": "grsf_publisher",
"schema_version": 0,
"attributes": {
"description": "GRSF publisher",
"disable_status_check": false,
"id": "c1a4b4bc-f167-4387-855d-38f0f99ca05c/e9feade0-2d01-4b25-b215-daa6dda849f7",
"name": "grsf-publisher.cloud-pre.d4science.org.",
"project_id": "6fdc02e2827b405dad99f34698659742",
"records": [
"main-lb.cloud-pre.d4science.org."
],
"region": "isti_area_pi_1",
"timeouts": null,
"ttl": 8600,
"type": "CNAME",
"value_specs": null,
"zone_id": "c1a4b4bc-f167-4387-855d-38f0f99ca05c"
},
"sensitive_attributes": [],
"private": "eyJlMmJmYjczMC1lY2FhLTExZTYtOGY4OC0zNDM2M2JjN2M0YzAiOnsiY3JlYXRlIjo2MDAwMDAwMDAwMDAsImRlbGV0ZSI6NjAwMDAwMDAwMDAwLCJ1cGRhdGUiOjYwMDAwMDAwMDAwMH19",
"dependencies": [
"data.terraform_remote_state.privnet_dns_router"
]
}
]
},
{
"module": "module.instance_without_data_volume",
"mode": "managed",
@ -488,7 +524,7 @@
"region": "isti_area_pi_1",
"scheduler_hints": [
{
"additional_properties": null,
"additional_properties": {},
"build_near_host_ip": "",
"different_cell": [],
"different_host": [],
@ -504,7 +540,7 @@
"traffic_from_the_main_load_balancers"
],
"stop_before_destroy": false,
"tags": null,
"tags": [],
"timeouts": null,
"updated": "2024-03-12 16:36:57 +0000 UTC",
"user_data": "ef3d6e5deb29bd1e5de5a76ae6860f3ee872738c",

View File

@ -0,0 +1,48 @@
# 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"
}
}
#
# Uses common_variables as module
#
module "common_variables" {
source = "../../modules/common_variables"
}
module "keycloak" {
source = "../../modules/keycloak"
keycloak_data = {
affinity_policy = "soft-anti-affinity"
srv_name = "keycloak-pre"
vm_count = 2
vm_flavor = "m1.medium"
boot_vol_size = 10
share_description = "NFS share for the keycloak preprod static data"
share_name = "keycloak_pre_nfs_share"
}
keycloak_recordsets = {
keycloak_main_record = {
name = join(".", ["accounts", data.terraform_remote_state.privnet_dns_router.outputs.dns_zone.zone_name]),
description = "Keycloak preproduction endpoint"
}
}
keycloak_object_store = "keycloak-data-preprod"
}

View File

@ -0,0 +1,21 @@
output "keycloak_data" {
value = module.keycloak.keycloak_data
}
output "keycloak_recordsets" {
value = module.keycloak.keycloak_recordsets
}
output "keycloak_nfs_port_data" {
value = module.keycloak.nfs_port_data
}
output "keycloak_nfs_volume_data" {
value = module.keycloak.keycloak_nfs_volume_data
}
output "keycloak_nfs_volume_acls" {
value = module.keycloak.keycloak_nfs_volume_acls
sensitive = true
}

View File

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

File diff suppressed because it is too large Load Diff

View File

@ -1,7 +1,7 @@
{
"version": 4,
"terraform_version": "1.6.6",
"serial": 60,
"terraform_version": "1.9.8",
"serial": 64,
"lineage": "2cef4407-f7f5-0a46-74de-03956dd178ed",
"outputs": {
"liferay_data": {
@ -190,7 +190,7 @@
"share_proto": "NFS",
"share_server_id": "",
"share_type": "default",
"size": 5,
"size": 30,
"snapshot_id": "",
"timeouts": null
},
@ -1630,7 +1630,14 @@
"vendor_options": [],
"volume": []
},
"sensitive_attributes": [],
"sensitive_attributes": [
[
{
"type": "get_attr",
"value": "admin_pass"
}
]
],
"private": "eyJlMmJmYjczMC1lY2FhLTExZTYtOGY4OC0zNDM2M2JjN2M0YzAiOnsiY3JlYXRlIjoxODAwMDAwMDAwMDAwLCJkZWxldGUiOjE4MDAwMDAwMDAwMDAsInVwZGF0ZSI6MTgwMDAwMDAwMDAwMH19",
"dependencies": [
"module.liferay.data.terraform_remote_state.privnet_dns_router",
@ -1728,7 +1735,14 @@
"vendor_options": [],
"volume": []
},
"sensitive_attributes": [],
"sensitive_attributes": [
[
{
"type": "get_attr",
"value": "admin_pass"
}
]
],
"private": "eyJlMmJmYjczMC1lY2FhLTExZTYtOGY4OC0zNDM2M2JjN2M0YzAiOnsiY3JlYXRlIjoxODAwMDAwMDAwMDAwLCJkZWxldGUiOjE4MDAwMDAwMDAwMDAsInVwZGF0ZSI6MTgwMDAwMDAwMDAwMH19",
"dependencies": [
"module.liferay.data.terraform_remote_state.privnet_dns_router",
@ -1966,6 +1980,61 @@
}
]
},
{
"module": "module.liferay",
"mode": "managed",
"type": "openstack_networking_port_secgroup_associate_v2",
"name": "liferay_timescaledb_port_secgroup",
"provider": "provider[\"registry.terraform.io/terraform-provider-openstack/openstack\"]",
"instances": [
{
"index_key": 0,
"schema_version": 0,
"attributes": {
"all_security_group_ids": [
"ddb16502-7217-4677-a8a7-ca0cbf9a779a"
],
"enforce": false,
"id": "327aac65-7fc0-4dfc-bbfe-e45187510e07",
"port_id": "327aac65-7fc0-4dfc-bbfe-e45187510e07",
"region": "isti_area_pi_1",
"security_group_ids": [
"ddb16502-7217-4677-a8a7-ca0cbf9a779a"
]
},
"sensitive_attributes": [],
"private": "bnVsbA==",
"dependencies": [
"module.liferay.data.terraform_remote_state.privnet_dns_router",
"module.liferay.data.terraform_remote_state.timescaledb",
"module.liferay.openstack_networking_port_v2.liferay_timescaledb_port"
]
},
{
"index_key": 1,
"schema_version": 0,
"attributes": {
"all_security_group_ids": [
"ddb16502-7217-4677-a8a7-ca0cbf9a779a"
],
"enforce": false,
"id": "c3e8d532-7408-485b-aa79-cb78f5e01cea",
"port_id": "c3e8d532-7408-485b-aa79-cb78f5e01cea",
"region": "isti_area_pi_1",
"security_group_ids": [
"ddb16502-7217-4677-a8a7-ca0cbf9a779a"
]
},
"sensitive_attributes": [],
"private": "bnVsbA==",
"dependencies": [
"module.liferay.data.terraform_remote_state.privnet_dns_router",
"module.liferay.data.terraform_remote_state.timescaledb",
"module.liferay.openstack_networking_port_v2.liferay_timescaledb_port"
]
}
]
},
{
"module": "module.liferay",
"mode": "managed",
@ -2112,9 +2181,7 @@
"all_fixed_ips": [
"192.168.11.79"
],
"all_security_group_ids": [
"c01f6017-3e5b-4a89-ade1-53be2974b678"
],
"all_security_group_ids": [],
"all_tags": [],
"allowed_address_pairs": [],
"binding": [
@ -2173,9 +2240,7 @@
"all_fixed_ips": [
"192.168.11.153"
],
"all_security_group_ids": [
"c01f6017-3e5b-4a89-ade1-53be2974b678"
],
"all_security_group_ids": [],
"all_tags": [],
"allowed_address_pairs": [],
"binding": [
@ -2452,7 +2517,14 @@
"state": "active",
"timeouts": null
},
"sensitive_attributes": [],
"sensitive_attributes": [
[
{
"type": "get_attr",
"value": "access_key"
}
]
],
"private": "eyJlMmJmYjczMC1lY2FhLTExZTYtOGY4OC0zNDM2M2JjN2M0YzAiOnsiY3JlYXRlIjo2MDAwMDAwMDAwMDAsImRlbGV0ZSI6NjAwMDAwMDAwMDAwLCJ1cGRhdGUiOjYwMDAwMDAwMDAwMH19",
"dependencies": [
"module.liferay.data.terraform_remote_state.privnet_dns_router",
@ -2478,7 +2550,14 @@
"state": "active",
"timeouts": null
},
"sensitive_attributes": [],
"sensitive_attributes": [
[
{
"type": "get_attr",
"value": "access_key"
}
]
],
"private": "eyJlMmJmYjczMC1lY2FhLTExZTYtOGY4OC0zNDM2M2JjN2M0YzAiOnsiY3JlYXRlIjo2MDAwMDAwMDAwMDAsImRlbGV0ZSI6NjAwMDAwMDAwMDAwLCJ1cGRhdGUiOjYwMDAwMDAwMDAwMH19",
"dependencies": [
"module.liferay.data.terraform_remote_state.privnet_dns_router",
@ -2524,7 +2603,7 @@
"share_proto": "NFS",
"share_server_id": "",
"share_type": "default",
"size": 5,
"size": 30,
"snapshot_id": "",
"timeouts": null
},

View File

@ -0,0 +1,36 @@
# 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 "common_variables" {
source = "../../modules/common_variables"
}
module "orientdb" {
source = "../../modules/orientdb"
orientdb_nodes_count = 1
orientdb_node_flavor = "m1.medium"
orientdb_image_name = module.common_variables.ubuntu_2204.name
orientdb_image_uuid = module.common_variables.ubuntu_2204.uuid
orientdb_se_node_flavor = "m1.medium"
orientdb_se_image_name = module.common_variables.ubuntu_2204.name
orientdb_se_image_uuid = module.common_variables.ubuntu_2204.uuid
orientdb_se_ip = "192.168.12.4"
orientdb_se_cidr = "192.168.12.4/32"
}

View File

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

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,631 @@
{
"version": 4,
"terraform_version": "1.6.4",
"serial": 4,
"lineage": "c72a7338-9f1d-9152-3353-8e359a8be2a7",
"outputs": {},
"resources": [
{
"mode": "data",
"type": "terraform_remote_state",
"name": "privnet_dns_router",
"provider": "provider[\"terraform.io/builtin/terraform\"]",
"instances": [
{
"schema_version": 0,
"attributes": {
"backend": "local",
"config": {
"value": {
"path": "../project-setup/terraform.tfstate"
},
"type": [
"object",
{
"path": "string"
}
]
},
"defaults": null,
"outputs": {
"value": {
"almalinux_9": {
"name": "AlmaLinux-9.0-20220718",
"uuid": "541650fc-dd19-4f38-bb1d-7333ed9dd688"
},
"availability_zone_no_gpu_name": "cnr-isti-nova-a",
"availability_zone_with_gpu_name": "cnr-isti-nova-gpu-a",
"availability_zones_names": {
"availability_zone_no_gpu": "cnr-isti-nova-a",
"availability_zone_with_gpu": "cnr-isti-nova-gpu-a"
},
"basic_services_ip": {
"ca": "10.1.32.4",
"ca_cidr": "10.1.32.4/32",
"haproxy_l7_1": "10.1.32.11",
"haproxy_l7_1_cidr": "10.1.32.11/32",
"haproxy_l7_2": "10.1.32.12",
"haproxy_l7_2_cidr": "10.1.32.12/32",
"octavia_main": "10.1.32.20",
"octavia_main_cidr": "10.1.32.20/32",
"prometheus": "10.1.32.10",
"prometheus_cidr": "10.1.32.10/32",
"ssh_jump": "10.1.32.5",
"ssh_jump_cidr": "10.1.32.5/32"
},
"centos_7": {
"name": "CentOS-7",
"uuid": "f0187a99-64f6-462a-ab5f-ef52fe62f2ca"
},
"default_security_group_name": "default_for_all",
"dns_zone": {
"description": "DNS primary zone for the d4s-pre-cloud project",
"email": "postmaster@isti.cnr.it",
"id": "c1a4b4bc-f167-4387-855d-38f0f99ca05c",
"ttl": "8600",
"zone_name": "cloud-pre.d4science.org."
},
"dns_zone_id": "c1a4b4bc-f167-4387-855d-38f0f99ca05c",
"el7_data_file": "../../openstack_vm_data_scripts/el7.sh",
"external_gateway_ip": [
{
"ip_address": "146.48.30.241",
"subnet_id": "57f87509-4016-46fb-b8c3-25fca7f72ccb"
}
],
"external_network": {
"id": "1d2ff137-6ff7-4017-be2b-0d6c4af2353b",
"name": "external-network"
},
"external_network_id": "1d2ff137-6ff7-4017-be2b-0d6c4af2353b",
"external_router": {
"description": "D4Science Preprod main router",
"id": "cc26064a-bb08-4c0b-929f-d0cb39f934a3",
"name": "d4s-pre-cloud-external-router"
},
"flavor_list": {
"c1_large": "c1.large",
"c1_medium": "c1.medium",
"c1_small": "c1.small",
"c2_large": "c2.large",
"m1_large": "m1.large",
"m1_medium": "m1.medium",
"m1_xlarge": "m1.xlarge",
"m1_xxl": "m1.xxl",
"m2_large": "m2.large",
"m2_medium": "m2.medium",
"m2_small": "m2.small",
"m3_large": "m3.large"
},
"floating_ip_pools": {
"main_public_ip_pool": "external-network"
},
"haproxy_l7_data": {
"flavor": "m1.medium",
"haproxy_1": "haproxy-l7-1",
"haproxy_2": "haproxy-l7-2",
"name": "main-haproxy-l7",
"vm_count": "2"
},
"internal_ca_data": {
"flavor": "m1.small",
"name": "ca"
},
"main_haproxy_l7_ip": [
"10.1.32.11",
"10.1.32.12"
],
"main_private_network": {
"description": "D4Science Preprod private network (use this as the main network)",
"name": "d4s-pre-cloud-main"
},
"main_private_network_id": "23fd8a99-d551-4ada-8d3a-9859542ebb8c",
"main_private_subnet": {
"allocation_end": "10.1.35.254",
"allocation_start": "10.1.32.100",
"cidr": "10.1.32.0/22",
"description": "D4Science Preprod main private subnet",
"gateway_ip": "10.1.32.1",
"name": "d4s-pre-cloud-main-subnet"
},
"main_region": "isti_area_pi_1",
"main_subnet_network_id": "cd77a2fd-4a36-4254-b1d0-70b3874c6d04",
"mtu_size": 8942,
"networks_list": {
"cassandra": "cassandra-net",
"orientdb": "orientdb-net",
"orientdb_se": "orientdb-se-net",
"shared_postgresql": "postgresql-srv-net",
"swarm": "swarm-nfs-net",
"timescaledb": "timescaledb-net"
},
"networks_with_d4s_services": {
"garr_ct1_net": "90.147.166.0/23",
"garr_na_net": "90.147.152.0/24",
"garr_pa1_net": "90.147.188.0/23",
"infrascience_net": "146.48.122.0/23",
"isti_net": "146.48.80.0/21",
"s2i2s_net": "146.48.28.0/22"
},
"nfs_share_no_ingress_secgroup_id": "ddb16502-7217-4677-a8a7-ca0cbf9a779a",
"octavia_information": {
"main_lb_description": "Main L4 load balancer for the D4Science PRE production",
"main_lb_hostname": "main-lb",
"main_lb_name": "d4s-pre-cloud-l4-load-balancer",
"octavia_flavor": "octavia_amphora-mvcpu-ha",
"octavia_flavor_id": "394988b5-6603-4a1e-a939-8e177c6681c7",
"octavia_vrrp_ip_1": "10.1.33.159/32",
"octavia_vrrp_ip_2": "10.1.32.199/32",
"swarm_lb_name": "d4s-pre-cloud-l4-swarm-load-balancer"
},
"os_project_data": {
"id": "6fdc02e2827b405dad99f34698659742"
},
"policy_list": {
"affinity": "affinity",
"anti_affinity": "anti-affinity",
"soft_affinity": "soft-affinity",
"soft_anti_affinity": "soft-anti-affinity"
},
"prometheus_server_data": {
"flavor": "m1.medium",
"name": "prometheus",
"public_grafana_server_cidr": "146.48.28.103/32",
"vol_data_device": "/dev/vdb",
"vol_data_name": "prometheus-data",
"vol_data_size": "100"
},
"resolvers_ip": [
"146.48.29.97",
"146.48.29.98",
"146.48.29.99"
],
"resource_registry_addresses": {},
"security_group_list": {
"acaland": "acaland's dev machine",
"access_to_orientdb": "access_to_orientdb",
"access_to_orientdb_se": "access_to_orientdb_se",
"access_to_the_timescaledb_service": "access_to_the_timescaledb_service",
"cassandra": "Cassandra",
"dataminer-publish": "dataminer-publish",
"debugging_from_jump_node": "debugging_from_jump_node",
"default": "default",
"docker_swarm": "Docker Swarm",
"docker_swarm_NFS": "Docker Swarm NFS",
"haproxy": "traffic_from_main_lb_to_haproxy_l7",
"http_and_https_from_the_load_balancers": "traffic_from_the_main_load_balancers",
"limited_HTTPS_access": "restricted_web_service",
"limited_SSH_access": "Limited SSH access",
"mongo": "mongo",
"nfs_share_no_ingress": "nfs_share_no_ingress",
"orientdb_internal_docker_traffic": "orientdb_internal_docker_traffic",
"postgreSQL": "PostgreSQL service",
"public_HTTPS": "Public HTTPS"
},
"shared_postgresql_server_data": {
"allocation_pool_end": "192.168.3.254",
"allocation_pool_start": "192.168.0.100",
"flavor": "m1.medium",
"name": "shared-postgresql-server",
"network_cidr": "192.168.0.0/22",
"network_description": "Network used to communicate with the shared postgresql service",
"network_name": "postgresql-srv-net",
"server_cidr": "192.168.0.5/22",
"server_ip": "192.168.0.5",
"vol_data_device": "/dev/vdb",
"vol_data_name": "shared-postgresql-data",
"vol_data_size": "100"
},
"smartexecutor_addresses": {},
"ssh_jump_proxy": {
"flavor": "m2.small",
"name": "ssh-jump-proxy"
},
"ssh_sources": {
"d4s_vpn_1_cidr": "146.48.122.27/32",
"d4s_vpn_2_cidr": "146.48.122.49/32",
"infrascience_net_cidr": "146.48.122.0/23",
"s2i2s_vpn_1_cidr": "146.48.28.10/32",
"s2i2s_vpn_2_cidr": "146.48.28.11/32",
"shell_d4s_cidr": "146.48.122.95/32"
},
"storage_nfs_network_id": "5f4023cc-4016-404c-94e5-86220095fbaf",
"storage_nfs_subnet_id": "6ff0f9e8-0e74-4cc3-a268-7ed4af435696",
"ubuntu1804_data_file": "../../openstack_vm_data_scripts/ubuntu1804.sh",
"ubuntu2204_data_file": "../../openstack_vm_data_scripts/ubuntu2204.sh",
"ubuntu_1804": {
"name": "Ubuntu-Bionic-18.04",
"user_data_file": "../../openstack_vm_data_scripts/ubuntu1804.sh",
"uuid": "7ed6a2cd-2b07-482e-8ce4-f018dff16c89"
},
"ubuntu_2204": {
"name": "Ubuntu-Jammy-22.04",
"user_data_file": "../../openstack_vm_data_scripts/ubuntu2204.sh",
"uuid": "54768889-8556-4be4-a2eb-82a4d9b34627"
}
},
"type": [
"object",
{
"almalinux_9": [
"map",
"string"
],
"availability_zone_no_gpu_name": "string",
"availability_zone_with_gpu_name": "string",
"availability_zones_names": [
"map",
"string"
],
"basic_services_ip": [
"map",
"string"
],
"centos_7": [
"map",
"string"
],
"default_security_group_name": "string",
"dns_zone": [
"map",
"string"
],
"dns_zone_id": "string",
"el7_data_file": "string",
"external_gateway_ip": [
"list",
[
"object",
{
"ip_address": "string",
"subnet_id": "string"
}
]
],
"external_network": [
"map",
"string"
],
"external_network_id": "string",
"external_router": [
"map",
"string"
],
"flavor_list": [
"map",
"string"
],
"floating_ip_pools": [
"map",
"string"
],
"haproxy_l7_data": [
"map",
"string"
],
"internal_ca_data": [
"map",
"string"
],
"main_haproxy_l7_ip": [
"list",
"string"
],
"main_private_network": [
"map",
"string"
],
"main_private_network_id": "string",
"main_private_subnet": [
"map",
"string"
],
"main_region": "string",
"main_subnet_network_id": "string",
"mtu_size": "number",
"networks_list": [
"map",
"string"
],
"networks_with_d4s_services": [
"map",
"string"
],
"nfs_share_no_ingress_secgroup_id": "string",
"octavia_information": [
"map",
"string"
],
"os_project_data": [
"map",
"string"
],
"policy_list": [
"map",
"string"
],
"prometheus_server_data": [
"map",
"string"
],
"resolvers_ip": [
"list",
"string"
],
"resource_registry_addresses": [
"map",
"string"
],
"security_group_list": [
"map",
"string"
],
"shared_postgresql_server_data": [
"map",
"string"
],
"smartexecutor_addresses": [
"map",
"string"
],
"ssh_jump_proxy": [
"map",
"string"
],
"ssh_sources": [
"map",
"string"
],
"storage_nfs_network_id": "string",
"storage_nfs_subnet_id": "string",
"ubuntu1804_data_file": "string",
"ubuntu2204_data_file": "string",
"ubuntu_1804": [
"map",
"string"
],
"ubuntu_2204": [
"map",
"string"
]
}
]
},
"workspace": null
},
"sensitive_attributes": []
}
]
},
{
"mode": "managed",
"type": "openstack_compute_servergroup_v2",
"name": "resource_registry_server_group",
"provider": "provider[\"registry.terraform.io/terraform-provider-openstack/openstack\"]",
"instances": [
{
"schema_version": 0,
"attributes": {
"id": "1f316286-6662-438f-8682-d2641e1d184d",
"members": [],
"name": "resource-registry",
"policies": [
"soft-anti-affinity"
],
"region": "isti_area_pi_1",
"rules": [
{
"max_server_per_host": 0
}
],
"value_specs": null
},
"sensitive_attributes": [],
"private": "bnVsbA=="
}
]
},
{
"module": "module.instance_without_data_volume",
"mode": "managed",
"type": "openstack_compute_instance_v2",
"name": "smartgears_service",
"provider": "provider[\"registry.terraform.io/terraform-provider-openstack/openstack\"]",
"instances": [
{
"index_key": "resource_registry_1",
"schema_version": 0,
"attributes": {
"access_ip_v4": "10.1.32.163",
"access_ip_v6": "",
"admin_pass": null,
"all_metadata": {},
"all_tags": [],
"availability_zone": "cnr-isti-nova-a",
"availability_zone_hints": "cnr-isti-nova-a",
"block_device": [
{
"boot_index": 0,
"delete_on_termination": false,
"destination_type": "volume",
"device_type": "",
"disk_bus": "",
"guest_format": "",
"multiattach": false,
"source_type": "image",
"uuid": "7ed6a2cd-2b07-482e-8ce4-f018dff16c89",
"volume_size": 10,
"volume_type": ""
}
],
"config_drive": null,
"created": "2024-10-04 15:30:07 +0000 UTC",
"flavor_id": "4",
"flavor_name": "m1.medium",
"floating_ip": null,
"force_delete": false,
"id": "c3f48815-17d4-4b4d-b094-c75965dac424",
"image_id": "Attempt to boot from volume - no image supplied",
"image_name": null,
"key_pair": "pc-frosini_key",
"metadata": null,
"name": "resource-registry-1",
"network": [
{
"access_network": false,
"fixed_ip_v4": "10.1.32.163",
"fixed_ip_v6": "",
"floating_ip": "",
"mac": "fa:16:3e:31:5e:67",
"name": "d4s-pre-cloud-main",
"port": "",
"uuid": "23fd8a99-d551-4ada-8d3a-9859542ebb8c"
},
{
"access_network": false,
"fixed_ip_v4": "192.168.10.29",
"fixed_ip_v6": "",
"floating_ip": "",
"mac": "fa:16:3e:0d:e7:25",
"name": "orientdb-net",
"port": "",
"uuid": "872173af-d6c9-4e1a-90fb-bf1501f27053"
}
],
"network_mode": null,
"personality": [],
"power_state": "active",
"region": "isti_area_pi_1",
"scheduler_hints": [
{
"additional_properties": null,
"build_near_host_ip": "",
"different_cell": [],
"different_host": [],
"group": "1f316286-6662-438f-8682-d2641e1d184d",
"query": [],
"same_host": [],
"target_cell": ""
}
],
"security_groups": [
"debugging_from_jump_node",
"default_for_all",
"traffic_from_the_main_load_balancers"
],
"stop_before_destroy": false,
"tags": null,
"timeouts": null,
"updated": "2024-10-04 15:30:59 +0000 UTC",
"user_data": "ef3d6e5deb29bd1e5de5a76ae6860f3ee872738c",
"vendor_options": [],
"volume": []
},
"sensitive_attributes": [],
"private": "eyJlMmJmYjczMC1lY2FhLTExZTYtOGY4OC0zNDM2M2JjN2M0YzAiOnsiY3JlYXRlIjoxODAwMDAwMDAwMDAwLCJkZWxldGUiOjE4MDAwMDAwMDAwMDAsInVwZGF0ZSI6MTgwMDAwMDAwMDAwMH19",
"dependencies": [
"data.terraform_remote_state.privnet_dns_router",
"openstack_compute_servergroup_v2.resource_registry_server_group"
]
},
{
"index_key": "resource_registry_2",
"schema_version": 0,
"attributes": {
"access_ip_v4": "10.1.35.26",
"access_ip_v6": "",
"admin_pass": null,
"all_metadata": {},
"all_tags": [],
"availability_zone": "cnr-isti-nova-a",
"availability_zone_hints": "cnr-isti-nova-a",
"block_device": [
{
"boot_index": 0,
"delete_on_termination": false,
"destination_type": "volume",
"device_type": "",
"disk_bus": "",
"guest_format": "",
"multiattach": false,
"source_type": "image",
"uuid": "7ed6a2cd-2b07-482e-8ce4-f018dff16c89",
"volume_size": 10,
"volume_type": ""
}
],
"config_drive": null,
"created": "2024-10-04 15:30:08 +0000 UTC",
"flavor_id": "4",
"flavor_name": "m1.medium",
"floating_ip": null,
"force_delete": false,
"id": "cda4128f-db6d-4746-8581-194494101e0b",
"image_id": "Attempt to boot from volume - no image supplied",
"image_name": null,
"key_pair": "pc-frosini_key",
"metadata": null,
"name": "resource-registry-2",
"network": [
{
"access_network": false,
"fixed_ip_v4": "10.1.35.26",
"fixed_ip_v6": "",
"floating_ip": "",
"mac": "fa:16:3e:42:97:83",
"name": "d4s-pre-cloud-main",
"port": "",
"uuid": "23fd8a99-d551-4ada-8d3a-9859542ebb8c"
},
{
"access_network": false,
"fixed_ip_v4": "192.168.10.104",
"fixed_ip_v6": "",
"floating_ip": "",
"mac": "fa:16:3e:f2:bd:da",
"name": "orientdb-net",
"port": "",
"uuid": "872173af-d6c9-4e1a-90fb-bf1501f27053"
}
],
"network_mode": null,
"personality": [],
"power_state": "active",
"region": "isti_area_pi_1",
"scheduler_hints": [
{
"additional_properties": null,
"build_near_host_ip": "",
"different_cell": [],
"different_host": [],
"group": "1f316286-6662-438f-8682-d2641e1d184d",
"query": [],
"same_host": [],
"target_cell": ""
}
],
"security_groups": [
"debugging_from_jump_node",
"default_for_all",
"traffic_from_the_main_load_balancers"
],
"stop_before_destroy": false,
"tags": null,
"timeouts": null,
"updated": "2024-10-04 15:30:54 +0000 UTC",
"user_data": "ef3d6e5deb29bd1e5de5a76ae6860f3ee872738c",
"vendor_options": [],
"volume": []
},
"sensitive_attributes": [],
"private": "eyJlMmJmYjczMC1lY2FhLTExZTYtOGY4OC0zNDM2M2JjN2M0YzAiOnsiY3JlYXRlIjoxODAwMDAwMDAwMDAwLCJkZWxldGUiOjE4MDAwMDAwMDAwMDAsInVwZGF0ZSI6MTgwMDAwMDAwMDAwMH19",
"dependencies": [
"data.terraform_remote_state.privnet_dns_router",
"openstack_compute_servergroup_v2.resource_registry_server_group"
]
}
]
}
],
"check_results": null
}

File diff suppressed because it is too large Load Diff

View File

@ -4,7 +4,7 @@ terraform {
required_providers {
openstack = {
source = "terraform-provider-openstack/openstack"
version = "~> 1.53.0"
version = ">= 1.54.0"
}
}
}
@ -24,6 +24,62 @@ module "common_variables" {
source = "../../modules/common_variables"
}
# Module used
module "ssh_settings" {
source = "../../modules/ssh-key-ref"
}
# Volumes
resource "openstack_blockstorage_volume_v3" "storagehub_3_pre_data_volume" {
name = "storagehub_3_data_volume"
size = "120"
}
# Instance 3
resource "openstack_compute_instance_v2" "storagehub_3_pre" {
name = "storagehub-3"
availability_zone_hints = module.common_variables.availability_zone_no_gpu_name
flavor_name = "m2.medium"
key_pair = module.ssh_settings.ssh_key_name
security_groups = [data.terraform_remote_state.privnet_dns_router.outputs.default_security_group_name, data.terraform_remote_state.privnet_dns_router.outputs.security_group_list.http_and_https_from_the_load_balancers]
block_device {
uuid = module.common_variables.ubuntu_2404.uuid
source_type = "image"
volume_size = 30
boot_index = 0
destination_type = "volume"
delete_on_termination = false
}
# Creates the networks according to input networks
dynamic "network" {
for_each = toset([data.terraform_remote_state.privnet_dns_router.outputs.main_private_network.name, module.common_variables.networks_list.shared_postgresql])
content {
name = network.value
}
}
# user_data script used
user_data = file("${module.common_variables.ubuntu_2404.user_data_file}")
# Do not replace the instance when the ssh key changes
lifecycle {
ignore_changes = [
# Ignore changes to tags, e.g. because a management agent
# updates these based on some ruleset managed elsewhere.
key_pair, user_data, network
]
}
}
# Attach
resource "openstack_compute_volume_attach_v2" "storagehub_3_pre_attach" {
instance_id = openstack_compute_instance_v2.storagehub_3_pre.id
volume_id = openstack_blockstorage_volume_v3.storagehub_3_pre_data_volume.id
device = "/dev/vdb"
}
module "instance_with_data_volume" {
source = "../../modules/instance_with_data_volume"
@ -67,6 +123,14 @@ module "dns_records_create" {
type = "CNAME"
records = [local.cname_target]
},
storagehub-3 = {
zone_id = data.terraform_remote_state.privnet_dns_router.outputs.dns_zone_id
name = join(".", ["storagehub-3", data.terraform_remote_state.privnet_dns_router.outputs.dns_zone.zone_name])
description = "StorageHub 3"
ttl = 8600
type = "CNAME"
records = [local.cname_target]
},
workspace_repository = {
zone_id = data.terraform_remote_state.privnet_dns_router.outputs.dns_zone_id
name = join(".", ["workspace-repository", data.terraform_remote_state.privnet_dns_router.outputs.dns_zone.zone_name])

View File

@ -1,7 +1,7 @@
{
"version": 4,
"terraform_version": "1.6.6",
"serial": 7,
"terraform_version": "1.6.4",
"serial": 12,
"lineage": "5cc26d03-8355-40e7-7983-6ef1742f597e",
"outputs": {},
"resources": [
@ -397,6 +397,154 @@
}
]
},
{
"mode": "managed",
"type": "openstack_blockstorage_volume_v3",
"name": "storagehub_3_pre_data_volume",
"provider": "provider[\"registry.terraform.io/terraform-provider-openstack/openstack\"]",
"instances": [
{
"schema_version": 0,
"attributes": {
"attachment": [],
"availability_zone": "nova",
"backup_id": "",
"consistency_group_id": null,
"description": "",
"enable_online_resize": null,
"id": "a0d32e23-4498-484f-929e-1921ee7c499b",
"image_id": null,
"metadata": {},
"name": "storagehub_3_data_volume",
"region": "isti_area_pi_1",
"scheduler_hints": [],
"size": 120,
"snapshot_id": "",
"source_replica": null,
"source_vol_id": "",
"timeouts": null,
"volume_type": "cephUnencrypted"
},
"sensitive_attributes": [],
"private": "eyJlMmJmYjczMC1lY2FhLTExZTYtOGY4OC0zNDM2M2JjN2M0YzAiOnsiY3JlYXRlIjo2MDAwMDAwMDAwMDAsImRlbGV0ZSI6NjAwMDAwMDAwMDAwfX0="
}
]
},
{
"mode": "managed",
"type": "openstack_compute_instance_v2",
"name": "storagehub_3_pre",
"provider": "provider[\"registry.terraform.io/terraform-provider-openstack/openstack\"]",
"instances": [
{
"schema_version": 0,
"attributes": {
"access_ip_v4": "10.1.32.138",
"access_ip_v6": "",
"admin_pass": null,
"all_metadata": {},
"all_tags": [],
"availability_zone": "cnr-isti-nova-a",
"availability_zone_hints": "cnr-isti-nova-a",
"block_device": [
{
"boot_index": 0,
"delete_on_termination": false,
"destination_type": "volume",
"device_type": "",
"disk_bus": "",
"guest_format": "",
"multiattach": false,
"source_type": "image",
"uuid": "fc3f705d-3cf5-4866-8ef6-ff6e2cdd4075",
"volume_size": 30,
"volume_type": ""
}
],
"config_drive": null,
"created": "2024-10-07 12:59:06 +0000 UTC",
"flavor_id": "15",
"flavor_name": "m2.medium",
"force_delete": false,
"id": "823ea792-9e1a-4f98-8f61-2e5df8f98ebb",
"image_id": "Attempt to boot from volume - no image supplied",
"image_name": null,
"key_pair": "Giancarlo Panichi",
"metadata": null,
"name": "storagehub-3",
"network": [
{
"access_network": false,
"fixed_ip_v4": "10.1.32.138",
"fixed_ip_v6": "",
"mac": "fa:16:3e:cb:99:42",
"name": "d4s-pre-cloud-main",
"port": "",
"uuid": "23fd8a99-d551-4ada-8d3a-9859542ebb8c"
},
{
"access_network": false,
"fixed_ip_v4": "192.168.3.95",
"fixed_ip_v6": "",
"mac": "fa:16:3e:aa:eb:bc",
"name": "postgresql-srv-net",
"port": "",
"uuid": "e25395f4-f1aa-4819-b5a5-36d25ee5af54"
}
],
"network_mode": null,
"personality": [],
"power_state": "active",
"region": "isti_area_pi_1",
"scheduler_hints": [],
"security_groups": [
"default_for_all",
"traffic_from_the_main_load_balancers"
],
"stop_before_destroy": false,
"tags": null,
"timeouts": null,
"updated": "2024-10-07 13:00:00 +0000 UTC",
"user_data": "bb83b25fd1219aa1b850ece9be8d7b0f31714608",
"vendor_options": []
},
"sensitive_attributes": [],
"private": "eyJlMmJmYjczMC1lY2FhLTExZTYtOGY4OC0zNDM2M2JjN2M0YzAiOnsiY3JlYXRlIjoxODAwMDAwMDAwMDAwLCJkZWxldGUiOjE4MDAwMDAwMDAwMDAsInVwZGF0ZSI6MTgwMDAwMDAwMDAwMH19",
"dependencies": [
"data.terraform_remote_state.privnet_dns_router"
]
}
]
},
{
"mode": "managed",
"type": "openstack_compute_volume_attach_v2",
"name": "storagehub_3_pre_attach",
"provider": "provider[\"registry.terraform.io/terraform-provider-openstack/openstack\"]",
"instances": [
{
"schema_version": 0,
"attributes": {
"device": "/dev/vdb",
"id": "823ea792-9e1a-4f98-8f61-2e5df8f98ebb/a0d32e23-4498-484f-929e-1921ee7c499b",
"instance_id": "823ea792-9e1a-4f98-8f61-2e5df8f98ebb",
"multiattach": null,
"region": "isti_area_pi_1",
"tag": null,
"timeouts": null,
"vendor_options": [],
"volume_id": "a0d32e23-4498-484f-929e-1921ee7c499b"
},
"sensitive_attributes": [],
"private": "eyJlMmJmYjczMC1lY2FhLTExZTYtOGY4OC0zNDM2M2JjN2M0YzAiOnsiY3JlYXRlIjo2MDAwMDAwMDAwMDAsImRlbGV0ZSI6NjAwMDAwMDAwMDAwfX0=",
"dependencies": [
"data.terraform_remote_state.privnet_dns_router",
"openstack_blockstorage_volume_v3.storagehub_3_pre_data_volume",
"openstack_compute_instance_v2.storagehub_3_pre"
]
}
]
},
{
"module": "module.dns_records_create",
"mode": "managed",
@ -429,6 +577,31 @@
"data.terraform_remote_state.privnet_dns_router"
]
},
{
"index_key": "storagehub-3",
"schema_version": 0,
"attributes": {
"description": "StorageHub 3",
"disable_status_check": false,
"id": "c1a4b4bc-f167-4387-855d-38f0f99ca05c/acaffc9b-2ea2-4d93-857d-14d710287205",
"name": "storagehub-3.cloud-pre.d4science.org.",
"project_id": "6fdc02e2827b405dad99f34698659742",
"records": [
"main-lb.cloud-pre.d4science.org."
],
"region": "isti_area_pi_1",
"timeouts": null,
"ttl": 8600,
"type": "CNAME",
"value_specs": null,
"zone_id": "c1a4b4bc-f167-4387-855d-38f0f99ca05c"
},
"sensitive_attributes": [],
"private": "eyJlMmJmYjczMC1lY2FhLTExZTYtOGY4OC0zNDM2M2JjN2M0YzAiOnsiY3JlYXRlIjo2MDAwMDAwMDAwMDAsImRlbGV0ZSI6NjAwMDAwMDAwMDAwLCJ1cGRhdGUiOjYwMDAwMDAwMDAwMH19",
"dependencies": [
"data.terraform_remote_state.privnet_dns_router"
]
},
{
"index_key": "workspace_repository",
"schema_version": 0,
@ -475,13 +648,13 @@
}
],
"availability_zone": "nova",
"backup_id": "",
"consistency_group_id": null,
"description": "",
"enable_online_resize": null,
"id": "2357fb1b-9072-4781-8cd5-6259f267e615",
"image_id": null,
"metadata": {},
"multiattach": null,
"name": "storagehub_data_volume",
"region": "isti_area_pi_1",
"scheduler_hints": [],
@ -537,7 +710,6 @@
"created": "2024-02-02 16:46:57 +0000 UTC",
"flavor_id": "15",
"flavor_name": "m2.medium",
"floating_ip": null,
"force_delete": false,
"id": "18c96196-a3bf-473c-a591-8fc2f9a9b973",
"image_id": "Attempt to boot from volume - no image supplied",
@ -550,7 +722,6 @@
"access_network": false,
"fixed_ip_v4": "10.1.33.166",
"fixed_ip_v6": "",
"floating_ip": "",
"mac": "fa:16:3e:54:70:8f",
"name": "d4s-pre-cloud-main",
"port": "",
@ -560,7 +731,6 @@
"access_network": false,
"fixed_ip_v4": "192.168.3.42",
"fixed_ip_v6": "",
"floating_ip": "",
"mac": "fa:16:3e:52:40:4f",
"name": "postgresql-srv-net",
"port": "",
@ -581,8 +751,7 @@
"timeouts": null,
"updated": "2024-02-02 16:47:38 +0000 UTC",
"user_data": "47d4769e61324c305c4b70ed6673de4fad84150d",
"vendor_options": [],
"volume": []
"vendor_options": []
},
"sensitive_attributes": [],
"private": "eyJlMmJmYjczMC1lY2FhLTExZTYtOGY4OC0zNDM2M2JjN2M0YzAiOnsiY3JlYXRlIjoxODAwMDAwMDAwMDAwLCJkZWxldGUiOjE4MDAwMDAwMDAwMDAsInVwZGF0ZSI6MTgwMDAwMDAwMDAwMH19",
@ -608,6 +777,7 @@
"instance_id": "18c96196-a3bf-473c-a591-8fc2f9a9b973",
"multiattach": null,
"region": "isti_area_pi_1",
"tag": null,
"timeouts": null,
"vendor_options": [],
"volume_id": "2357fb1b-9072-4781-8cd5-6259f267e615"

View File

@ -0,0 +1,98 @@
# 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"
}
}
#
# Uses common_variables as module
#
module "common_variables" {
source = "../../modules/common_variables"
}
# Module used
module "ssh_settings" {
source = "../../modules/ssh-key-ref"
}
# Instances
resource "openstack_compute_instance_v2" "access_service" {
name = "access"
availability_zone_hints = module.common_variables.availability_zone_no_gpu_name
flavor_name = module.common_variables.flavor_list.m1_medium
key_pair = module.ssh_settings.ssh_key_name
security_groups = [data.terraform_remote_state.privnet_dns_router.outputs.default_security_group_name, data.terraform_remote_state.privnet_dns_router.outputs.security_group_list.http_and_https_from_the_load_balancers]
block_device {
uuid = module.common_variables.ubuntu_1804.uuid
source_type = "image"
volume_size = 50
boot_index = 0
destination_type = "volume"
delete_on_termination = false
}
# Creates the networks according to input networks
dynamic "network" {
for_each = toset([data.terraform_remote_state.privnet_dns_router.outputs.main_private_network.name])
content {
name = network.value
}
}
# user_data script used
user_data = file("${module.common_variables.ubuntu_1804.user_data_file}")
# Do not replace the instance when the ssh key changes
lifecycle {
ignore_changes = [
# Ignore changes to tags, e.g. because a management agent
# updates these based on some ruleset managed elsewhere.
key_pair, user_data, network
]
}
}
locals {
cname_target = "main-lb.${data.terraform_remote_state.privnet_dns_router.outputs.dns_zone.zone_name}"
}
#
# Add DNS record/s
#
module "dns_records_create" {
source = "../../modules/dns_resources"
dns_resources_map = {
access-service = {
zone_id = data.terraform_remote_state.privnet_dns_router.outputs.dns_zone_id
name = join(".", ["access", data.terraform_remote_state.privnet_dns_router.outputs.dns_zone.zone_name])
description = "Access access"
ttl = 8600
type = "CNAME"
records = [local.cname_target]
}
}
}

View File

@ -0,0 +1,513 @@
{
"version": 4,
"terraform_version": "1.6.4",
"serial": 3,
"lineage": "06d32fbd-9403-b9bf-fe66-58c9e554a646",
"outputs": {},
"resources": [
{
"mode": "data",
"type": "terraform_remote_state",
"name": "privnet_dns_router",
"provider": "provider[\"terraform.io/builtin/terraform\"]",
"instances": [
{
"schema_version": 0,
"attributes": {
"backend": "local",
"config": {
"value": {
"path": "../project-setup/terraform.tfstate"
},
"type": [
"object",
{
"path": "string"
}
]
},
"defaults": null,
"outputs": {
"value": {
"almalinux_9": {
"name": "AlmaLinux-9.0-20220718",
"uuid": "541650fc-dd19-4f38-bb1d-7333ed9dd688"
},
"availability_zone_no_gpu_name": "cnr-isti-nova-a",
"availability_zone_with_gpu_name": "cnr-isti-nova-gpu-a",
"availability_zones_names": {
"availability_zone_no_gpu": "cnr-isti-nova-a",
"availability_zone_with_gpu": "cnr-isti-nova-gpu-a"
},
"basic_services_ip": {
"ca": "10.1.40.4",
"ca_cidr": "10.1.40.4/32",
"haproxy_l7_1": "10.1.40.11",
"haproxy_l7_1_cidr": "10.1.40.11/32",
"haproxy_l7_2": "10.1.40.12",
"haproxy_l7_2_cidr": "10.1.40.12/32",
"octavia_main": "10.1.40.20",
"octavia_main_cidr": "10.1.40.20/32",
"prometheus": "10.1.40.10",
"prometheus_cidr": "10.1.40.10/32",
"ssh_jump": "10.1.40.5",
"ssh_jump_cidr": "10.1.40.5/32"
},
"centos_7": {
"name": "CentOS-7",
"uuid": "f0187a99-64f6-462a-ab5f-ef52fe62f2ca"
},
"default_security_group_name": "default_for_all",
"dns_zone": {
"description": "DNS primary zone for the d4s-production-cloud project",
"email": "postmaster@isti.cnr.it",
"ttl": "8600",
"zone_name": "cloud.d4science.org."
},
"dns_zone_id": "74135b34-1a9c-4c01-8cf0-22450a5660c4",
"el7_data_file": "../../openstack_vm_data_scripts/el7.sh",
"external_gateway_ip": [
{
"ip_address": "146.48.31.57",
"subnet_id": "57f87509-4016-46fb-b8c3-25fca7f72ccb"
}
],
"external_network": {
"id": "1d2ff137-6ff7-4017-be2b-0d6c4af2353b",
"name": "external-network"
},
"external_network_id": "1d2ff137-6ff7-4017-be2b-0d6c4af2353b",
"external_router": {
"description": "D4Science Production main router",
"id": "cc26064a-bb08-4c0b-929f-d0cb39f934a3",
"name": "d4s-production-cloud-external-router"
},
"flavor_list": {
"c1_large": "c1.large",
"c1_medium": "c1.medium",
"c1_small": "c1.small",
"c2_large": "c2.large",
"m1_large": "m1.large",
"m1_medium": "m1.medium",
"m1_xlarge": "m1.xlarge",
"m1_xxl": "m1.xxl",
"m2_large": "m2.large",
"m2_medium": "m2.medium",
"m2_small": "m2.small",
"m3_large": "m3.large"
},
"floating_ip_pools": {
"main_public_ip_pool": "external-network"
},
"haproxy_l7_data": {
"flavor": "m1.medium",
"haproxy_1": "haproxy-l7-1",
"haproxy_2": "haproxy-l7-2",
"name": "main-haproxy-l7",
"vm_count": "2"
},
"internal_ca_data": {
"flavor": "m1.small",
"name": "ca"
},
"main_haproxy_l7_ip": [
"10.1.40.11",
"10.1.40.12"
],
"main_private_network": {
"description": "D4Science Production private network (use this as the main network)",
"name": "d4s-production-cloud-main"
},
"main_private_network_id": "020df98d-ae72-452a-b376-3b6dc289acac",
"main_private_subnet": {
"allocation_end": "10.1.47.254",
"allocation_start": "10.1.41.100",
"cidr": "10.1.40.0/21",
"description": "D4Science Production main private subnet",
"gateway_ip": "10.1.40.1",
"name": "d4s-production-cloud-main-subnet"
},
"main_region": "isti_area_pi_1",
"main_subnet_network_id": "5d7b83ad-e058-4a3a-bfd8-d20ba6d42e1a",
"mtu_size": 8942,
"networks_list": {
"cassandra": "cassandra-net",
"orientdb": "orientdb-net",
"orientdb_se": "orientdb-se-net",
"shared_postgresql": "postgresql-srv-net",
"swarm": "swarm-nfs-net",
"timescaledb": "timescaledb-net"
},
"networks_with_d4s_services": {
"garr_ct1_net": "90.147.166.0/23",
"garr_na_net": "90.147.152.0/24",
"garr_pa1_net": "90.147.188.0/23",
"infrascience_net": "146.48.122.0/23",
"isti_net": "146.48.80.0/21",
"s2i2s_net": "146.48.28.0/22"
},
"nfs_share_no_ingress_secgroup_id": "167e4897-f776-4cbd-986f-77313aa68af2",
"octavia_information": {
"main_lb_description": "Main L4 load balancer for the D4Science production",
"main_lb_hostname": "main-lb",
"main_lb_name": "d4s-production-cloud-l4-load-balancer",
"octavia_flavor": "octavia_amphora-mvcpu-ha",
"octavia_flavor_id": "394988b5-6603-4a1e-a939-8e177c6681c7",
"swarm_lb_name": "d4s-production-cloud-l4-swarm-load-balancer"
},
"os_project_data": {
"id": "1b45adf388934758b56d0dfdb4bfacf3"
},
"policy_list": {
"affinity": "affinity",
"anti_affinity": "anti-affinity",
"soft_affinity": "soft-affinity",
"soft_anti_affinity": "soft-anti-affinity"
},
"prometheus_server_data": {
"flavor": "m1.medium",
"name": "prometheus",
"public_grafana_server_cidr": "146.48.28.103/32",
"vol_data_device": "/dev/vdb",
"vol_data_name": "prometheus-data",
"vol_data_size": "100"
},
"resolvers_ip": [
"146.48.29.97",
"146.48.29.98",
"146.48.29.99"
],
"resource_registry_addresses": {},
"security_group_list": {
"acaland": "acaland's dev machine",
"access_to_orientdb": "access_to_orientdb",
"access_to_orientdb_se": "access_to_orientdb_se",
"access_to_the_timescaledb_service": "access_to_the_timescaledb_service",
"cassandra": "Cassandra",
"dataminer-publish": "dataminer-publish",
"debugging_from_jump_node": "debugging_from_jump_node",
"default": "default",
"docker_swarm": "Docker Swarm",
"docker_swarm_NFS": "Docker Swarm NFS",
"haproxy": "traffic_from_main_lb_to_haproxy_l7",
"http_and_https_from_the_load_balancers": "traffic_from_the_main_load_balancers",
"limited_HTTPS_access": "restricted_web_service",
"limited_SSH_access": "Limited SSH access",
"mongo": "mongo",
"nfs_share_no_ingress": "nfs_share_no_ingress",
"orientdb_internal_docker_traffic": "orientdb_internal_docker_traffic",
"postgreSQL": "PostgreSQL service",
"public_HTTPS": "Public HTTPS"
},
"shared_postgresql_server_data": {
"allocation_pool_end": "192.168.3.254",
"allocation_pool_start": "192.168.0.100",
"flavor": "m1.medium",
"name": "shared-postgresql-server",
"network_cidr": "192.168.0.0/22",
"network_description": "Network used to communicate with the shared postgresql service",
"network_name": "postgresql-srv-net",
"server_cidr": "192.168.0.5/22",
"server_ip": "192.168.0.5",
"vol_data_device": "/dev/vdb",
"vol_data_name": "shared-postgresql-data",
"vol_data_size": "100"
},
"smartexecutor_addresses": {},
"ssh_jump_proxy": {
"flavor": "m2.small",
"name": "ssh-jump-proxy"
},
"ssh_sources": {
"d4s_vpn_1_cidr": "146.48.122.27/32",
"d4s_vpn_2_cidr": "146.48.122.49/32",
"infrascience_net_cidr": "146.48.122.0/23",
"s2i2s_vpn_1_cidr": "146.48.28.10/32",
"s2i2s_vpn_2_cidr": "146.48.28.11/32",
"shell_d4s_cidr": "146.48.122.95/32"
},
"storage_nfs_network_id": "5f4023cc-4016-404c-94e5-86220095fbaf",
"storage_nfs_subnet_id": "6ff0f9e8-0e74-4cc3-a268-7ed4af435696",
"ubuntu1804_data_file": "../../openstack_vm_data_scripts/ubuntu1804.sh",
"ubuntu2204_data_file": "../../openstack_vm_data_scripts/ubuntu2204.sh",
"ubuntu_1804": {
"name": "Ubuntu-Bionic-18.04",
"user_data_file": "../../openstack_vm_data_scripts/ubuntu1804.sh",
"uuid": "7ed6a2cd-2b07-482e-8ce4-f018dff16c89"
},
"ubuntu_2204": {
"name": "Ubuntu-Jammy-22.04",
"user_data_file": "../../openstack_vm_data_scripts/ubuntu2204.sh",
"uuid": "54768889-8556-4be4-a2eb-82a4d9b34627"
}
},
"type": [
"object",
{
"almalinux_9": [
"map",
"string"
],
"availability_zone_no_gpu_name": "string",
"availability_zone_with_gpu_name": "string",
"availability_zones_names": [
"map",
"string"
],
"basic_services_ip": [
"map",
"string"
],
"centos_7": [
"map",
"string"
],
"default_security_group_name": "string",
"dns_zone": [
"map",
"string"
],
"dns_zone_id": "string",
"el7_data_file": "string",
"external_gateway_ip": [
"list",
[
"object",
{
"ip_address": "string",
"subnet_id": "string"
}
]
],
"external_network": [
"map",
"string"
],
"external_network_id": "string",
"external_router": [
"map",
"string"
],
"flavor_list": [
"map",
"string"
],
"floating_ip_pools": [
"map",
"string"
],
"haproxy_l7_data": [
"map",
"string"
],
"internal_ca_data": [
"map",
"string"
],
"main_haproxy_l7_ip": [
"list",
"string"
],
"main_private_network": [
"map",
"string"
],
"main_private_network_id": "string",
"main_private_subnet": [
"map",
"string"
],
"main_region": "string",
"main_subnet_network_id": "string",
"mtu_size": "number",
"networks_list": [
"map",
"string"
],
"networks_with_d4s_services": [
"map",
"string"
],
"nfs_share_no_ingress_secgroup_id": "string",
"octavia_information": [
"map",
"string"
],
"os_project_data": [
"map",
"string"
],
"policy_list": [
"map",
"string"
],
"prometheus_server_data": [
"map",
"string"
],
"resolvers_ip": [
"list",
"string"
],
"resource_registry_addresses": [
"map",
"string"
],
"security_group_list": [
"map",
"string"
],
"shared_postgresql_server_data": [
"map",
"string"
],
"smartexecutor_addresses": [
"map",
"string"
],
"ssh_jump_proxy": [
"map",
"string"
],
"ssh_sources": [
"map",
"string"
],
"storage_nfs_network_id": "string",
"storage_nfs_subnet_id": "string",
"ubuntu1804_data_file": "string",
"ubuntu2204_data_file": "string",
"ubuntu_1804": [
"map",
"string"
],
"ubuntu_2204": [
"map",
"string"
]
}
]
},
"workspace": null
},
"sensitive_attributes": []
}
]
},
{
"mode": "managed",
"type": "openstack_compute_instance_v2",
"name": "access_service",
"provider": "provider[\"registry.terraform.io/terraform-provider-openstack/openstack\"]",
"instances": [
{
"schema_version": 0,
"attributes": {
"access_ip_v4": "10.1.43.47",
"access_ip_v6": "",
"admin_pass": null,
"all_metadata": {},
"all_tags": [],
"availability_zone": "cnr-isti-nova-a",
"availability_zone_hints": "cnr-isti-nova-a",
"block_device": [
{
"boot_index": 0,
"delete_on_termination": false,
"destination_type": "volume",
"device_type": "",
"disk_bus": "",
"guest_format": "",
"multiattach": false,
"source_type": "image",
"uuid": "7ed6a2cd-2b07-482e-8ce4-f018dff16c89",
"volume_size": 50,
"volume_type": ""
}
],
"config_drive": null,
"created": "2024-04-19 12:06:51 +0000 UTC",
"flavor_id": "4",
"flavor_name": "m1.medium",
"floating_ip": null,
"force_delete": false,
"id": "9ded4ec0-d140-4ff4-92cd-0e171c2cd23f",
"image_id": "Attempt to boot from volume - no image supplied",
"image_name": null,
"key_pair": "Giancarlo Panichi",
"metadata": null,
"name": "access",
"network": [
{
"access_network": false,
"fixed_ip_v4": "10.1.43.47",
"fixed_ip_v6": "",
"floating_ip": "",
"mac": "fa:16:3e:e2:46:31",
"name": "d4s-production-cloud-main",
"port": "",
"uuid": "020df98d-ae72-452a-b376-3b6dc289acac"
}
],
"network_mode": null,
"personality": [],
"power_state": "active",
"region": "isti_area_pi_1",
"scheduler_hints": [],
"security_groups": [
"default_for_all",
"traffic_from_the_main_load_balancers"
],
"stop_before_destroy": false,
"tags": null,
"timeouts": null,
"updated": "2024-04-19 12:07:34 +0000 UTC",
"user_data": "47d4769e61324c305c4b70ed6673de4fad84150d",
"vendor_options": [],
"volume": []
},
"sensitive_attributes": [],
"private": "eyJlMmJmYjczMC1lY2FhLTExZTYtOGY4OC0zNDM2M2JjN2M0YzAiOnsiY3JlYXRlIjoxODAwMDAwMDAwMDAwLCJkZWxldGUiOjE4MDAwMDAwMDAwMDAsInVwZGF0ZSI6MTgwMDAwMDAwMDAwMH19",
"dependencies": [
"data.terraform_remote_state.privnet_dns_router"
]
}
]
},
{
"module": "module.dns_records_create",
"mode": "managed",
"type": "openstack_dns_recordset_v2",
"name": "add_dns_recordset",
"provider": "provider[\"registry.terraform.io/terraform-provider-openstack/openstack\"]",
"instances": [
{
"index_key": "access-service",
"schema_version": 0,
"attributes": {
"description": "Access access",
"disable_status_check": false,
"id": "74135b34-1a9c-4c01-8cf0-22450a5660c4/b36078da-4666-495c-b524-0239e065711c",
"name": "access.cloud.d4science.org.",
"project_id": "1b45adf388934758b56d0dfdb4bfacf3",
"records": [
"main-lb.cloud.d4science.org."
],
"region": "isti_area_pi_1",
"timeouts": null,
"ttl": 8600,
"type": "CNAME",
"value_specs": null,
"zone_id": "74135b34-1a9c-4c01-8cf0-22450a5660c4"
},
"sensitive_attributes": [],
"private": "eyJlMmJmYjczMC1lY2FhLTExZTYtOGY4OC0zNDM2M2JjN2M0YzAiOnsiY3JlYXRlIjo2MDAwMDAwMDAwMDAsImRlbGV0ZSI6NjAwMDAwMDAwMDAwLCJ1cGRhdGUiOjYwMDAwMDAwMDAwMH19",
"dependencies": [
"data.terraform_remote_state.privnet_dns_router"
]
}
]
}
],
"check_results": null
}

View File

@ -0,0 +1,152 @@
# Define required providers
terraform {
required_version = ">= 0.14.0"
required_providers {
openstack = {
source = "terraform-provider-openstack/openstack"
version = ">= 1.54.0"
}
}
}
data "terraform_remote_state" "privnet_dns_router" {
backend = "local"
config = {
path = "../project-setup/terraform.tfstate"
}
}
data "terraform_remote_state" "infrastructure_setup" {
backend = "local"
config = {
path = "../basic-infrastructure/terraform.tfstate"
}
}
#
# Uses common_variables as module
#
module "common_variables" {
source = "../../modules/common_variables"
}
# Module used
module "ssh_settings" {
source = "../../modules/ssh-key-ref"
}
resource "openstack_networking_secgroup_v2" "accounting_dashboard_db_access_list" {
name = "accounting_dashboard_db_access_list"
delete_default_rules = "true"
description = "Allowed connections to the accounting dashboard database"
}
resource "openstack_networking_secgroup_rule_v2" "access_to_the_accounting_dashboard_db" {
for_each = toset([var.accounting_dashoard_allowed_sources.infrascience_net, var.accounting_dashoard_allowed_sources.google_datastudio1, var.accounting_dashoard_allowed_sources.google_datastudio2, var.accounting_dashoard_allowed_sources.google_datastudio3, var.accounting_dashoard_allowed_sources.google_datastudio4, var.accounting_dashoard_allowed_sources.google_datastudio5, var.accounting_dashoard_allowed_sources.google_datastudio6, var.accounting_dashoard_allowed_sources.google_datastudio7, var.accounting_dashoard_allowed_sources.google_datastudio8, var.accounting_dashoard_allowed_sources.google_datastudio9, var.accounting_dashoard_allowed_sources.google_datastudio10, var.accounting_dashoard_allowed_sources.google_datastudio11, var.accounting_dashoard_allowed_sources.google_datastudio12, var.accounting_dashoard_allowed_sources.google_datastudio13, var.accounting_dashoard_allowed_sources.openstack_production])
security_group_id = openstack_networking_secgroup_v2.accounting_dashboard_db_access_list.id
description = "Access to the Accounting Dashboard DB"
direction = "ingress"
ethertype = "IPv4"
protocol = "tcp"
port_range_min = 5432
port_range_max = 5432
remote_ip_prefix = each.value
}
# Block device
resource "openstack_blockstorage_volume_v3" "accounting_dashboard_db_data_vol" {
name = var.accounting_dashboard_db_data.vol_data_name
size = var.accounting_dashboard_db_data.vol_data_size
}
#
# Ports in the timescaleDB network
resource "openstack_networking_port_v2" "accounting_dashboard_port_on_main_net" {
name = "accounting_dashboard_port_on_main_net"
network_id = data.terraform_remote_state.privnet_dns_router.outputs.main_private_network_id
admin_state_up = "true"
fixed_ip {
subnet_id = data.terraform_remote_state.privnet_dns_router.outputs.main_subnet_network_id
}
security_group_ids = [
openstack_networking_secgroup_v2.accounting_dashboard_db_access_list.id,
data.terraform_remote_state.infrastructure_setup.outputs.default_security_group.id
]
}
# Instance
resource "openstack_compute_instance_v2" "accounting_dashboard_db_server" {
name = var.accounting_dashboard_db_data.name
availability_zone_hints = module.common_variables.availability_zone_no_gpu_name
flavor_name = var.accounting_dashboard_db_data.flavor
key_pair = module.ssh_settings.ssh_key_name
security_groups = [data.terraform_remote_state.infrastructure_setup.outputs.default_security_group.name, data.terraform_remote_state.infrastructure_setup.outputs.access_postgresql_security_group.name, openstack_networking_secgroup_v2.accounting_dashboard_db_access_list.name]
block_device {
uuid = module.common_variables.ubuntu_2204.uuid
source_type = "image"
volume_size = 10
boot_index = 0
destination_type = "volume"
delete_on_termination = false
}
network {
name = module.common_variables.networks_list.shared_postgresql
fixed_ip_v4 = var.accounting_dashboard_db_data.server_ip
}
user_data = file("${module.common_variables.ubuntu2204_data_file}")
# Do not replace the instance when the ssh key changes
lifecycle {
ignore_changes = [
# Ignore changes to tags, e.g. because a management agent
# updates these based on some ruleset managed elsewhere.
key_pair, user_data, network
]
}
}
resource "openstack_compute_volume_attach_v2" "accounting_dashboard_db_data_attach_vol" {
instance_id = openstack_compute_instance_v2.accounting_dashboard_db_server.id
volume_id = openstack_blockstorage_volume_v3.accounting_dashboard_db_data_vol.id
device = var.accounting_dashboard_db_data.vol_data_device
depends_on = [openstack_compute_instance_v2.accounting_dashboard_db_server]
}
resource "openstack_compute_interface_attach_v2" "main_network_to_accounting_dashboard" {
instance_id = openstack_compute_instance_v2.accounting_dashboard_db_server.id
port_id = openstack_networking_port_v2.accounting_dashboard_port_on_main_net.id
}
# Floating IP and DNS record
resource "openstack_networking_floatingip_v2" "accounting_dashboard_db_ip" {
pool = data.terraform_remote_state.privnet_dns_router.outputs.floating_ip_pools.main_public_ip_pool
# The DNS association does not work because of a bug in the OpenStack API
description = "Accounting dashboard"
}
resource "openstack_networking_floatingip_associate_v2" "accounting_dashboard_db" {
floating_ip = openstack_networking_floatingip_v2.accounting_dashboard_db_ip.address
port_id = openstack_networking_port_v2.accounting_dashboard_port_on_main_net.id
}
locals {
accounting_dashboard_recordset_name = "accounting-dashboard-db.${data.terraform_remote_state.privnet_dns_router.outputs.dns_zone.zone_name}"
}
resource "openstack_dns_recordset_v2" "accounting_dashboard_recordset" {
zone_id = data.terraform_remote_state.privnet_dns_router.outputs.dns_zone_id
name = local.accounting_dashboard_recordset_name
description = "Public IP address of the Accounting Dashboard"
ttl = 8600
type = "A"
records = [openstack_networking_floatingip_v2.accounting_dashboard_db_ip.address]
}
output "accounting_dashboard_public_ip_address" {
value = openstack_networking_floatingip_v2.accounting_dashboard_db_ip.address
}
output "accounting_dashboard_hostname" {
value = openstack_dns_recordset_v2.accounting_dashboard_recordset.name
}

View File

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

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,35 @@
#Accounting Dashboard DB variables
variable "accounting_dashboard_db_data" {
type = map(string)
default = {
name = "accounting-dashboard-db-server"
flavor = "m1.medium"
vol_data_name = "accounting-dashboard-db-data"
vol_data_size = "10"
vol_data_device = "/dev/vdb"
server_ip = "192.168.0.10"
}
}
variable "accounting_dashoard_allowed_sources" {
type = map(string)
default = {
"infrascience_net" = "146.48.122.0/23"
"google_datastudio1" = "64.18.0.0/20"
"google_datastudio2" = "64.233.160.0/19"
"google_datastudio3" = "66.102.0.0/20"
"google_datastudio4" = "66.249.80.0/20"
"google_datastudio5" = "72.14.192.0/18"
"google_datastudio6" = "74.125.0.0/16"
"google_datastudio7" = "108.177.8.0/21"
"google_datastudio8" = "173.194.0.0/16"
"google_datastudio9" = "207.126.144.0/20"
"google_datastudio10" = "209.85.128.0/17"
"google_datastudio11" = "216.58.192.0/19"
"google_datastudio12" = "216.239.32.0/19"
"google_datastudio13" = "142.251.74.0/23"
"openstack_production" = "146.48.31.57/32"
}
}

View File

@ -1,10 +1,14 @@
Queste risorse verranno allocate quando saremo pronti alla migrazione
# Define required providers
terraform {
required_version = ">= 0.14.0"
required_providers {
openstack = {
source = "terraform-provider-openstack/openstack"
version = "~> 1.53.0"
version = ">= 1.54.0"
}
}
}

File diff suppressed because it is too large Load Diff

View File

@ -2,23 +2,23 @@
# Manual edits may be lost in future updates.
provider "registry.terraform.io/terraform-provider-openstack/openstack" {
version = "1.53.0"
constraints = "~> 1.53.0"
version = "2.0.0"
constraints = ">= 1.54.0"
hashes = [
"h1:ZSJPqrlaHQ3sj7wyJuPSG+NblFZbAA6Y0d3GjSJf3o8=",
"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",
"h1:TlWnNG9n7MH6S7YBI0BUiQ/wkUPdNNeG2Iy68HsSS20=",
"zh:17dcb07e1af0bf5dfa0aa280a7ad450dffcd4c2b2fba91088eb5ec191ad8a0a0",
"zh:2546f047d34f4372e4eb10db5ba23a45a8952327ae94d15371b2432ba477404e",
"zh:257a96029772251de0ce039483d565744e28e902904a60cb2e1d0af91b09d74d",
"zh:29d71f2a9d74701965a19ad1623d46bfe624e7d58c261075acad04bef373b579",
"zh:30e759253fb7df4d24de8e248ff5f0f038c6e54b82377c70bc19815443476eb6",
"zh:383d8286588b0ccd02062373ee7812ad583775b7d1ef09112716ebf3a6f257cd",
"zh:533beb32a7d355f5ecfc249eb40a9800061dd2590960c48910d7ab8a711495ef",
"zh:5f52cfb93aabf766d6781f66b9cee8b9126a52a330e16c6eadd1b52e8c251870",
"zh:6720f59ade2db328d8e3d37ac4bd588a186379d6c29ebd76761fca916a230ddc",
"zh:725c285c6e979d9564ae0c6017587e65ca6727733cb6fdf0af57047e0f89cb00",
"zh:739ec820139bdd742743c892f0c123b3ef4c0288ed33739380ed362cdcb49085",
"zh:7d223f9e986a8ece51f86143d01f2c7d805c55dce1090e53059d8a38e1121de4",
"zh:9d682904a5346febb820f7d1290d3a5bd09761c0427c9854c3248d222ce970c2",
"zh:f06515d93af460abc39e7713089f9fe714bcb25315582628ecb0b1af7a2a6e2f",
]
}

View File

@ -2,7 +2,7 @@ default_security_group_name = "default_for_all"
shared_postgresql_server_data = {
name = "shared-postgresql-server"
flavor = "m1.large"
flavor = "m1.xxl"
vol_data_name = "shared-postgresql-data"
vol_data_size = "300"
vol_data_device = "/dev/vdb"

View File

@ -4,7 +4,7 @@ terraform {
required_providers {
openstack = {
source = "terraform-provider-openstack/openstack"
version = "~> 1.53.0"
version = ">= 1.54.0"
}
}
}

View File

@ -1,5 +1,5 @@
variable "dns_zone_id" {
default = "74135b34-1a9c-4c01-8cf0-22450a5660c4"
default = "74135b34-1a9c-4c01-8cf0-22450a5660c4"
}
variable "main_private_network_id" {

View File

@ -0,0 +1,165 @@
# Define required providers
terraform {
required_version = ">= 0.14.0"
required_providers {
openstack = {
source = "terraform-provider-openstack/openstack"
version = ">= 1.54.0"
}
}
}
data "terraform_remote_state" "privnet_dns_router" {
backend = "local"
config = {
path = "../project-setup/terraform.tfstate"
}
}
data "terraform_remote_state" "infrastructure_setup" {
backend = "local"
config = {
path = "../basic-infrastructure/terraform.tfstate"
}
}
#
# Uses common_variables as module
#
module "common_variables" {
source = "../../modules/common_variables"
}
# Module used
module "ssh_settings" {
source = "../../modules/ssh-key-ref"
}
resource "openstack_networking_secgroup_v2" "d4science_db_access_list" {
name = "d4science_db_access_list"
delete_default_rules = "true"
description = "Allowed connections to the d4science database"
}
resource "openstack_networking_secgroup_rule_v2" "access_to_the_d4science_db" {
for_each = toset([var.d4science_db_allowed_sources.public])
security_group_id = openstack_networking_secgroup_v2.d4science_db_access_list.id
description = "Access to the d4science db"
direction = "ingress"
ethertype = "IPv4"
protocol = "tcp"
port_range_min = 5432
port_range_max = 5432
remote_ip_prefix = each.value
}
# Block device
resource "openstack_blockstorage_volume_v3" "d4science_db_data_vol" {
name = var.d4science_db_data.vol_data_name
size = var.d4science_db_data.vol_data_size
}
resource "openstack_blockstorage_volume_v3" "d4science_db_backup_vol" {
name = var.d4science_db_data.vol_backup_name
size = var.d4science_db_data.vol_backup_size
}
#
# Ports in d4science db network
resource "openstack_networking_port_v2" "d4science_db_port_on_main_net" {
name = "d4science_db_port_on_main_net"
network_id = data.terraform_remote_state.privnet_dns_router.outputs.main_private_network_id
admin_state_up = "true"
fixed_ip {
subnet_id = data.terraform_remote_state.privnet_dns_router.outputs.main_subnet_network_id
}
security_group_ids = [
openstack_networking_secgroup_v2.d4science_db_access_list.id,
data.terraform_remote_state.infrastructure_setup.outputs.default_security_group.id
]
}
# Instance
resource "openstack_compute_instance_v2" "d4science_db_server" {
name = var.d4science_db_data.name
#availability_zone_hints = module.common_variables.availability_zone_no_gpu_name
flavor_name = var.d4science_db_data.flavor
key_pair = module.ssh_settings.ssh_key_name
security_groups = [data.terraform_remote_state.infrastructure_setup.outputs.default_security_group.name, data.terraform_remote_state.infrastructure_setup.outputs.access_postgresql_security_group.name, openstack_networking_secgroup_v2.d4science_db_access_list.name]
block_device {
uuid = module.common_variables.ubuntu_2204.uuid
source_type = "image"
volume_size = 10
boot_index = 0
destination_type = "volume"
delete_on_termination = false
}
network {
name = module.common_variables.networks_list.shared_postgresql
fixed_ip_v4 = var.d4science_db_data.server_ip
}
user_data = file("${module.common_variables.ubuntu2204_data_file}")
# Do not replace the instance when the ssh key changes
lifecycle {
ignore_changes = [
# Ignore changes to tags, e.g. because a management agent
# updates these based on some ruleset managed elsewhere.
key_pair, user_data, network
]
}
}
resource "openstack_compute_volume_attach_v2" "d4science_db_attach_data_vol" {
instance_id = openstack_compute_instance_v2.d4science_db_server.id
volume_id = openstack_blockstorage_volume_v3.d4science_db_data_vol.id
device = var.d4science_db_data.vol_data_device
depends_on = [openstack_compute_instance_v2.d4science_db_server]
}
resource "openstack_compute_volume_attach_v2" "d4science_db_attach_backup_vol" {
instance_id = openstack_compute_instance_v2.d4science_db_server.id
volume_id = openstack_blockstorage_volume_v3.d4science_db_backup_vol.id
device = var.d4science_db_data.vol_backup_device
depends_on = [openstack_compute_instance_v2.d4science_db_server]
}
resource "openstack_compute_interface_attach_v2" "main_network_to_d4science_db" {
instance_id = openstack_compute_instance_v2.d4science_db_server.id
port_id = openstack_networking_port_v2.d4science_db_port_on_main_net.id
}
# Floating IP and DNS record
resource "openstack_networking_floatingip_v2" "d4science_db_ip" {
pool = data.terraform_remote_state.privnet_dns_router.outputs.floating_ip_pools.main_public_ip_pool
# The DNS association does not work because of a bug in the OpenStack API
description = "D4Science DB"
}
resource "openstack_networking_floatingip_associate_v2" "d4science_db_associate_floatingip" {
floating_ip = openstack_networking_floatingip_v2.d4science_db_ip.address
port_id = openstack_networking_port_v2.d4science_db_port_on_main_net.id
}
locals {
d4science_db_recordset_name = "d4science-db.${data.terraform_remote_state.privnet_dns_router.outputs.dns_zone.zone_name}"
}
resource "openstack_dns_recordset_v2" "d4science_db_recordset" {
zone_id = data.terraform_remote_state.privnet_dns_router.outputs.dns_zone_id
name = local.d4science_db_recordset_name
description = "Public IP address of D4Science DB"
ttl = 8600
type = "A"
records = [openstack_networking_floatingip_v2.d4science_db_ip.address]
}
output "d4science_db_public_ip_address" {
value = openstack_networking_floatingip_v2.d4science_db_ip.address
}
output "d4science_db_hostname" {
value = openstack_dns_recordset_v2.d4science_db_recordset.name
}

View File

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

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,24 @@
#D4Science DB variables
variable "d4science_db_data" {
type = map(string)
default = {
name = "d4science-db"
flavor = "m1.large"
vol_data_name = "d4science-db-data"
vol_data_size = "600"
vol_data_device = "/dev/vdb"
vol_backup_name = "d4science-db-backup"
vol_backup_size = "400"
vol_backup_device = "/dev/vdc"
server_ip = "192.168.0.20"
}
}
variable "d4science_db_allowed_sources" {
type = map(string)
default = {
"public" = "0.0.0.0/0"
}
}

View File

@ -0,0 +1,118 @@
# Define required providers
terraform {
required_version = ">= 0.14.0"
required_providers {
openstack = {
source = "terraform-provider-openstack/openstack"
version = "~> 1.54.0"
}
}
}
data "terraform_remote_state" "privnet_dns_router" {
backend = "local"
config = {
path = "../project-setup/terraform.tfstate"
}
}
#
# Uses common_variables as module
#
module "common_variables" {
source = "../../modules/common_variables"
}
# Module used
module "ssh_settings" {
source = "../../modules/ssh-key-ref"
}
# SSH access from everywhere
resource "openstack_networking_secgroup_v2" "emodnet_ssh_from_outside" {
name = "emodnet_ssh_from_outside"
delete_default_rules = "true"
description = "Access the emodnet VM from the Internet"
}
resource "openstack_networking_secgroup_rule_v2" "emodnet_public_ssh_access" {
security_group_id = openstack_networking_secgroup_v2.emodnet_ssh_from_outside.id
description = "Access the emodnet VM from the Internet"
direction = "ingress"
ethertype = "IPv4"
protocol = "tcp"
port_range_min = 22
port_range_max = 22
remote_ip_prefix = "0.0.0.0/0"
}
# Instances
resource "openstack_compute_instance_v2" "emodnet_service" {
name = "emodnet-vm"
flavor_name = module.common_variables.flavor_list.m2_medium # 4 cores and 16GB RAM
key_pair = module.ssh_settings.ssh_key_name
security_groups = [data.terraform_remote_state.privnet_dns_router.outputs.default_security_group_name, data.terraform_remote_state.privnet_dns_router.outputs.security_group_list.http_and_https_from_the_load_balancers, openstack_networking_secgroup_v2.emodnet_ssh_from_outside.name]
block_device {
uuid = module.common_variables.ubuntu_2404.uuid
source_type = "image"
volume_size = 30
boot_index = 0
destination_type = "volume"
delete_on_termination = false
}
# Creates the networks according to input networks
dynamic "network" {
for_each = toset([data.terraform_remote_state.privnet_dns_router.outputs.main_private_network.name])
content {
name = network.value
}
}
# user_data script used
user_data = file("${module.common_variables.ubuntu_2404.user_data_file}")
# Do not replace the instance when the ssh key changes
lifecycle {
ignore_changes = [
# Ignore changes to tags, e.g. because a management agent
# updates these based on some ruleset managed elsewhere.
key_pair, user_data, network
]
}
}
# Allocate a floating IP
resource "openstack_networking_floatingip_v2" "emodnet_floating_ip" {
pool = data.terraform_remote_state.privnet_dns_router.outputs.floating_ip_pools.main_public_ip_pool
# The DNS association does not work because of a bug in the OpenStack API
# dns_name = "main-lb"
# dns_domain = var.dns_zone.zone_name
description = "Emodnet VM public IP address"
}
resource "openstack_compute_floatingip_associate_v2" "emodnet_ip" {
floating_ip = openstack_networking_floatingip_v2.emodnet_floating_ip.address
instance_id = openstack_compute_instance_v2.emodnet_service.id
depends_on = [openstack_networking_floatingip_v2.emodnet_floating_ip]
}
# DNS record for the floating IP
resource "openstack_dns_recordset_v2" "emodnet_dns_record" {
zone_id = data.terraform_remote_state.privnet_dns_router.outputs.dns_zone_id
name = "emodnet-physics.cloud.d4science.org."
type = "A"
ttl = 300
records = [openstack_networking_floatingip_v2.emodnet_floating_ip.address]
}
resource "openstack_blockstorage_volume_v3" "emodnet_external_volume" {
name = "emodnet-external-volume"
size = 500
description = "External volume for emodnet VM"
}
resource "openstack_compute_volume_attach_v2" "emodnet_volume_attach" {
instance_id = openstack_compute_instance_v2.emodnet_service.id
volume_id = openstack_blockstorage_volume_v3.emodnet_external_volume.id
}

View File

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

View File

@ -0,0 +1,700 @@
{
"version": 4,
"terraform_version": "1.5.7",
"serial": 16,
"lineage": "5280a56d-09c0-a560-fcb9-8eb61f389b46",
"outputs": {},
"resources": [
{
"mode": "data",
"type": "terraform_remote_state",
"name": "privnet_dns_router",
"provider": "provider[\"terraform.io/builtin/terraform\"]",
"instances": [
{
"schema_version": 0,
"attributes": {
"backend": "local",
"config": {
"value": {
"path": "../project-setup/terraform.tfstate"
},
"type": [
"object",
{
"path": "string"
}
]
},
"defaults": null,
"outputs": {
"value": {
"almalinux_9": {
"name": "AlmaLinux-9.0-20220718",
"uuid": "541650fc-dd19-4f38-bb1d-7333ed9dd688"
},
"availability_zone_no_gpu_name": "cnr-isti-nova-a",
"availability_zone_with_gpu_name": "cnr-isti-nova-gpu-a",
"availability_zones_names": {
"availability_zone_no_gpu": "cnr-isti-nova-a",
"availability_zone_with_gpu": "cnr-isti-nova-gpu-a"
},
"basic_services_ip": {
"ca": "10.1.40.4",
"ca_cidr": "10.1.40.4/32",
"haproxy_l7_1": "10.1.40.11",
"haproxy_l7_1_cidr": "10.1.40.11/32",
"haproxy_l7_2": "10.1.40.12",
"haproxy_l7_2_cidr": "10.1.40.12/32",
"octavia_main": "10.1.40.20",
"octavia_main_cidr": "10.1.40.20/32",
"prometheus": "10.1.40.10",
"prometheus_cidr": "10.1.40.10/32",
"ssh_jump": "10.1.40.5",
"ssh_jump_cidr": "10.1.40.5/32"
},
"centos_7": {
"name": "CentOS-7",
"uuid": "f0187a99-64f6-462a-ab5f-ef52fe62f2ca"
},
"default_security_group_name": "default_for_all",
"dns_zone": {
"description": "DNS primary zone for the d4s-production-cloud project",
"email": "postmaster@isti.cnr.it",
"ttl": "8600",
"zone_name": "cloud.d4science.org."
},
"dns_zone_id": "74135b34-1a9c-4c01-8cf0-22450a5660c4",
"el7_data_file": "../../openstack_vm_data_scripts/el7.sh",
"external_gateway_ip": [
{
"ip_address": "146.48.31.57",
"subnet_id": "57f87509-4016-46fb-b8c3-25fca7f72ccb"
}
],
"external_network": {
"id": "1d2ff137-6ff7-4017-be2b-0d6c4af2353b",
"name": "external-network"
},
"external_network_id": "1d2ff137-6ff7-4017-be2b-0d6c4af2353b",
"external_router": {
"description": "D4Science Production main router",
"id": "cc26064a-bb08-4c0b-929f-d0cb39f934a3",
"name": "d4s-production-cloud-external-router"
},
"flavor_list": {
"c1_large": "c1.large",
"c1_medium": "c1.medium",
"c1_small": "c1.small",
"c2_large": "c2.large",
"m1_large": "m1.large",
"m1_medium": "m1.medium",
"m1_xlarge": "m1.xlarge",
"m1_xxl": "m1.xxl",
"m2_large": "m2.large",
"m2_medium": "m2.medium",
"m2_small": "m2.small",
"m3_large": "m3.large"
},
"floating_ip_pools": {
"main_public_ip_pool": "external-network"
},
"haproxy_l7_data": {
"flavor": "m1.medium",
"haproxy_1": "haproxy-l7-1",
"haproxy_2": "haproxy-l7-2",
"name": "main-haproxy-l7",
"vm_count": "2"
},
"internal_ca_data": {
"flavor": "m1.small",
"name": "ca"
},
"main_haproxy_l7_ip": [
"10.1.40.11",
"10.1.40.12"
],
"main_private_network": {
"description": "D4Science Production private network (use this as the main network)",
"name": "d4s-production-cloud-main"
},
"main_private_network_id": "020df98d-ae72-452a-b376-3b6dc289acac",
"main_private_subnet": {
"allocation_end": "10.1.47.254",
"allocation_start": "10.1.41.100",
"cidr": "10.1.40.0/21",
"description": "D4Science Production main private subnet",
"gateway_ip": "10.1.40.1",
"name": "d4s-production-cloud-main-subnet"
},
"main_region": "isti_area_pi_1",
"main_subnet_network_id": "5d7b83ad-e058-4a3a-bfd8-d20ba6d42e1a",
"mtu_size": 8942,
"networks_list": {
"cassandra": "cassandra-net",
"orientdb": "orientdb-net",
"orientdb_se": "orientdb-se-net",
"shared_postgresql": "postgresql-srv-net",
"swarm": "swarm-nfs-net",
"timescaledb": "timescaledb-net"
},
"networks_with_d4s_services": {
"garr_ct1_net": "90.147.166.0/23",
"garr_na_net": "90.147.152.0/24",
"garr_pa1_net": "90.147.188.0/23",
"infrascience_net": "146.48.122.0/23",
"isti_net": "146.48.80.0/21",
"s2i2s_net": "146.48.28.0/22"
},
"nfs_share_no_ingress_secgroup_id": "167e4897-f776-4cbd-986f-77313aa68af2",
"octavia_information": {
"main_lb_description": "Main L4 load balancer for the D4Science production",
"main_lb_hostname": "main-lb",
"main_lb_name": "d4s-production-cloud-l4-load-balancer",
"octavia_flavor": "octavia_amphora-mvcpu-ha",
"octavia_flavor_id": "394988b5-6603-4a1e-a939-8e177c6681c7",
"swarm_lb_name": "d4s-production-cloud-l4-swarm-load-balancer"
},
"os_project_data": {
"id": "1b45adf388934758b56d0dfdb4bfacf3"
},
"policy_list": {
"affinity": "affinity",
"anti_affinity": "anti-affinity",
"soft_affinity": "soft-affinity",
"soft_anti_affinity": "soft-anti-affinity"
},
"prometheus_server_data": {
"flavor": "m1.medium",
"name": "prometheus",
"public_grafana_server_cidr": "146.48.28.103/32",
"vol_data_device": "/dev/vdb",
"vol_data_name": "prometheus-data",
"vol_data_size": "100"
},
"resolvers_ip": [
"146.48.29.97",
"146.48.29.98",
"146.48.29.99"
],
"resource_registry_addresses": {},
"security_group_list": {
"acaland": "acaland's dev machine",
"access_to_orientdb": "access_to_orientdb",
"access_to_orientdb_se": "access_to_orientdb_se",
"access_to_the_timescaledb_service": "access_to_the_timescaledb_service",
"cassandra": "Cassandra",
"dataminer-publish": "dataminer-publish",
"debugging_from_jump_node": "debugging_from_jump_node",
"default": "default",
"docker_swarm": "Docker Swarm",
"docker_swarm_NFS": "Docker Swarm NFS",
"haproxy": "traffic_from_main_lb_to_haproxy_l7",
"http_and_https_from_the_load_balancers": "traffic_from_the_main_load_balancers",
"limited_HTTPS_access": "restricted_web_service",
"limited_SSH_access": "Limited SSH access",
"mongo": "mongo",
"nfs_share_no_ingress": "nfs_share_no_ingress",
"orientdb_internal_docker_traffic": "orientdb_internal_docker_traffic",
"postgreSQL": "PostgreSQL service",
"public_HTTPS": "Public HTTPS"
},
"shared_postgresql_server_data": {
"allocation_pool_end": "192.168.3.254",
"allocation_pool_start": "192.168.0.100",
"flavor": "m1.medium",
"name": "shared-postgresql-server",
"network_cidr": "192.168.0.0/22",
"network_description": "Network used to communicate with the shared postgresql service",
"network_name": "postgresql-srv-net",
"server_cidr": "192.168.0.5/22",
"server_ip": "192.168.0.5",
"vol_data_device": "/dev/vdb",
"vol_data_name": "shared-postgresql-data",
"vol_data_size": "100"
},
"smartexecutor_addresses": {},
"ssh_jump_proxy": {
"flavor": "m2.small",
"name": "ssh-jump-proxy"
},
"ssh_sources": {
"d4s_vpn_1_cidr": "146.48.122.27/32",
"d4s_vpn_2_cidr": "146.48.122.49/32",
"infrascience_net_cidr": "146.48.122.0/23",
"s2i2s_vpn_1_cidr": "146.48.28.10/32",
"s2i2s_vpn_2_cidr": "146.48.28.11/32",
"shell_d4s_cidr": "146.48.122.95/32"
},
"storage_nfs_network_id": "5f4023cc-4016-404c-94e5-86220095fbaf",
"storage_nfs_subnet_id": "6ff0f9e8-0e74-4cc3-a268-7ed4af435696",
"ubuntu1804_data_file": "../../openstack_vm_data_scripts/ubuntu1804.sh",
"ubuntu2204_data_file": "../../openstack_vm_data_scripts/ubuntu2204.sh",
"ubuntu_1804": {
"name": "Ubuntu-Bionic-18.04",
"user_data_file": "../../openstack_vm_data_scripts/ubuntu1804.sh",
"uuid": "7ed6a2cd-2b07-482e-8ce4-f018dff16c89"
},
"ubuntu_2204": {
"name": "Ubuntu-Jammy-22.04",
"user_data_file": "../../openstack_vm_data_scripts/ubuntu2204.sh",
"uuid": "54768889-8556-4be4-a2eb-82a4d9b34627"
}
},
"type": [
"object",
{
"almalinux_9": [
"map",
"string"
],
"availability_zone_no_gpu_name": "string",
"availability_zone_with_gpu_name": "string",
"availability_zones_names": [
"map",
"string"
],
"basic_services_ip": [
"map",
"string"
],
"centos_7": [
"map",
"string"
],
"default_security_group_name": "string",
"dns_zone": [
"map",
"string"
],
"dns_zone_id": "string",
"el7_data_file": "string",
"external_gateway_ip": [
"list",
[
"object",
{
"ip_address": "string",
"subnet_id": "string"
}
]
],
"external_network": [
"map",
"string"
],
"external_network_id": "string",
"external_router": [
"map",
"string"
],
"flavor_list": [
"map",
"string"
],
"floating_ip_pools": [
"map",
"string"
],
"haproxy_l7_data": [
"map",
"string"
],
"internal_ca_data": [
"map",
"string"
],
"main_haproxy_l7_ip": [
"list",
"string"
],
"main_private_network": [
"map",
"string"
],
"main_private_network_id": "string",
"main_private_subnet": [
"map",
"string"
],
"main_region": "string",
"main_subnet_network_id": "string",
"mtu_size": "number",
"networks_list": [
"map",
"string"
],
"networks_with_d4s_services": [
"map",
"string"
],
"nfs_share_no_ingress_secgroup_id": "string",
"octavia_information": [
"map",
"string"
],
"os_project_data": [
"map",
"string"
],
"policy_list": [
"map",
"string"
],
"prometheus_server_data": [
"map",
"string"
],
"resolvers_ip": [
"list",
"string"
],
"resource_registry_addresses": [
"map",
"string"
],
"security_group_list": [
"map",
"string"
],
"shared_postgresql_server_data": [
"map",
"string"
],
"smartexecutor_addresses": [
"map",
"string"
],
"ssh_jump_proxy": [
"map",
"string"
],
"ssh_sources": [
"map",
"string"
],
"storage_nfs_network_id": "string",
"storage_nfs_subnet_id": "string",
"ubuntu1804_data_file": "string",
"ubuntu2204_data_file": "string",
"ubuntu_1804": [
"map",
"string"
],
"ubuntu_2204": [
"map",
"string"
]
}
]
},
"workspace": null
},
"sensitive_attributes": []
}
]
},
{
"mode": "managed",
"type": "openstack_blockstorage_volume_v3",
"name": "emodnet_external_volume",
"provider": "provider[\"registry.terraform.io/terraform-provider-openstack/openstack\"]",
"instances": [
{
"schema_version": 0,
"attributes": {
"attachment": [
{
"device": "/dev/vdb",
"id": "8c2e2e9c-2d81-4327-99c6-e661b8362706",
"instance_id": "16e4ef0f-b27f-4316-88e6-7412f72a3a19"
}
],
"availability_zone": "nova",
"backup_id": "",
"consistency_group_id": null,
"description": "External volume for emodnet VM",
"enable_online_resize": null,
"id": "8c2e2e9c-2d81-4327-99c6-e661b8362706",
"image_id": null,
"metadata": {},
"multiattach": null,
"name": "emodnet-external-volume",
"region": "isti_area_pi_1",
"scheduler_hints": [],
"size": 500,
"snapshot_id": "",
"source_replica": null,
"source_vol_id": "",
"timeouts": null,
"volume_type": "cephUnencrypted"
},
"sensitive_attributes": [],
"private": "eyJlMmJmYjczMC1lY2FhLTExZTYtOGY4OC0zNDM2M2JjN2M0YzAiOnsiY3JlYXRlIjo2MDAwMDAwMDAwMDAsImRlbGV0ZSI6NjAwMDAwMDAwMDAwfX0="
}
]
},
{
"mode": "managed",
"type": "openstack_compute_floatingip_associate_v2",
"name": "emodnet_ip",
"provider": "provider[\"registry.terraform.io/terraform-provider-openstack/openstack\"]",
"instances": [
{
"schema_version": 0,
"attributes": {
"fixed_ip": "",
"floating_ip": "146.48.30.95",
"id": "146.48.30.95/16e4ef0f-b27f-4316-88e6-7412f72a3a19/",
"instance_id": "16e4ef0f-b27f-4316-88e6-7412f72a3a19",
"region": "isti_area_pi_1",
"timeouts": null,
"wait_until_associated": null
},
"sensitive_attributes": [],
"private": "eyJlMmJmYjczMC1lY2FhLTExZTYtOGY4OC0zNDM2M2JjN2M0YzAiOnsiY3JlYXRlIjo2MDAwMDAwMDAwMDB9fQ==",
"dependencies": [
"data.terraform_remote_state.privnet_dns_router",
"openstack_compute_instance_v2.emodnet_service",
"openstack_networking_floatingip_v2.emodnet_floating_ip",
"openstack_networking_secgroup_v2.emodnet_ssh_from_outside"
]
}
]
},
{
"mode": "managed",
"type": "openstack_compute_instance_v2",
"name": "emodnet_service",
"provider": "provider[\"registry.terraform.io/terraform-provider-openstack/openstack\"]",
"instances": [
{
"schema_version": 0,
"attributes": {
"access_ip_v4": "10.1.42.140",
"access_ip_v6": "",
"admin_pass": null,
"all_metadata": {},
"all_tags": [],
"availability_zone": "cnr-isti-nova-gpu-a",
"availability_zone_hints": null,
"block_device": [
{
"boot_index": 0,
"delete_on_termination": false,
"destination_type": "volume",
"device_type": "",
"disk_bus": "",
"guest_format": "",
"multiattach": false,
"source_type": "image",
"uuid": "fc3f705d-3cf5-4866-8ef6-ff6e2cdd4075",
"volume_size": 30,
"volume_type": ""
}
],
"config_drive": null,
"created": "2024-09-23 09:40:42 +0000 UTC",
"flavor_id": "15",
"flavor_name": "m2.medium",
"floating_ip": null,
"force_delete": false,
"id": "16e4ef0f-b27f-4316-88e6-7412f72a3a19",
"image_id": "Attempt to boot from volume - no image supplied",
"image_name": null,
"key_pair": "acaland",
"metadata": null,
"name": "emodnet-vm",
"network": [
{
"access_network": false,
"fixed_ip_v4": "10.1.42.140",
"fixed_ip_v6": "",
"floating_ip": "",
"mac": "fa:16:3e:72:01:b0",
"name": "d4s-production-cloud-main",
"port": "",
"uuid": "020df98d-ae72-452a-b376-3b6dc289acac"
}
],
"network_mode": null,
"personality": [],
"power_state": "active",
"region": "isti_area_pi_1",
"scheduler_hints": [],
"security_groups": [
"default_for_all",
"emodnet_ssh_from_outside",
"traffic_from_the_main_load_balancers"
],
"stop_before_destroy": false,
"tags": [],
"timeouts": null,
"updated": "2024-09-23 09:41:56 +0000 UTC",
"user_data": "bb83b25fd1219aa1b850ece9be8d7b0f31714608",
"vendor_options": [],
"volume": []
},
"sensitive_attributes": [],
"private": "eyJlMmJmYjczMC1lY2FhLTExZTYtOGY4OC0zNDM2M2JjN2M0YzAiOnsiY3JlYXRlIjoxODAwMDAwMDAwMDAwLCJkZWxldGUiOjE4MDAwMDAwMDAwMDAsInVwZGF0ZSI6MTgwMDAwMDAwMDAwMH19",
"dependencies": [
"data.terraform_remote_state.privnet_dns_router",
"openstack_networking_secgroup_v2.emodnet_ssh_from_outside"
]
}
]
},
{
"mode": "managed",
"type": "openstack_compute_volume_attach_v2",
"name": "emodnet_volume_attach",
"provider": "provider[\"registry.terraform.io/terraform-provider-openstack/openstack\"]",
"instances": [
{
"schema_version": 0,
"attributes": {
"device": "/dev/vdb",
"id": "16e4ef0f-b27f-4316-88e6-7412f72a3a19/8c2e2e9c-2d81-4327-99c6-e661b8362706",
"instance_id": "16e4ef0f-b27f-4316-88e6-7412f72a3a19",
"multiattach": null,
"region": "isti_area_pi_1",
"timeouts": null,
"vendor_options": [],
"volume_id": "8c2e2e9c-2d81-4327-99c6-e661b8362706"
},
"sensitive_attributes": [],
"private": "eyJlMmJmYjczMC1lY2FhLTExZTYtOGY4OC0zNDM2M2JjN2M0YzAiOnsiY3JlYXRlIjo2MDAwMDAwMDAwMDAsImRlbGV0ZSI6NjAwMDAwMDAwMDAwfX0=",
"dependencies": [
"data.terraform_remote_state.privnet_dns_router",
"openstack_blockstorage_volume_v3.emodnet_external_volume",
"openstack_compute_instance_v2.emodnet_service",
"openstack_networking_secgroup_v2.emodnet_ssh_from_outside"
]
}
]
},
{
"mode": "managed",
"type": "openstack_dns_recordset_v2",
"name": "emodnet_dns_record",
"provider": "provider[\"registry.terraform.io/terraform-provider-openstack/openstack\"]",
"instances": [
{
"schema_version": 0,
"attributes": {
"description": "",
"disable_status_check": false,
"id": "74135b34-1a9c-4c01-8cf0-22450a5660c4/bfa15d7d-f261-4134-ace1-d1d289ac21b6",
"name": "emodnet-physics.cloud.d4science.org.",
"project_id": "1b45adf388934758b56d0dfdb4bfacf3",
"records": [
"146.48.30.95"
],
"region": "isti_area_pi_1",
"timeouts": null,
"ttl": 300,
"type": "A",
"value_specs": null,
"zone_id": "74135b34-1a9c-4c01-8cf0-22450a5660c4"
},
"sensitive_attributes": [],
"private": "eyJlMmJmYjczMC1lY2FhLTExZTYtOGY4OC0zNDM2M2JjN2M0YzAiOnsiY3JlYXRlIjo2MDAwMDAwMDAwMDAsImRlbGV0ZSI6NjAwMDAwMDAwMDAwLCJ1cGRhdGUiOjYwMDAwMDAwMDAwMH19",
"dependencies": [
"data.terraform_remote_state.privnet_dns_router",
"openstack_networking_floatingip_v2.emodnet_floating_ip"
]
}
]
},
{
"mode": "managed",
"type": "openstack_networking_floatingip_v2",
"name": "emodnet_floating_ip",
"provider": "provider[\"registry.terraform.io/terraform-provider-openstack/openstack\"]",
"instances": [
{
"schema_version": 0,
"attributes": {
"address": "146.48.30.95",
"all_tags": [],
"description": "Emodnet VM public IP address",
"dns_domain": "",
"dns_name": "",
"fixed_ip": "10.1.42.140",
"id": "256ff03b-1bb1-4024-b585-e5d63b3c0e2a",
"pool": "external-network",
"port_id": "cc720c49-1eef-43c1-9f7a-5324313928ab",
"region": "isti_area_pi_1",
"subnet_id": null,
"subnet_ids": null,
"tags": [],
"tenant_id": "1b45adf388934758b56d0dfdb4bfacf3",
"timeouts": null,
"value_specs": null
},
"sensitive_attributes": [],
"private": "eyJlMmJmYjczMC1lY2FhLTExZTYtOGY4OC0zNDM2M2JjN2M0YzAiOnsiY3JlYXRlIjo2MDAwMDAwMDAwMDAsImRlbGV0ZSI6NjAwMDAwMDAwMDAwfX0=",
"dependencies": [
"data.terraform_remote_state.privnet_dns_router"
]
}
]
},
{
"mode": "managed",
"type": "openstack_networking_secgroup_rule_v2",
"name": "emodnet_public_ssh_access",
"provider": "provider[\"registry.terraform.io/terraform-provider-openstack/openstack\"]",
"instances": [
{
"schema_version": 0,
"attributes": {
"description": "Access the emodnet VM from the Internet",
"direction": "ingress",
"ethertype": "IPv4",
"id": "a7935110-c89c-4827-a179-5a3561be7647",
"port_range_max": 22,
"port_range_min": 22,
"protocol": "tcp",
"region": "isti_area_pi_1",
"remote_group_id": "",
"remote_ip_prefix": "0.0.0.0/0",
"security_group_id": "e01d0bc3-659c-4893-8d1d-cd1f327ee568",
"tenant_id": "1b45adf388934758b56d0dfdb4bfacf3",
"timeouts": null
},
"sensitive_attributes": [],
"private": "eyJlMmJmYjczMC1lY2FhLTExZTYtOGY4OC0zNDM2M2JjN2M0YzAiOnsiZGVsZXRlIjo2MDAwMDAwMDAwMDB9fQ==",
"dependencies": [
"openstack_networking_secgroup_v2.emodnet_ssh_from_outside"
]
}
]
},
{
"mode": "managed",
"type": "openstack_networking_secgroup_v2",
"name": "emodnet_ssh_from_outside",
"provider": "provider[\"registry.terraform.io/terraform-provider-openstack/openstack\"]",
"instances": [
{
"schema_version": 0,
"attributes": {
"all_tags": [],
"delete_default_rules": true,
"description": "Access the emodnet VM from the Internet",
"id": "e01d0bc3-659c-4893-8d1d-cd1f327ee568",
"name": "emodnet_ssh_from_outside",
"region": "isti_area_pi_1",
"tags": [],
"tenant_id": "1b45adf388934758b56d0dfdb4bfacf3",
"timeouts": null
},
"sensitive_attributes": [],
"private": "eyJlMmJmYjczMC1lY2FhLTExZTYtOGY4OC0zNDM2M2JjN2M0YzAiOnsiZGVsZXRlIjo2MDAwMDAwMDAwMDB9fQ=="
}
]
}
],
"check_results": null
}

View File

@ -4,7 +4,7 @@ terraform {
required_providers {
openstack = {
source = "terraform-provider-openstack/openstack"
version = "~> 1.53.0"
version = ">= 1.54.0"
}
}
}
@ -27,34 +27,6 @@ module "instance_with_data_volume" {
source = "../../modules/instance_with_data_volume"
instances_with_data_volume_map = {
geonetwork_ariadne = {
name = "geonetwork-ariadne",
description = "This instance serves geonetwork service",
flavor = module.common_variables.flavor_list.m2_small,
networks = [data.terraform_remote_state.privnet_dns_router.outputs.main_private_network.name, module.common_variables.networks_list.shared_postgresql],
security_groups = [data.terraform_remote_state.privnet_dns_router.outputs.default_security_group_name, data.terraform_remote_state.privnet_dns_router.outputs.security_group_list.http_and_https_from_the_load_balancers],
server_groups_ids = [],
image_ref = module.common_variables.ubuntu_1804
volume = {
name = "geonetwork_ariadne_data_volume",
size = "20",
device = "/dev/vdb"
}
},
geonetwork_fisherieatlas = {
name = "geonetwork-fisherieatlas",
description = "This instance serves geonetwork service",
flavor = module.common_variables.flavor_list.m2_small,
networks = [data.terraform_remote_state.privnet_dns_router.outputs.main_private_network.name, module.common_variables.networks_list.shared_postgresql],
security_groups = [data.terraform_remote_state.privnet_dns_router.outputs.default_security_group_name, data.terraform_remote_state.privnet_dns_router.outputs.security_group_list.http_and_https_from_the_load_balancers],
server_groups_ids = [],
image_ref = module.common_variables.ubuntu_1804
volume = {
name = "geonetwork_fisherieatlas_data_volume",
size = "20",
device = "/dev/vdb"
}
},
geonetwork_grsf = {
name = "geonetwork-grsf",
description = "This instance serves geonetwork service",
@ -69,21 +41,6 @@ module "instance_with_data_volume" {
device = "/dev/vdb"
}
},
geonetwork_iotcss3 = {
name = "geonetwork-iotcss3",
description = "This instance serves geonetwork service",
flavor = module.common_variables.flavor_list.m2_small,
networks = [data.terraform_remote_state.privnet_dns_router.outputs.main_private_network.name, module.common_variables.networks_list.shared_postgresql],
security_groups = [data.terraform_remote_state.privnet_dns_router.outputs.default_security_group_name, data.terraform_remote_state.privnet_dns_router.outputs.security_group_list.http_and_https_from_the_load_balancers],
server_groups_ids = [],
image_ref = module.common_variables.ubuntu_1804
volume = {
name = "geonetwork_iotcss3_data_volume",
size = "20",
device = "/dev/vdb"
}
},
geonetwork_sdilab = {
name = "geonetwork-sdilab",
description = "This instance serves geonetwork service",
@ -140,20 +97,6 @@ module "instance_with_data_volume" {
device = "/dev/vdb"
}
},
geonetwork_tunaatlas = {
name = "geonetwork-tunaatlas",
description = "This instance serves geonetwork service",
flavor = module.common_variables.flavor_list.m2_small,
networks = [data.terraform_remote_state.privnet_dns_router.outputs.main_private_network.name, module.common_variables.networks_list.shared_postgresql],
security_groups = [data.terraform_remote_state.privnet_dns_router.outputs.default_security_group_name, data.terraform_remote_state.privnet_dns_router.outputs.security_group_list.http_and_https_from_the_load_balancers],
image_ref = module.common_variables.ubuntu_1804
server_groups_ids = [],
volume = {
name = "geonetwork_tunaatlas_data_volume",
size = "20",
device = "/dev/vdb"
}
},
geonetwork_globalfisheriesatlas = {
name = "geonetwork-globalfisheriesatlas",
description = "This instance serves geonetwork service",
@ -168,22 +111,8 @@ module "instance_with_data_volume" {
device = "/dev/vdb"
}
},
geonetwork_prod = {
name = "geonetwork-prod",
description = "This instance serves geonetwork service",
flavor = module.common_variables.flavor_list.m1_large,
networks = [data.terraform_remote_state.privnet_dns_router.outputs.main_private_network.name, module.common_variables.networks_list.shared_postgresql],
security_groups = [data.terraform_remote_state.privnet_dns_router.outputs.default_security_group_name, data.terraform_remote_state.privnet_dns_router.outputs.security_group_list.http_and_https_from_the_load_balancers],
image_ref = module.common_variables.ubuntu_1804
server_groups_ids = [],
volume = {
name = "geonetwork_prod_data_volume",
size = "40",
device = "/dev/vdb"
}
},
geonetwork_itineris_carbon = {
name = "geonetwork-itineris-carbon",
geonetwork_itineris = {
name = "geonetwork-itineris",
description = "This instance serves geonetwork service",
flavor = module.common_variables.flavor_list.m2_small,
networks = [data.terraform_remote_state.privnet_dns_router.outputs.main_private_network.name, module.common_variables.networks_list.shared_postgresql],
@ -191,11 +120,53 @@ module "instance_with_data_volume" {
image_ref = module.common_variables.ubuntu_1804
server_groups_ids = [],
volume = {
name = "geonetwork_itineris_carbon_data_volume",
name = "geonetwork_itineris_data_volume",
size = "20",
device = "/dev/vdb"
}
},
geonetwork_gaiablulab = {
name = "geonetwork-gaiablulab",
description = "This instance serves geonetwork service",
flavor = module.common_variables.flavor_list.m2_small,
networks = [data.terraform_remote_state.privnet_dns_router.outputs.main_private_network.name, module.common_variables.networks_list.shared_postgresql],
security_groups = [data.terraform_remote_state.privnet_dns_router.outputs.default_security_group_name, data.terraform_remote_state.privnet_dns_router.outputs.security_group_list.http_and_https_from_the_load_balancers],
image_ref = module.common_variables.ubuntu_1804
server_groups_ids = [],
volume = {
name = "geonetwork_gaiablulab_data_volume",
size = "20",
device = "/dev/vdb"
}
},
geonetwork_aquacultureatlas = {
name = "geonetwork-aquacultureatlas",
description = "This instance serves geonetwork service",
flavor = module.common_variables.flavor_list.m2_small,
networks = [data.terraform_remote_state.privnet_dns_router.outputs.main_private_network.name, module.common_variables.networks_list.shared_postgresql],
security_groups = [data.terraform_remote_state.privnet_dns_router.outputs.default_security_group_name, data.terraform_remote_state.privnet_dns_router.outputs.security_group_list.http_and_https_from_the_load_balancers],
server_groups_ids = [],
image_ref = module.common_variables.ubuntu_1804
volume = {
name = "geonetwork_aquacultureatlas_data_volume",
size = "20",
device = "/dev/vdb"
}
}
# geonetwork_recofi_rdb_pilot = {
# name = "geonetwork-recofi-rdb-pilot",
# description = "This instance serves geonetwork service",
# flavor = module.common_variables.flavor_list.m2_small,
# networks = [data.terraform_remote_state.privnet_dns_router.outputs.main_private_network.name, module.common_variables.networks_list.shared_postgresql],
# security_groups = [data.terraform_remote_state.privnet_dns_router.outputs.default_security_group_name, data.terraform_remote_state.privnet_dns_router.outputs.security_group_list.http_and_https_from_the_load_balancers],
# image_ref = module.common_variables.ubuntu_1804
# server_groups_ids = [],
# volume = {
# name = "geonetwork_recofi_rdb_pilot_data_volume",
# size = "20",
# device = "/dev/vdb"
# }
# }
}
}
@ -210,22 +181,6 @@ module "dns_records_create" {
source = "../../modules/dns_resources"
dns_resources_map = {
geonetwork-ariadne = {
zone_id = data.terraform_remote_state.privnet_dns_router.outputs.dns_zone_id
name = join(".", ["geonetwork-ariadne", data.terraform_remote_state.privnet_dns_router.outputs.dns_zone.zone_name])
description = "Geonetwork geonetwork-ariadne"
ttl = 8600
type = "CNAME"
records = [local.cname_target]
},
geonetwork-fisherieatlas = {
zone_id = data.terraform_remote_state.privnet_dns_router.outputs.dns_zone_id
name = join(".", ["geonetwork-fisherieatlas", data.terraform_remote_state.privnet_dns_router.outputs.dns_zone.zone_name])
description = "Geonetwork geonetwork-fisherieatlas"
ttl = 8600
type = "CNAME"
records = [local.cname_target]
},
geonetwork-grsf = {
zone_id = data.terraform_remote_state.privnet_dns_router.outputs.dns_zone_id
name = join(".", ["geonetwork-grsf", data.terraform_remote_state.privnet_dns_router.outputs.dns_zone.zone_name])
@ -234,14 +189,6 @@ module "dns_records_create" {
type = "CNAME"
records = [local.cname_target]
},
geonetwork-iotcss3 = {
zone_id = data.terraform_remote_state.privnet_dns_router.outputs.dns_zone_id
name = join(".", ["geonetwork-iotcss3", data.terraform_remote_state.privnet_dns_router.outputs.dns_zone.zone_name])
description = "Geonetwork geonetwork-iotcss3"
ttl = 8600
type = "CNAME"
records = [local.cname_target]
},
geonetwork-sdilab = {
zone_id = data.terraform_remote_state.privnet_dns_router.outputs.dns_zone_id
name = join(".", ["geonetwork-sdilab", data.terraform_remote_state.privnet_dns_router.outputs.dns_zone.zone_name])
@ -274,14 +221,6 @@ module "dns_records_create" {
type = "CNAME"
records = [local.cname_target]
},
geonetwork-tunaatlas = {
zone_id = data.terraform_remote_state.privnet_dns_router.outputs.dns_zone_id
name = join(".", ["geonetwork-tunaatlas", data.terraform_remote_state.privnet_dns_router.outputs.dns_zone.zone_name])
description = "Geonetwork geonetwork-tunaatlas"
ttl = 8600
type = "CNAME"
records = [local.cname_target]
},
geonetwork-globalfisheriesatlas = {
zone_id = data.terraform_remote_state.privnet_dns_router.outputs.dns_zone_id
name = join(".", ["geonetwork-globalfisheriesatlas", data.terraform_remote_state.privnet_dns_router.outputs.dns_zone.zone_name])
@ -290,21 +229,37 @@ module "dns_records_create" {
type = "CNAME"
records = [local.cname_target]
},
geonetwork-prod = {
geonetwork-itineris = {
zone_id = data.terraform_remote_state.privnet_dns_router.outputs.dns_zone_id
name = join(".", ["geonetwork-prod", data.terraform_remote_state.privnet_dns_router.outputs.dns_zone.zone_name])
description = "Geonetwork geonetwork-prod"
name = join(".", ["geonetwork-itineris", data.terraform_remote_state.privnet_dns_router.outputs.dns_zone.zone_name])
description = "Geonetwork geonetwork-itineris"
ttl = 8600
type = "CNAME"
records = [local.cname_target]
},
geonetwork-itineris-carbon = {
geonetwork-gaiablulab = {
zone_id = data.terraform_remote_state.privnet_dns_router.outputs.dns_zone_id
name = join(".", ["geonetwork-itineris-carbon", data.terraform_remote_state.privnet_dns_router.outputs.dns_zone.zone_name])
description = "Geonetwork geonetwork-itineris-carbon"
name = join(".", ["geonetwork-gaiablulab", data.terraform_remote_state.privnet_dns_router.outputs.dns_zone.zone_name])
description = "Geonetwork geonetwork-gaiablulab"
ttl = 8600
type = "CNAME"
records = [local.cname_target]
},
geonetwork-aquacultureatlas = {
zone_id = data.terraform_remote_state.privnet_dns_router.outputs.dns_zone_id
name = join(".", ["geonetwork-aquacultureatlas", data.terraform_remote_state.privnet_dns_router.outputs.dns_zone.zone_name])
description = "Geonetwork geonetwork-aquacultureatlas"
ttl = 8600
type = "CNAME"
records = [local.cname_target]
}
# geonetwork-recofi-rdb-pilot = {
# zone_id = data.terraform_remote_state.privnet_dns_router.outputs.dns_zone_id
# name = join(".", ["geonetwork-recofi-rdb-pilot", data.terraform_remote_state.privnet_dns_router.outputs.dns_zone.zone_name])
# description = "Geonetwork geonetwork-recofi-rdb-pilot"
# ttl = 8600
# type = "CNAME"
# records = [local.cname_target]
# }
}
}

File diff suppressed because it is too large Load Diff

View File

@ -4,7 +4,7 @@ terraform {
required_providers {
openstack = {
source = "terraform-provider-openstack/openstack"
version = "~> 1.53.0"
version = ">= 1.54.0"
}
}
}
@ -57,20 +57,6 @@ module "instance_with_data_volume" {
device = "/dev/vdb",
}
},
geoserver_ariadne = {
name = "geoserver-ariadne",
description = "Geoserver ariadne instance",
flavor = module.common_variables.flavor_list.m2_small,
networks = [data.terraform_remote_state.privnet_dns_router.outputs.main_private_network.name, module.common_variables.networks_list.shared_postgresql],
security_groups = [data.terraform_remote_state.privnet_dns_router.outputs.default_security_group_name, data.terraform_remote_state.privnet_dns_router.outputs.security_group_list.http_and_https_from_the_load_balancers],
server_groups_ids = [],
image_ref = module.common_variables.ubuntu_1804,
volume = {
name = "geoserver_ariadne_data_volume",
size = "20",
device = "/dev/vdb",
}
},
geoserver_grsf = {
name = "geoserver-grsf",
description = "Geoserver grsf instance",
@ -113,20 +99,6 @@ module "instance_with_data_volume" {
device = "/dev/vdb",
}
},
geoserver_tunaatlas = {
name = "geoserver-tunaatlas",
description = "Geoserver tunaatlas instance",
flavor = module.common_variables.flavor_list.m1_large,
networks = [data.terraform_remote_state.privnet_dns_router.outputs.main_private_network.name, module.common_variables.networks_list.shared_postgresql],
security_groups = [data.terraform_remote_state.privnet_dns_router.outputs.default_security_group_name, data.terraform_remote_state.privnet_dns_router.outputs.security_group_list.http_and_https_from_the_load_balancers],
server_groups_ids = [],
image_ref = module.common_variables.ubuntu_1804,
volume = {
name = "geoserver_tunaatlas_data_volume",
size = "60",
device = "/dev/vdb",
}
},
geoserver_wecafcfirms = {
name = "geoserver-wecafcfirms",
description = "Geoserver wecafcfirms instance",
@ -196,7 +168,77 @@ module "instance_with_data_volume" {
size = "40",
device = "/dev/vdb",
}
},
geoserver_itineris_critical_zone = {
name = "geoserver-itineris-critical-zone",
description = "Geoserver itineris critical zone instance",
flavor = module.common_variables.flavor_list.m1_large,
networks = [data.terraform_remote_state.privnet_dns_router.outputs.main_private_network.name, module.common_variables.networks_list.shared_postgresql],
security_groups = [data.terraform_remote_state.privnet_dns_router.outputs.default_security_group_name, data.terraform_remote_state.privnet_dns_router.outputs.security_group_list.http_and_https_from_the_load_balancers],
server_groups_ids = [],
image_ref = module.common_variables.ubuntu_1804,
volume = {
name = "geoserver_itineris_critical_zone_data_volume",
size = "40",
device = "/dev/vdb",
}
},
geoserver_itineris_clima = {
name = "geoserver-itineris-clima",
description = "Geoserver itineris clima instance",
flavor = module.common_variables.flavor_list.m1_large,
networks = [data.terraform_remote_state.privnet_dns_router.outputs.main_private_network.name, module.common_variables.networks_list.shared_postgresql],
security_groups = [data.terraform_remote_state.privnet_dns_router.outputs.default_security_group_name, data.terraform_remote_state.privnet_dns_router.outputs.security_group_list.http_and_https_from_the_load_balancers],
server_groups_ids = [],
image_ref = module.common_variables.ubuntu_1804,
volume = {
name = "geoserver_itineris_clima_data_volume",
size = "40",
device = "/dev/vdb",
}
},
geoserver_itineris_ev = {
name = "geoserver-itineris-ev",
description = "Geoserver itineris ev instance",
flavor = module.common_variables.flavor_list.m1_large,
networks = [data.terraform_remote_state.privnet_dns_router.outputs.main_private_network.name, module.common_variables.networks_list.shared_postgresql],
security_groups = [data.terraform_remote_state.privnet_dns_router.outputs.default_security_group_name, data.terraform_remote_state.privnet_dns_router.outputs.security_group_list.http_and_https_from_the_load_balancers],
server_groups_ids = [],
image_ref = module.common_variables.ubuntu_1804,
volume = {
name = "geoserver_itineris_ev_data_volume",
size = "3000",
device = "/dev/vdb",
}
},
geoserver_itineris_downstream = {
name = "geoserver-itineris-downstream",
description = "Geoserver itineris downstream instance",
flavor = module.common_variables.flavor_list.m1_large,
networks = [data.terraform_remote_state.privnet_dns_router.outputs.main_private_network.name, module.common_variables.networks_list.shared_postgresql],
security_groups = [data.terraform_remote_state.privnet_dns_router.outputs.default_security_group_name, data.terraform_remote_state.privnet_dns_router.outputs.security_group_list.http_and_https_from_the_load_balancers],
server_groups_ids = [],
image_ref = module.common_variables.ubuntu_1804,
volume = {
name = "geoserver_itineris_downstream_data_volume",
size = "40",
device = "/dev/vdb",
}
}
# geoserver_recofi_rdb_pilot = {
# name = "geoserver-recofi-rdb-pilot",
# description = "Geoserver recofi-rdb-pilot instance",
# flavor = module.common_variables.flavor_list.m1_large,
# networks = [data.terraform_remote_state.privnet_dns_router.outputs.main_private_network.name, module.common_variables.networks_list.shared_postgresql],
# security_groups = [data.terraform_remote_state.privnet_dns_router.outputs.default_security_group_name, data.terraform_remote_state.privnet_dns_router.outputs.security_group_list.http_and_https_from_the_load_balancers],
# server_groups_ids = [],
# image_ref = module.common_variables.ubuntu_1804,
# volume = {
# name = "geoserver_recofi_rdb_pilot_data_volume",
# size = "40",
# device = "/dev/vdb",
# }
# }
}
}
@ -228,14 +270,6 @@ module "dns_records_create" {
type = "CNAME"
records = [local.cname_target]
},
geoserver-ariadne = {
zone_id = data.terraform_remote_state.privnet_dns_router.outputs.dns_zone_id
name = join(".", ["geoserver-ariadne", data.terraform_remote_state.privnet_dns_router.outputs.dns_zone.zone_name])
description = "Geoserver geoserver-ariadne"
ttl = 8600
type = "CNAME"
records = [local.cname_target]
},
geoserver-grsf = {
zone_id = data.terraform_remote_state.privnet_dns_router.outputs.dns_zone_id
name = join(".", ["geoserver-grsf", data.terraform_remote_state.privnet_dns_router.outputs.dns_zone.zone_name])
@ -260,14 +294,6 @@ module "dns_records_create" {
type = "CNAME"
records = [local.cname_target]
},
geoserver-tunaatlas = {
zone_id = data.terraform_remote_state.privnet_dns_router.outputs.dns_zone_id
name = join(".", ["geoserver-tunaatlas", data.terraform_remote_state.privnet_dns_router.outputs.dns_zone.zone_name])
description = "Geoserver geoserver-tunaatlas"
ttl = 8600
type = "CNAME"
records = [local.cname_target]
},
geoserver-wecafcfirms = {
zone_id = data.terraform_remote_state.privnet_dns_router.outputs.dns_zone_id
name = join(".", ["geoserver-wecafcfirms", data.terraform_remote_state.privnet_dns_router.outputs.dns_zone.zone_name])
@ -307,6 +333,46 @@ module "dns_records_create" {
ttl = 8600
type = "CNAME"
records = [local.cname_target]
},
geoserver-itineris-critical-zone = {
zone_id = data.terraform_remote_state.privnet_dns_router.outputs.dns_zone_id
name = join(".", ["geoserver-itineris-critical-zone", data.terraform_remote_state.privnet_dns_router.outputs.dns_zone.zone_name])
description = "Geoserver geoserver-itineris-critical-zone"
ttl = 8600
type = "CNAME"
records = [local.cname_target]
},
geoserver-itineris-clima = {
zone_id = data.terraform_remote_state.privnet_dns_router.outputs.dns_zone_id
name = join(".", ["geoserver-itineris-clima", data.terraform_remote_state.privnet_dns_router.outputs.dns_zone.zone_name])
description = "Geoserver geoserver-itineris-clima"
ttl = 8600
type = "CNAME"
records = [local.cname_target]
},
geoserver-itineris-ev = {
zone_id = data.terraform_remote_state.privnet_dns_router.outputs.dns_zone_id
name = join(".", ["geoserver-itineris-ev", data.terraform_remote_state.privnet_dns_router.outputs.dns_zone.zone_name])
description = "Geoserver geoserver-itineris-ev"
ttl = 8600
type = "CNAME"
records = [local.cname_target]
},
geoserver-itineris-downstream = {
zone_id = data.terraform_remote_state.privnet_dns_router.outputs.dns_zone_id
name = join(".", ["geoserver-itineris-downstream", data.terraform_remote_state.privnet_dns_router.outputs.dns_zone.zone_name])
description = "Geoserver geoserver-itineris-downstream"
ttl = 8600
type = "CNAME"
records = [local.cname_target]
}
# geoserver-recofi-rdb-pilot = {
# zone_id = data.terraform_remote_state.privnet_dns_router.outputs.dns_zone_id
# name = join(".", ["geoserver-recofi-rdb-pilot", data.terraform_remote_state.privnet_dns_router.outputs.dns_zone.zone_name])
# description = "Geoserver geoserver-recofi-rdb-pilot"
# ttl = 8600
# type = "CNAME"
# records = [local.cname_target]
# }
}
}

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,178 @@
# Define required providers
terraform {
required_version = ">= 0.14.0"
required_providers {
openstack = {
source = "terraform-provider-openstack/openstack"
version = ">= 1.54.0"
}
}
}
data "terraform_remote_state" "privnet_dns_router" {
backend = "local"
config = {
path = "../project-setup/terraform.tfstate"
}
}
data "terraform_remote_state" "infrastructure_setup" {
backend = "local"
config = {
path = "../basic-infrastructure/terraform.tfstate"
}
}
#
# Uses common_variables as module
#
module "common_variables" {
source = "../../modules/common_variables"
}
# Module used
module "ssh_settings" {
source = "../../modules/ssh-key-ref"
}
# Creating object bucket to store avatars
resource "openstack_objectstorage_container_v1" "harbor_registry" {
name = var.harbor_data.object_store_name
versioning = false
}
resource "openstack_networking_secgroup_v2" "harbor_access_list" {
name = "harbor_access_list"
delete_default_rules = "true"
description = "Allowed connections to the harbor server"
}
resource "openstack_networking_secgroup_rule_v2" "https_access_to_the_harbor_server" {
security_group_id = openstack_networking_secgroup_v2.harbor_access_list.id
description = "HTTPS access to the Harbor Server"
direction = "ingress"
ethertype = "IPv4"
protocol = "tcp"
port_range_min = 443
port_range_max = 443
remote_ip_prefix = "0.0.0.0/0"
}
resource "openstack_networking_secgroup_rule_v2" "http_access_to_the_harbor_server" {
security_group_id = openstack_networking_secgroup_v2.harbor_access_list.id
description = "HTTP access to the Harbor Server"
direction = "ingress"
ethertype = "IPv4"
protocol = "tcp"
port_range_min = 80
port_range_max = 80
remote_ip_prefix = "0.0.0.0/0"
}
# Block device
resource "openstack_blockstorage_volume_v3" "harbor_data_vol" {
name = var.harbor_data.vol_data_name
size = var.harbor_data.vol_data_size
}
resource "openstack_blockstorage_volume_v3" "harbor_docker_vol" {
name = var.harbor_data.vol_docker_name
size = var.harbor_data.vol_docker_size
}
#
# Port in the postgresql network
resource "openstack_networking_port_v2" "harbor_port_on_the_postgresql_net" {
name = "harbor_port_on_main_net"
network_id = data.terraform_remote_state.infrastructure_setup.outputs.shared_postgresql_network_data.id
admin_state_up = "true"
fixed_ip {
subnet_id = data.terraform_remote_state.infrastructure_setup.outputs.shared_postgresql_subnet_data.id
}
security_group_ids = [data.terraform_remote_state.infrastructure_setup.outputs.vm_access_to_the_shared_postgresql_server.id]
}
# Instance
resource "openstack_compute_instance_v2" "harbor_server" {
name = var.harbor_data.name
# availability_zone_hints = module.common_variables.availability_zone_no_gpu_name
flavor_name = var.harbor_data.flavor
key_pair = module.ssh_settings.ssh_key_name
security_groups = [data.terraform_remote_state.infrastructure_setup.outputs.default_security_group.name, openstack_networking_secgroup_v2.harbor_access_list.name]
block_device {
uuid = module.common_variables.ubuntu_2204.uuid
source_type = "image"
volume_size = 10
boot_index = 0
destination_type = "volume"
delete_on_termination = false
}
network {
name = data.terraform_remote_state.privnet_dns_router.outputs.main_private_network.name
}
user_data = file("${module.common_variables.ubuntu2204_data_file}")
# Do not replace the instance when the ssh key changes
lifecycle {
ignore_changes = [
# Ignore changes to tags, e.g. because a management agent
# updates these based on some ruleset managed elsewhere.
key_pair, user_data, network
]
}
}
resource "openstack_compute_volume_attach_v2" "harbor_data_attach_vol" {
instance_id = openstack_compute_instance_v2.harbor_server.id
volume_id = openstack_blockstorage_volume_v3.harbor_data_vol.id
device = var.harbor_data.vol_data_device
depends_on = [openstack_compute_instance_v2.harbor_server]
}
resource "openstack_compute_volume_attach_v2" "harbor_docker_attach_vol" {
instance_id = openstack_compute_instance_v2.harbor_server.id
volume_id = openstack_blockstorage_volume_v3.harbor_docker_vol.id
device = var.harbor_data.vol_docker_device
depends_on = [openstack_compute_instance_v2.harbor_server]
}
resource "openstack_networking_floatingip_v2" "harbor_ip" {
pool = data.terraform_remote_state.privnet_dns_router.outputs.floating_ip_pools.main_public_ip_pool
# The DNS association does not work because of a bug in the OpenStack API
description = "Harbor ip"
}
resource "openstack_compute_floatingip_associate_v2" "harbor_floatingip_associate" {
instance_id = openstack_compute_instance_v2.harbor_server.id
floating_ip = openstack_networking_floatingip_v2.harbor_ip.address
fixed_ip = openstack_compute_instance_v2.harbor_server.network[0].fixed_ip_v4
}
resource "openstack_compute_interface_attach_v2" "postgresql_network_to_harbor" {
instance_id = openstack_compute_instance_v2.harbor_server.id
port_id = openstack_networking_port_v2.harbor_port_on_the_postgresql_net.id
}
locals {
harbor_recordset_name = "harbor.${data.terraform_remote_state.privnet_dns_router.outputs.dns_zone.zone_name}"
}
resource "openstack_dns_recordset_v2" "harbor_recordset" {
zone_id = data.terraform_remote_state.privnet_dns_router.outputs.dns_zone_id
name = local.harbor_recordset_name
description = "Public IP address of the Harbor Server"
ttl = 8600
type = "A"
records = [openstack_networking_floatingip_v2.harbor_ip.address]
}
output "harbor_public_ip_address" {
value = openstack_networking_floatingip_v2.harbor_ip.address
}
output "harbor_hostname" {
value = openstack_dns_recordset_v2.harbor_recordset.name
}

View File

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

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,16 @@
#Harbor variables
variable "harbor_data" {
type = map(string)
default = {
name = "harbor"
flavor = "m1.xxl"
vol_data_name = "harbor-data"
vol_data_size = "20"
vol_data_device = "/dev/vdc"
vol_docker_name = "harbor-docker"
vol_docker_size = "2000"
vol_docker_device = "/dev/vdb"
object_store_name = "harbor-registry"
}
}

View File

@ -0,0 +1,144 @@
# Define required providers
terraform {
required_version = ">= 0.14.0"
required_providers {
openstack = {
source = "terraform-provider-openstack/openstack"
version = ">= 1.54.0"
}
}
}
data "terraform_remote_state" "privnet_dns_router" {
backend = "local"
config = {
path = "../project-setup/terraform.tfstate"
}
}
#
# Uses common_variables as module
#
module "common_variables" {
source = "../../modules/common_variables"
}
# Module used
module "ssh_settings" {
source = "../../modules/ssh-key-ref"
}
# Instances
resource "openstack_compute_instance_v2" "icproxy1_prod" {
name = "registry1"
availability_zone_hints = module.common_variables.availability_zone_no_gpu_name
flavor_name = "m1.large"
key_pair = module.ssh_settings.ssh_key_name
security_groups = [data.terraform_remote_state.privnet_dns_router.outputs.default_security_group_name, data.terraform_remote_state.privnet_dns_router.outputs.security_group_list.http_and_https_from_the_load_balancers]
block_device {
uuid = module.common_variables.ubuntu_1804.uuid
source_type = "image"
volume_size = 10
boot_index = 0
destination_type = "volume"
delete_on_termination = false
}
# Creates the networks according to input networks
dynamic "network" {
for_each = toset([data.terraform_remote_state.privnet_dns_router.outputs.main_private_network.name])
content {
name = network.value
}
}
# user_data script used
user_data = file("${module.common_variables.ubuntu_1804.user_data_file}")
# Do not replace the instance when the ssh key changes
lifecycle {
ignore_changes = [
# Ignore changes to tags, e.g. because a management agent
# updates these based on some ruleset managed elsewhere.
key_pair, user_data, network
]
}
}
resource "openstack_compute_instance_v2" "icproxy2_prod" {
name = "registry2"
availability_zone_hints = module.common_variables.availability_zone_no_gpu_name
flavor_name = "m1.large"
key_pair = module.ssh_settings.ssh_key_name
security_groups = [data.terraform_remote_state.privnet_dns_router.outputs.default_security_group_name, data.terraform_remote_state.privnet_dns_router.outputs.security_group_list.http_and_https_from_the_load_balancers]
block_device {
uuid = module.common_variables.ubuntu_1804.uuid
source_type = "image"
volume_size = 10
boot_index = 0
destination_type = "volume"
delete_on_termination = false
}
# Creates the networks according to input networks
dynamic "network" {
for_each = toset([data.terraform_remote_state.privnet_dns_router.outputs.main_private_network.name])
content {
name = network.value
}
}
# user_data script used
user_data = file("${module.common_variables.ubuntu_1804.user_data_file}")
# Do not replace the instance when the ssh key changes
lifecycle {
ignore_changes = [
# Ignore changes to tags, e.g. because a management agent
# updates these based on some ruleset managed elsewhere.
key_pair, user_data, network
]
}
}
locals {
cname_target = "main-lb.${data.terraform_remote_state.privnet_dns_router.outputs.dns_zone.zone_name}"
}
#
# Add DNS record/s
#
module "dns_records_create" {
source = "../../modules/dns_resources"
dns_resources_map = {
icproxy1-prod = {
zone_id = data.terraform_remote_state.privnet_dns_router.outputs.dns_zone_id
name = join(".", ["registry1", data.terraform_remote_state.privnet_dns_router.outputs.dns_zone.zone_name])
description = "ICProxy 1"
ttl = 8600
type = "CNAME"
records = [local.cname_target]
},
icproxy2-prod = {
zone_id = data.terraform_remote_state.privnet_dns_router.outputs.dns_zone_id
name = join(".", ["registry2", data.terraform_remote_state.privnet_dns_router.outputs.dns_zone.zone_name])
description = "ICProxy 2"
ttl = 8600
type = "CNAME"
records = [local.cname_target]
},
icproxy-prod = {
zone_id = data.terraform_remote_state.privnet_dns_router.outputs.dns_zone_id
name = join(".", ["registry", data.terraform_remote_state.privnet_dns_router.outputs.dns_zone.zone_name])
description = "ICProxy registry"
ttl = 8600
type = "CNAME"
records = [local.cname_target]
}
}
}

View File

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

View File

@ -0,0 +1,637 @@
{
"version": 4,
"terraform_version": "1.6.4",
"serial": 22,
"lineage": "f498a55a-94e0-5af6-6588-65158d0a22e7",
"outputs": {},
"resources": [
{
"mode": "data",
"type": "terraform_remote_state",
"name": "privnet_dns_router",
"provider": "provider[\"terraform.io/builtin/terraform\"]",
"instances": [
{
"schema_version": 0,
"attributes": {
"backend": "local",
"config": {
"value": {
"path": "../project-setup/terraform.tfstate"
},
"type": [
"object",
{
"path": "string"
}
]
},
"defaults": null,
"outputs": {
"value": {
"almalinux_9": {
"name": "AlmaLinux-9.0-20220718",
"uuid": "541650fc-dd19-4f38-bb1d-7333ed9dd688"
},
"availability_zone_no_gpu_name": "cnr-isti-nova-a",
"availability_zone_with_gpu_name": "cnr-isti-nova-gpu-a",
"availability_zones_names": {
"availability_zone_no_gpu": "cnr-isti-nova-a",
"availability_zone_with_gpu": "cnr-isti-nova-gpu-a"
},
"basic_services_ip": {
"ca": "10.1.40.4",
"ca_cidr": "10.1.40.4/32",
"haproxy_l7_1": "10.1.40.11",
"haproxy_l7_1_cidr": "10.1.40.11/32",
"haproxy_l7_2": "10.1.40.12",
"haproxy_l7_2_cidr": "10.1.40.12/32",
"octavia_main": "10.1.40.20",
"octavia_main_cidr": "10.1.40.20/32",
"prometheus": "10.1.40.10",
"prometheus_cidr": "10.1.40.10/32",
"ssh_jump": "10.1.40.5",
"ssh_jump_cidr": "10.1.40.5/32"
},
"centos_7": {
"name": "CentOS-7",
"uuid": "f0187a99-64f6-462a-ab5f-ef52fe62f2ca"
},
"default_security_group_name": "default_for_all",
"dns_zone": {
"description": "DNS primary zone for the d4s-production-cloud project",
"email": "postmaster@isti.cnr.it",
"ttl": "8600",
"zone_name": "cloud.d4science.org."
},
"dns_zone_id": "74135b34-1a9c-4c01-8cf0-22450a5660c4",
"el7_data_file": "../../openstack_vm_data_scripts/el7.sh",
"external_gateway_ip": [
{
"ip_address": "146.48.31.57",
"subnet_id": "57f87509-4016-46fb-b8c3-25fca7f72ccb"
}
],
"external_network": {
"id": "1d2ff137-6ff7-4017-be2b-0d6c4af2353b",
"name": "external-network"
},
"external_network_id": "1d2ff137-6ff7-4017-be2b-0d6c4af2353b",
"external_router": {
"description": "D4Science Production main router",
"id": "cc26064a-bb08-4c0b-929f-d0cb39f934a3",
"name": "d4s-production-cloud-external-router"
},
"flavor_list": {
"c1_large": "c1.large",
"c1_medium": "c1.medium",
"c1_small": "c1.small",
"c2_large": "c2.large",
"m1_large": "m1.large",
"m1_medium": "m1.medium",
"m1_xlarge": "m1.xlarge",
"m1_xxl": "m1.xxl",
"m2_large": "m2.large",
"m2_medium": "m2.medium",
"m2_small": "m2.small",
"m3_large": "m3.large"
},
"floating_ip_pools": {
"main_public_ip_pool": "external-network"
},
"haproxy_l7_data": {
"flavor": "m1.medium",
"haproxy_1": "haproxy-l7-1",
"haproxy_2": "haproxy-l7-2",
"name": "main-haproxy-l7",
"vm_count": "2"
},
"internal_ca_data": {
"flavor": "m1.small",
"name": "ca"
},
"main_haproxy_l7_ip": [
"10.1.40.11",
"10.1.40.12"
],
"main_private_network": {
"description": "D4Science Production private network (use this as the main network)",
"name": "d4s-production-cloud-main"
},
"main_private_network_id": "020df98d-ae72-452a-b376-3b6dc289acac",
"main_private_subnet": {
"allocation_end": "10.1.47.254",
"allocation_start": "10.1.41.100",
"cidr": "10.1.40.0/21",
"description": "D4Science Production main private subnet",
"gateway_ip": "10.1.40.1",
"name": "d4s-production-cloud-main-subnet"
},
"main_region": "isti_area_pi_1",
"main_subnet_network_id": "5d7b83ad-e058-4a3a-bfd8-d20ba6d42e1a",
"mtu_size": 8942,
"networks_list": {
"cassandra": "cassandra-net",
"orientdb": "orientdb-net",
"orientdb_se": "orientdb-se-net",
"shared_postgresql": "postgresql-srv-net",
"swarm": "swarm-nfs-net",
"timescaledb": "timescaledb-net"
},
"networks_with_d4s_services": {
"garr_ct1_net": "90.147.166.0/23",
"garr_na_net": "90.147.152.0/24",
"garr_pa1_net": "90.147.188.0/23",
"infrascience_net": "146.48.122.0/23",
"isti_net": "146.48.80.0/21",
"s2i2s_net": "146.48.28.0/22"
},
"nfs_share_no_ingress_secgroup_id": "167e4897-f776-4cbd-986f-77313aa68af2",
"octavia_information": {
"main_lb_description": "Main L4 load balancer for the D4Science production",
"main_lb_hostname": "main-lb",
"main_lb_name": "d4s-production-cloud-l4-load-balancer",
"octavia_flavor": "octavia_amphora-mvcpu-ha",
"octavia_flavor_id": "394988b5-6603-4a1e-a939-8e177c6681c7",
"swarm_lb_name": "d4s-production-cloud-l4-swarm-load-balancer"
},
"os_project_data": {
"id": "1b45adf388934758b56d0dfdb4bfacf3"
},
"policy_list": {
"affinity": "affinity",
"anti_affinity": "anti-affinity",
"soft_affinity": "soft-affinity",
"soft_anti_affinity": "soft-anti-affinity"
},
"prometheus_server_data": {
"flavor": "m1.medium",
"name": "prometheus",
"public_grafana_server_cidr": "146.48.28.103/32",
"vol_data_device": "/dev/vdb",
"vol_data_name": "prometheus-data",
"vol_data_size": "100"
},
"resolvers_ip": [
"146.48.29.97",
"146.48.29.98",
"146.48.29.99"
],
"resource_registry_addresses": {},
"security_group_list": {
"acaland": "acaland's dev machine",
"access_to_orientdb": "access_to_orientdb",
"access_to_orientdb_se": "access_to_orientdb_se",
"access_to_the_timescaledb_service": "access_to_the_timescaledb_service",
"cassandra": "Cassandra",
"dataminer-publish": "dataminer-publish",
"debugging_from_jump_node": "debugging_from_jump_node",
"default": "default",
"docker_swarm": "Docker Swarm",
"docker_swarm_NFS": "Docker Swarm NFS",
"haproxy": "traffic_from_main_lb_to_haproxy_l7",
"http_and_https_from_the_load_balancers": "traffic_from_the_main_load_balancers",
"limited_HTTPS_access": "restricted_web_service",
"limited_SSH_access": "Limited SSH access",
"mongo": "mongo",
"nfs_share_no_ingress": "nfs_share_no_ingress",
"orientdb_internal_docker_traffic": "orientdb_internal_docker_traffic",
"postgreSQL": "PostgreSQL service",
"public_HTTPS": "Public HTTPS"
},
"shared_postgresql_server_data": {
"allocation_pool_end": "192.168.3.254",
"allocation_pool_start": "192.168.0.100",
"flavor": "m1.medium",
"name": "shared-postgresql-server",
"network_cidr": "192.168.0.0/22",
"network_description": "Network used to communicate with the shared postgresql service",
"network_name": "postgresql-srv-net",
"server_cidr": "192.168.0.5/22",
"server_ip": "192.168.0.5",
"vol_data_device": "/dev/vdb",
"vol_data_name": "shared-postgresql-data",
"vol_data_size": "100"
},
"smartexecutor_addresses": {},
"ssh_jump_proxy": {
"flavor": "m2.small",
"name": "ssh-jump-proxy"
},
"ssh_sources": {
"d4s_vpn_1_cidr": "146.48.122.27/32",
"d4s_vpn_2_cidr": "146.48.122.49/32",
"infrascience_net_cidr": "146.48.122.0/23",
"s2i2s_vpn_1_cidr": "146.48.28.10/32",
"s2i2s_vpn_2_cidr": "146.48.28.11/32",
"shell_d4s_cidr": "146.48.122.95/32"
},
"storage_nfs_network_id": "5f4023cc-4016-404c-94e5-86220095fbaf",
"storage_nfs_subnet_id": "6ff0f9e8-0e74-4cc3-a268-7ed4af435696",
"ubuntu1804_data_file": "../../openstack_vm_data_scripts/ubuntu1804.sh",
"ubuntu2204_data_file": "../../openstack_vm_data_scripts/ubuntu2204.sh",
"ubuntu_1804": {
"name": "Ubuntu-Bionic-18.04",
"user_data_file": "../../openstack_vm_data_scripts/ubuntu1804.sh",
"uuid": "7ed6a2cd-2b07-482e-8ce4-f018dff16c89"
},
"ubuntu_2204": {
"name": "Ubuntu-Jammy-22.04",
"user_data_file": "../../openstack_vm_data_scripts/ubuntu2204.sh",
"uuid": "54768889-8556-4be4-a2eb-82a4d9b34627"
}
},
"type": [
"object",
{
"almalinux_9": [
"map",
"string"
],
"availability_zone_no_gpu_name": "string",
"availability_zone_with_gpu_name": "string",
"availability_zones_names": [
"map",
"string"
],
"basic_services_ip": [
"map",
"string"
],
"centos_7": [
"map",
"string"
],
"default_security_group_name": "string",
"dns_zone": [
"map",
"string"
],
"dns_zone_id": "string",
"el7_data_file": "string",
"external_gateway_ip": [
"list",
[
"object",
{
"ip_address": "string",
"subnet_id": "string"
}
]
],
"external_network": [
"map",
"string"
],
"external_network_id": "string",
"external_router": [
"map",
"string"
],
"flavor_list": [
"map",
"string"
],
"floating_ip_pools": [
"map",
"string"
],
"haproxy_l7_data": [
"map",
"string"
],
"internal_ca_data": [
"map",
"string"
],
"main_haproxy_l7_ip": [
"list",
"string"
],
"main_private_network": [
"map",
"string"
],
"main_private_network_id": "string",
"main_private_subnet": [
"map",
"string"
],
"main_region": "string",
"main_subnet_network_id": "string",
"mtu_size": "number",
"networks_list": [
"map",
"string"
],
"networks_with_d4s_services": [
"map",
"string"
],
"nfs_share_no_ingress_secgroup_id": "string",
"octavia_information": [
"map",
"string"
],
"os_project_data": [
"map",
"string"
],
"policy_list": [
"map",
"string"
],
"prometheus_server_data": [
"map",
"string"
],
"resolvers_ip": [
"list",
"string"
],
"resource_registry_addresses": [
"map",
"string"
],
"security_group_list": [
"map",
"string"
],
"shared_postgresql_server_data": [
"map",
"string"
],
"smartexecutor_addresses": [
"map",
"string"
],
"ssh_jump_proxy": [
"map",
"string"
],
"ssh_sources": [
"map",
"string"
],
"storage_nfs_network_id": "string",
"storage_nfs_subnet_id": "string",
"ubuntu1804_data_file": "string",
"ubuntu2204_data_file": "string",
"ubuntu_1804": [
"map",
"string"
],
"ubuntu_2204": [
"map",
"string"
]
}
]
},
"workspace": null
},
"sensitive_attributes": []
}
]
},
{
"mode": "managed",
"type": "openstack_compute_instance_v2",
"name": "icproxy1_prod",
"provider": "provider[\"registry.terraform.io/terraform-provider-openstack/openstack\"]",
"instances": [
{
"schema_version": 0,
"attributes": {
"access_ip_v4": "10.1.44.3",
"access_ip_v6": "",
"admin_pass": null,
"all_metadata": {},
"all_tags": [],
"availability_zone": "cnr-isti-nova-a",
"availability_zone_hints": "cnr-isti-nova-a",
"block_device": [
{
"boot_index": 0,
"delete_on_termination": false,
"destination_type": "volume",
"device_type": "",
"disk_bus": "",
"guest_format": "",
"multiattach": false,
"source_type": "image",
"uuid": "7ed6a2cd-2b07-482e-8ce4-f018dff16c89",
"volume_size": 10,
"volume_type": ""
}
],
"config_drive": null,
"created": "2024-07-09 09:15:45 +0000 UTC",
"flavor_id": "9",
"flavor_name": "m1.large",
"force_delete": false,
"id": "dd71169f-2c22-422d-bb39-fd6068209d38",
"image_id": "Attempt to boot from volume - no image supplied",
"image_name": null,
"key_pair": "Giancarlo Panichi",
"metadata": null,
"name": "registry1",
"network": [
{
"access_network": false,
"fixed_ip_v4": "10.1.44.3",
"fixed_ip_v6": "",
"mac": "fa:16:3e:a9:c9:df",
"name": "d4s-production-cloud-main",
"port": "",
"uuid": "020df98d-ae72-452a-b376-3b6dc289acac"
}
],
"network_mode": null,
"personality": [],
"power_state": "active",
"region": "isti_area_pi_1",
"scheduler_hints": [],
"security_groups": [
"default_for_all",
"traffic_from_the_main_load_balancers"
],
"stop_before_destroy": false,
"tags": [],
"timeouts": null,
"updated": "2024-07-09 09:16:31 +0000 UTC",
"user_data": "47d4769e61324c305c4b70ed6673de4fad84150d",
"vendor_options": []
},
"sensitive_attributes": [],
"private": "eyJlMmJmYjczMC1lY2FhLTExZTYtOGY4OC0zNDM2M2JjN2M0YzAiOnsiY3JlYXRlIjoxODAwMDAwMDAwMDAwLCJkZWxldGUiOjE4MDAwMDAwMDAwMDAsInVwZGF0ZSI6MTgwMDAwMDAwMDAwMH19",
"dependencies": [
"data.terraform_remote_state.privnet_dns_router"
]
}
]
},
{
"mode": "managed",
"type": "openstack_compute_instance_v2",
"name": "icproxy2_prod",
"provider": "provider[\"registry.terraform.io/terraform-provider-openstack/openstack\"]",
"instances": [
{
"schema_version": 0,
"attributes": {
"access_ip_v4": "10.1.45.81",
"access_ip_v6": "",
"admin_pass": null,
"all_metadata": {},
"all_tags": [],
"availability_zone": "cnr-isti-nova-a",
"availability_zone_hints": "cnr-isti-nova-a",
"block_device": [
{
"boot_index": 0,
"delete_on_termination": false,
"destination_type": "volume",
"device_type": "",
"disk_bus": "",
"guest_format": "",
"multiattach": false,
"source_type": "image",
"uuid": "7ed6a2cd-2b07-482e-8ce4-f018dff16c89",
"volume_size": 10,
"volume_type": ""
}
],
"config_drive": null,
"created": "2024-07-09 09:15:45 +0000 UTC",
"flavor_id": "9",
"flavor_name": "m1.large",
"force_delete": false,
"id": "635a95a1-e0c2-465c-a574-cab3ef583c5e",
"image_id": "Attempt to boot from volume - no image supplied",
"image_name": null,
"key_pair": "Giancarlo Panichi",
"metadata": null,
"name": "registry2",
"network": [
{
"access_network": false,
"fixed_ip_v4": "10.1.45.81",
"fixed_ip_v6": "",
"mac": "fa:16:3e:69:e3:a3",
"name": "d4s-production-cloud-main",
"port": "",
"uuid": "020df98d-ae72-452a-b376-3b6dc289acac"
}
],
"network_mode": null,
"personality": [],
"power_state": "active",
"region": "isti_area_pi_1",
"scheduler_hints": [],
"security_groups": [
"default_for_all",
"traffic_from_the_main_load_balancers"
],
"stop_before_destroy": false,
"tags": [],
"timeouts": null,
"updated": "2024-07-09 09:16:50 +0000 UTC",
"user_data": "47d4769e61324c305c4b70ed6673de4fad84150d",
"vendor_options": []
},
"sensitive_attributes": [],
"private": "eyJlMmJmYjczMC1lY2FhLTExZTYtOGY4OC0zNDM2M2JjN2M0YzAiOnsiY3JlYXRlIjoxODAwMDAwMDAwMDAwLCJkZWxldGUiOjE4MDAwMDAwMDAwMDAsInVwZGF0ZSI6MTgwMDAwMDAwMDAwMH19",
"dependencies": [
"data.terraform_remote_state.privnet_dns_router"
]
}
]
},
{
"module": "module.dns_records_create",
"mode": "managed",
"type": "openstack_dns_recordset_v2",
"name": "add_dns_recordset",
"provider": "provider[\"registry.terraform.io/terraform-provider-openstack/openstack\"]",
"instances": [
{
"index_key": "icproxy-prod",
"schema_version": 0,
"attributes": {
"description": "ICProxy registry",
"disable_status_check": false,
"id": "74135b34-1a9c-4c01-8cf0-22450a5660c4/fdd3a097-3279-4c4a-9d26-418bd5774bf3",
"name": "registry.cloud.d4science.org.",
"project_id": "1b45adf388934758b56d0dfdb4bfacf3",
"records": [
"main-lb.cloud.d4science.org."
],
"region": "isti_area_pi_1",
"timeouts": null,
"ttl": 8600,
"type": "CNAME",
"value_specs": null,
"zone_id": "74135b34-1a9c-4c01-8cf0-22450a5660c4"
},
"sensitive_attributes": [],
"private": "eyJlMmJmYjczMC1lY2FhLTExZTYtOGY4OC0zNDM2M2JjN2M0YzAiOnsiY3JlYXRlIjo2MDAwMDAwMDAwMDAsImRlbGV0ZSI6NjAwMDAwMDAwMDAwLCJ1cGRhdGUiOjYwMDAwMDAwMDAwMH19",
"dependencies": [
"data.terraform_remote_state.privnet_dns_router"
]
},
{
"index_key": "icproxy1-prod",
"schema_version": 0,
"attributes": {
"description": "ICProxy 1",
"disable_status_check": false,
"id": "74135b34-1a9c-4c01-8cf0-22450a5660c4/a853af7f-edb4-46d8-85be-c52701af07b6",
"name": "registry1.cloud.d4science.org.",
"project_id": "1b45adf388934758b56d0dfdb4bfacf3",
"records": [
"main-lb.cloud.d4science.org."
],
"region": "isti_area_pi_1",
"timeouts": null,
"ttl": 8600,
"type": "CNAME",
"value_specs": null,
"zone_id": "74135b34-1a9c-4c01-8cf0-22450a5660c4"
},
"sensitive_attributes": [],
"private": "eyJlMmJmYjczMC1lY2FhLTExZTYtOGY4OC0zNDM2M2JjN2M0YzAiOnsiY3JlYXRlIjo2MDAwMDAwMDAwMDAsImRlbGV0ZSI6NjAwMDAwMDAwMDAwLCJ1cGRhdGUiOjYwMDAwMDAwMDAwMH19",
"dependencies": [
"data.terraform_remote_state.privnet_dns_router"
]
},
{
"index_key": "icproxy2-prod",
"schema_version": 0,
"attributes": {
"description": "ICProxy 2",
"disable_status_check": false,
"id": "74135b34-1a9c-4c01-8cf0-22450a5660c4/af98500e-cd61-48fe-98a4-099061f7eeb9",
"name": "registry2.cloud.d4science.org.",
"project_id": "1b45adf388934758b56d0dfdb4bfacf3",
"records": [
"main-lb.cloud.d4science.org."
],
"region": "isti_area_pi_1",
"timeouts": null,
"ttl": 8600,
"type": "CNAME",
"value_specs": null,
"zone_id": "74135b34-1a9c-4c01-8cf0-22450a5660c4"
},
"sensitive_attributes": [],
"private": "eyJlMmJmYjczMC1lY2FhLTExZTYtOGY4OC0zNDM2M2JjN2M0YzAiOnsiY3JlYXRlIjo2MDAwMDAwMDAwMDAsImRlbGV0ZSI6NjAwMDAwMDAwMDAwLCJ1cGRhdGUiOjYwMDAwMDAwMDAwMH19",
"dependencies": [
"data.terraform_remote_state.privnet_dns_router"
]
}
]
}
],
"check_results": null
}

View File

@ -0,0 +1,48 @@
# 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"
}
}
#
# Uses common_variables as module
#
module "common_variables" {
source = "../../modules/common_variables"
}
module "keycloak" {
source = "../../modules/keycloak"
keycloak_data = {
affinity_policy = "soft-anti-affinity"
srv_name = "keycloak-prod"
vm_count = 2
vm_flavor = "m1.medium"
boot_vol_size = 10
share_description = "NFS share for the keycloak production static data"
share_name = "keycloak_production_nfs_share"
}
keycloak_recordsets = {
keycloak_main_record = {
name = join(".", ["accounts", data.terraform_remote_state.privnet_dns_router.outputs.dns_zone.zone_name]),
description = "Keycloak production endpoint"
}
}
keycloak_object_store = "keycloak-data-prod"
}

View File

@ -0,0 +1,21 @@
output "keycloak_data" {
value = module.keycloak.keycloak_data
}
output "keycloak_recordsets" {
value = module.keycloak.keycloak_recordsets
}
output "keycloak_nfs_port_data" {
value = module.keycloak.nfs_port_data
}
output "keycloak_nfs_volume_data" {
value = module.keycloak.keycloak_nfs_volume_data
}
output "keycloak_nfs_volume_acls" {
value = module.keycloak.keycloak_nfs_volume_acls
sensitive = true
}

View File

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

File diff suppressed because it is too large Load Diff

View File

@ -23,7 +23,7 @@ module "liferay" {
affinity_policy = "anti-affinity"
srv_name = "lr62"
vm_count = 2
vm_flavor = "m1.large"
vm_flavor = "m2.medium"
boot_vol_size = 30
share_description = "NFS share for the liferay production static data"
share_name = "liferay_production_nfs_share"
@ -35,6 +35,10 @@ module "liferay" {
liferay_main_record = {
name = join(".", ["infra-gateway", data.terraform_remote_state.privnet_dns_router.outputs.dns_zone.zone_name]),
description = "Liferay Production"
},
liferay_test_endpoint = {
name = join(".", ["osportal", data.terraform_remote_state.privnet_dns_router.outputs.dns_zone.zone_name]),
description = "Liferay Production endpoint used to test the functionalities"
}
}
}

View File

@ -1,7 +1,7 @@
{
"version": 4,
"terraform_version": "1.6.6",
"serial": 40,
"terraform_version": "1.8.5",
"serial": 48,
"lineage": "1ad5c30b-f952-53b5-f9cd-fe7cb4117b8b",
"outputs": {
"liferay_data": {
@ -12,7 +12,7 @@
"share_name": "liferay_production_nfs_share",
"srv_name": "lr62",
"vm_count": "2",
"vm_flavor": "m1.large"
"vm_flavor": "m2.medium"
},
"type": [
"map",
@ -190,7 +190,7 @@
"share_proto": "NFS",
"share_server_id": "",
"share_type": "default",
"size": 5,
"size": 30,
"snapshot_id": "",
"timeouts": null
},
@ -247,6 +247,10 @@
"liferay_main_record": {
"description": "Liferay Production",
"name": "infra-gateway.cloud.d4science.org."
},
"liferay_test_endpoint": {
"description": "Liferay Production endpoint used to test the functionalities",
"name": "osportal.cloud.d4science.org."
}
},
"type": [
@ -1813,8 +1817,8 @@
],
"config_drive": null,
"created": "2024-03-12 14:16:57 +0000 UTC",
"flavor_id": "9",
"flavor_name": "m1.large",
"flavor_id": "15",
"flavor_name": "m2.medium",
"floating_ip": null,
"force_delete": false,
"id": "ea9349dd-09fe-4559-9ea2-d7ea421b40e4",
@ -1870,12 +1874,19 @@
"stop_before_destroy": false,
"tags": [],
"timeouts": null,
"updated": "2024-03-12 14:17:52 +0000 UTC",
"updated": "2024-06-19 08:51:13 +0000 UTC",
"user_data": "",
"vendor_options": [],
"volume": []
},
"sensitive_attributes": [],
"sensitive_attributes": [
[
{
"type": "get_attr",
"value": "admin_pass"
}
]
],
"private": "eyJlMmJmYjczMC1lY2FhLTExZTYtOGY4OC0zNDM2M2JjN2M0YzAiOnsiY3JlYXRlIjoxODAwMDAwMDAwMDAwLCJkZWxldGUiOjE4MDAwMDAwMDAwMDAsInVwZGF0ZSI6MTgwMDAwMDAwMDAwMH19",
"dependencies": [
"module.liferay.data.terraform_remote_state.privnet_dns_router",
@ -1911,8 +1922,8 @@
],
"config_drive": null,
"created": "2024-03-12 14:16:57 +0000 UTC",
"flavor_id": "9",
"flavor_name": "m1.large",
"flavor_id": "15",
"flavor_name": "m2.medium",
"floating_ip": null,
"force_delete": false,
"id": "b86618ec-3c38-4694-a198-fb70ccf98bb3",
@ -1968,12 +1979,19 @@
"stop_before_destroy": false,
"tags": [],
"timeouts": null,
"updated": "2024-03-12 14:17:54 +0000 UTC",
"updated": "2024-06-13 15:23:12 +0000 UTC",
"user_data": "",
"vendor_options": [],
"volume": []
},
"sensitive_attributes": [],
"sensitive_attributes": [
[
{
"type": "get_attr",
"value": "admin_pass"
}
]
],
"private": "eyJlMmJmYjczMC1lY2FhLTExZTYtOGY4OC0zNDM2M2JjN2M0YzAiOnsiY3JlYXRlIjoxODAwMDAwMDAwMDAwLCJkZWxldGUiOjE4MDAwMDAwMDAwMDAsInVwZGF0ZSI6MTgwMDAwMDAwMDAwMH19",
"dependencies": [
"module.liferay.data.terraform_remote_state.privnet_dns_router",
@ -2155,6 +2173,32 @@
"data.terraform_remote_state.privnet_dns_router",
"module.liferay.data.terraform_remote_state.privnet_dns_router"
]
},
{
"index_key": "liferay_test_endpoint",
"schema_version": 0,
"attributes": {
"description": "Liferay Production endpoint used to test the functionalities",
"disable_status_check": false,
"id": "74135b34-1a9c-4c01-8cf0-22450a5660c4/8a52e377-3b77-4f1b-8399-7e95e4751bd7",
"name": "osportal.cloud.d4science.org.",
"project_id": "1b45adf388934758b56d0dfdb4bfacf3",
"records": [
"main-lb.cloud.d4science.org."
],
"region": "isti_area_pi_1",
"timeouts": null,
"ttl": 8600,
"type": "CNAME",
"value_specs": null,
"zone_id": "74135b34-1a9c-4c01-8cf0-22450a5660c4"
},
"sensitive_attributes": [],
"private": "eyJlMmJmYjczMC1lY2FhLTExZTYtOGY4OC0zNDM2M2JjN2M0YzAiOnsiY3JlYXRlIjo2MDAwMDAwMDAwMDAsImRlbGV0ZSI6NjAwMDAwMDAwMDAwLCJ1cGRhdGUiOjYwMDAwMDAwMDAwMH19",
"dependencies": [
"data.terraform_remote_state.privnet_dns_router",
"module.liferay.data.terraform_remote_state.privnet_dns_router"
]
}
]
},
@ -2170,8 +2214,7 @@
"schema_version": 0,
"attributes": {
"all_security_group_ids": [
"167e4897-f776-4cbd-986f-77313aa68af2",
"d41938a9-a581-4974-b213-4aa50498344c"
"167e4897-f776-4cbd-986f-77313aa68af2"
],
"enforce": false,
"id": "a397f707-21ee-4a8e-bd66-cd6bf2641cd3",
@ -2193,8 +2236,7 @@
"schema_version": 0,
"attributes": {
"all_security_group_ids": [
"167e4897-f776-4cbd-986f-77313aa68af2",
"d41938a9-a581-4974-b213-4aa50498344c"
"167e4897-f776-4cbd-986f-77313aa68af2"
],
"enforce": false,
"id": "774c09ab-19a3-4409-a26f-323036e3431a",
@ -2213,6 +2255,61 @@
}
]
},
{
"module": "module.liferay",
"mode": "managed",
"type": "openstack_networking_port_secgroup_associate_v2",
"name": "liferay_timescaledb_port_secgroup",
"provider": "provider[\"registry.terraform.io/terraform-provider-openstack/openstack\"]",
"instances": [
{
"index_key": 0,
"schema_version": 0,
"attributes": {
"all_security_group_ids": [
"167e4897-f776-4cbd-986f-77313aa68af2"
],
"enforce": false,
"id": "a5aca9d1-2f25-4aaa-8603-40b66145742b",
"port_id": "a5aca9d1-2f25-4aaa-8603-40b66145742b",
"region": "isti_area_pi_1",
"security_group_ids": [
"167e4897-f776-4cbd-986f-77313aa68af2"
]
},
"sensitive_attributes": [],
"private": "bnVsbA==",
"dependencies": [
"module.liferay.data.terraform_remote_state.privnet_dns_router",
"module.liferay.data.terraform_remote_state.timescaledb",
"module.liferay.openstack_networking_port_v2.liferay_timescaledb_port"
]
},
{
"index_key": 1,
"schema_version": 0,
"attributes": {
"all_security_group_ids": [
"167e4897-f776-4cbd-986f-77313aa68af2"
],
"enforce": false,
"id": "42a21092-180d-4fee-abdb-c482bccfc83a",
"port_id": "42a21092-180d-4fee-abdb-c482bccfc83a",
"region": "isti_area_pi_1",
"security_group_ids": [
"167e4897-f776-4cbd-986f-77313aa68af2"
]
},
"sensitive_attributes": [],
"private": "bnVsbA==",
"dependencies": [
"module.liferay.data.terraform_remote_state.privnet_dns_router",
"module.liferay.data.terraform_remote_state.timescaledb",
"module.liferay.openstack_networking_port_v2.liferay_timescaledb_port"
]
}
]
},
{
"module": "module.liferay",
"mode": "managed",
@ -2229,8 +2326,7 @@
"172.17.2.239"
],
"all_security_group_ids": [
"167e4897-f776-4cbd-986f-77313aa68af2",
"d41938a9-a581-4974-b213-4aa50498344c"
"167e4897-f776-4cbd-986f-77313aa68af2"
],
"all_tags": [],
"allowed_address_pairs": [],
@ -2291,8 +2387,7 @@
"172.17.0.68"
],
"all_security_group_ids": [
"167e4897-f776-4cbd-986f-77313aa68af2",
"d41938a9-a581-4974-b213-4aa50498344c"
"167e4897-f776-4cbd-986f-77313aa68af2"
],
"all_tags": [],
"allowed_address_pairs": [],
@ -2362,7 +2457,7 @@
"192.168.11.203"
],
"all_security_group_ids": [
"d41938a9-a581-4974-b213-4aa50498344c"
"167e4897-f776-4cbd-986f-77313aa68af2"
],
"all_tags": [],
"allowed_address_pairs": [],
@ -2423,7 +2518,7 @@
"192.168.11.141"
],
"all_security_group_ids": [
"d41938a9-a581-4974-b213-4aa50498344c"
"167e4897-f776-4cbd-986f-77313aa68af2"
],
"all_tags": [],
"allowed_address_pairs": [],
@ -2701,7 +2796,14 @@
"state": "active",
"timeouts": null
},
"sensitive_attributes": [],
"sensitive_attributes": [
[
{
"type": "get_attr",
"value": "access_key"
}
]
],
"private": "eyJlMmJmYjczMC1lY2FhLTExZTYtOGY4OC0zNDM2M2JjN2M0YzAiOnsiY3JlYXRlIjo2MDAwMDAwMDAwMDAsImRlbGV0ZSI6NjAwMDAwMDAwMDAwLCJ1cGRhdGUiOjYwMDAwMDAwMDAwMH19",
"dependencies": [
"module.liferay.data.terraform_remote_state.privnet_dns_router",
@ -2727,7 +2829,14 @@
"state": "active",
"timeouts": null
},
"sensitive_attributes": [],
"sensitive_attributes": [
[
{
"type": "get_attr",
"value": "access_key"
}
]
],
"private": "eyJlMmJmYjczMC1lY2FhLTExZTYtOGY4OC0zNDM2M2JjN2M0YzAiOnsiY3JlYXRlIjo2MDAwMDAwMDAwMDAsImRlbGV0ZSI6NjAwMDAwMDAwMDAwLCJ1cGRhdGUiOjYwMDAwMDAwMDAwMH19",
"dependencies": [
"module.liferay.data.terraform_remote_state.privnet_dns_router",
@ -2773,7 +2882,7 @@
"share_proto": "NFS",
"share_server_id": "",
"share_type": "default",
"size": 5,
"size": 30,
"snapshot_id": "",
"timeouts": null
},

View File

@ -0,0 +1,287 @@
# NFS shares required by Bluecloud beacon service
# Create a NFS share for emodnet_chemistry
resource "openstack_sharedfilesystem_share_v2" "beacon_emodnet_chemistry" {
name = "beacon_emodnet_chemistry"
description = "NFS share for the Bluecloud beacon_emodnet_chemistry data volume"
share_proto = "NFS"
size = 20
}
# Allow access to the NFS share to Swarm Managers and Workers
resource "openstack_sharedfilesystem_share_access_v2" "beacon_emodnet_chemistry_mgr_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.beacon_emodnet_chemistry.id
access_type = "ip"
access_to = each.key
access_level = "rw"
}
resource "openstack_sharedfilesystem_share_access_v2" "beacon_emodnet_chemistry_workers_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.beacon_emodnet_chemistry.id
access_type = "ip"
access_to = each.key
access_level = "rw"
}
output "beacon_emodnet_chemistry_nfs_data" {
value = openstack_sharedfilesystem_share_v2.beacon_emodnet_chemistry
}
output "beacon_emodnet_chemistry_nfs_data_mgr_acls" {
value = openstack_sharedfilesystem_share_access_v2.beacon_emodnet_chemistry_mgr_share_access
sensitive = true
}
output "beacon_emodnet_chemistry_nfs_data_workers_acls" {
value = openstack_sharedfilesystem_share_access_v2.beacon_emodnet_chemistry_workers_share_access
sensitive = true
}
# Create a NFS share for wod
resource "openstack_sharedfilesystem_share_v2" "beacon_wod_data" {
name = "beacon_wod_data"
description = "NFS share for the Bluecloud beacon_wod_data data volume"
share_proto = "NFS"
size = 350
}
# Allow access to the NFS share to Swarm Managers and Workers
resource "openstack_sharedfilesystem_share_access_v2" "beacon_wod_data_mgr_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.beacon_wod_data.id
access_type = "ip"
access_to = each.key
access_level = "rw"
}
resource "openstack_sharedfilesystem_share_access_v2" "beacon_wod_data_workers_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.beacon_wod_data.id
access_type = "ip"
access_to = each.key
access_level = "rw"
}
output "beacon_wod_data_nfs_data" {
value = openstack_sharedfilesystem_share_v2.beacon_wod_data
}
output "beacon_wod_data_nfs_data_mgr_acls" {
value = openstack_sharedfilesystem_share_access_v2.beacon_wod_data_mgr_share_access
sensitive = true
}
output "beacon_wod_data_nfs_data_workers_acls" {
value = openstack_sharedfilesystem_share_access_v2.beacon_wod_data_workers_share_access
sensitive = true
}
# Create a NFS share for BGC
resource "openstack_sharedfilesystem_share_v2" "beacon_bgc_data" {
name = "beacon_bgc_data"
description = "NFS share for the Bluecloud beacon_bgc_data data volume"
share_proto = "NFS"
size = 370
}
# Allow access to the NFS share to Swarm Managers and Workers
resource "openstack_sharedfilesystem_share_access_v2" "beacon_bgc_data_mgr_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.beacon_bgc_data.id
access_type = "ip"
access_to = each.key
access_level = "rw"
}
resource "openstack_sharedfilesystem_share_access_v2" "beacon_bgc_data_workers_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.beacon_bgc_data.id
access_type = "ip"
access_to = each.key
access_level = "rw"
}
output "beacon_bgc_data_nfs_data" {
value = openstack_sharedfilesystem_share_v2.beacon_bgc_data
}
output "beacon_bgc_data_nfs_data_mgr_acls" {
value = openstack_sharedfilesystem_share_access_v2.beacon_bgc_data_mgr_share_access
sensitive = true
}
output "beacon_bgc_data_nfs_data_workers_acls" {
value = openstack_sharedfilesystem_share_access_v2.beacon_bgc_data_workers_share_access
sensitive = true
}
# Create a NFS share for CORA PR
resource "openstack_sharedfilesystem_share_v2" "beacon_cora_pr_data" {
name = "beacon_cora_pr_data"
description = "NFS share for the Bluecloud beacon_cora_pr_data data volume"
share_proto = "NFS"
size = 440
}
# Allow access to the NFS share to Swarm Managers and Workers
resource "openstack_sharedfilesystem_share_access_v2" "beacon_cora_pr_data_mgr_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.beacon_cora_pr_data.id
access_type = "ip"
access_to = each.key
access_level = "rw"
}
resource "openstack_sharedfilesystem_share_access_v2" "beacon_cora_pr_data_workers_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.beacon_cora_pr_data.id
access_type = "ip"
access_to = each.key
access_level = "rw"
}
output "beacon_cora_pr_data_nfs_data" {
value = openstack_sharedfilesystem_share_v2.beacon_cora_pr_data
}
output "beacon_cora_pr_data_nfs_data_mgr_acls" {
value = openstack_sharedfilesystem_share_access_v2.beacon_cora_pr_data_mgr_share_access
sensitive = true
}
output "beacon_cora_pr_data_nfs_data_workers_acls" {
value = openstack_sharedfilesystem_share_access_v2.beacon_cora_pr_data_workers_share_access
sensitive = true
}
# Create a NFS share for CORA TS
resource "openstack_sharedfilesystem_share_v2" "beacon_cora_ts_data" {
name = "beacon_cora_ts_data"
description = "NFS share for the Bluecloud beacon_cora_ts_data data volume"
share_proto = "NFS"
size = 70
}
# Allow access to the NFS share to Swarm Managers and Workers
resource "openstack_sharedfilesystem_share_access_v2" "beacon_cora_ts_data_mgr_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.beacon_cora_ts_data.id
access_type = "ip"
access_to = each.key
access_level = "rw"
}
resource "openstack_sharedfilesystem_share_access_v2" "beacon_cora_ts_data_workers_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.beacon_cora_ts_data.id
access_type = "ip"
access_to = each.key
access_level = "rw"
}
output "beacon_cora_ts_data_nfs_data" {
value = openstack_sharedfilesystem_share_v2.beacon_cora_ts_data
}
output "beacon_cora_ts_data_nfs_data_mgr_acls" {
value = openstack_sharedfilesystem_share_access_v2.beacon_cora_ts_data_mgr_share_access
sensitive = true
}
output "beacon_cora_ts_data_nfs_data_workers_acls" {
value = openstack_sharedfilesystem_share_access_v2.beacon_cora_ts_data_workers_share_access
sensitive = true
}
# Create a NFS share for argo
resource "openstack_sharedfilesystem_share_v2" "beacon_argo_data" {
name = "beacon_argo_data"
description = "NFS share for the Bluecloud beacon_argo_data data volume"
share_proto = "NFS"
size = 340
}
# Allow access to the NFS share to Swarm Managers and Workers
resource "openstack_sharedfilesystem_share_access_v2" "beacon_argo_data_mgr_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.beacon_argo_data.id
access_type = "ip"
access_to = each.key
access_level = "rw"
}
resource "openstack_sharedfilesystem_share_access_v2" "beacon_argo_data_workers_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.beacon_argo_data.id
access_type = "ip"
access_to = each.key
access_level = "rw"
}
output "beacon_argo_data_nfs_data" {
value = openstack_sharedfilesystem_share_v2.beacon_argo_data
}
output "beacon_argo_data_nfs_data_mgr_acls" {
value = openstack_sharedfilesystem_share_access_v2.beacon_argo_data_mgr_share_access
sensitive = true
}
output "beacon_argo_data_nfs_data_workers_acls" {
value = openstack_sharedfilesystem_share_access_v2.beacon_argo_data_workers_share_access
sensitive = true
}
# Create a NFS share for seadatanet_ts
resource "openstack_sharedfilesystem_share_v2" "beacon_seadatanet_ts_data" {
name = "beacon_seadatanet_ts_data"
description = "NFS share for the Bluecloud beacon_seadatanet_ts_data data volume"
share_proto = "NFS"
size = 90
}
# Allow access to the NFS share to Swarm Managers and Workers
resource "openstack_sharedfilesystem_share_access_v2" "beacon_seadatanet_ts_data_mgr_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.beacon_seadatanet_ts_data.id
access_type = "ip"
access_to = each.key
access_level = "rw"
}
resource "openstack_sharedfilesystem_share_access_v2" "beacon_seadatanet_ts_data_workers_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.beacon_seadatanet_ts_data.id
access_type = "ip"
access_to = each.key
access_level = "rw"
}
output "beacon_seadatanet_ts_data_nfs_data" {
value = openstack_sharedfilesystem_share_v2.beacon_seadatanet_ts_data
}
output "beacon_seadatanet_ts_data_nfs_data_mgr_acls" {
value = openstack_sharedfilesystem_share_access_v2.beacon_seadatanet_ts_data_mgr_share_access
sensitive = true
}
output "beacon_seadatanet_ts_data_nfs_data_workers_acls" {
value = openstack_sharedfilesystem_share_access_v2.beacon_seadatanet_ts_data_workers_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"
}

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"
}

Some files were not shown because too many files have changed in this diff Show More