From f483d86dd09f90015217bcc92dfe66baa8e7232e Mon Sep 17 00:00:00 2001 From: Sankara Narayanan H Date: Wed, 20 Aug 2025 01:57:51 +0530 Subject: [PATCH] 21.7.3.0.1 --- terraform/essbase.auto.tfvars | 4 +- terraform/essbase.auto.tfvars.ucm | 4 +- terraform/main.tf | 8 +++- terraform/modules/database/main.tf | 4 +- terraform/modules/essbase-node/main.tf | 4 ++ terraform/modules/essbase-node/variables.tf | 12 +++++ terraform/modules/essbase/main.tf | 4 +- terraform/modules/essbase/variables.tf | 12 +++++ terraform/modules/idcs/variables.tf | 7 +++ terraform/modules/upgrade/outputs.tf | 2 +- terraform/outputs.tf | 49 +++++++++++++++++++-- terraform/schema.yaml | 43 +++++++++++++++--- terraform/variables.tf | 9 ++++ 13 files changed, 144 insertions(+), 18 deletions(-) diff --git a/terraform/essbase.auto.tfvars b/terraform/essbase.auto.tfvars index 52859b7..0f161b5 100644 --- a/terraform/essbase.auto.tfvars +++ b/terraform/essbase.auto.tfvars @@ -3,5 +3,5 @@ # Listing details for the Essbase custom image for Bring Your Own License. ## Copyright (c) 2019 - 2023 Oracle and/or its affiliates. essbase_listing_id = "ocid1.appcataloglisting.oc1..aaaaaaaaqyxur5zacfln6epkbm46sdu5whf6zepbm43b63rm44d5hnm2ft5a" -essbase_listing_resource_version = "21.6.0.0.1_240807" -essbase_listing_resource_id = "ocid1.image.oc1..aaaaaaaadushb5tgvmc5w2xflif5ofddkqdq6kyy2nh4drorqcitsweyw7zq" +essbase_listing_resource_version = "21.7.3.0.1_250805" +essbase_listing_resource_id = "ocid1.image.oc1..aaaaaaaagpq4a3lxwmdnmykcspwoys222k67xpaqj2visggof6atkfzqiotq" diff --git a/terraform/essbase.auto.tfvars.ucm b/terraform/essbase.auto.tfvars.ucm index cf5c724..8479cdc 100644 --- a/terraform/essbase.auto.tfvars.ucm +++ b/terraform/essbase.auto.tfvars.ucm @@ -4,5 +4,5 @@ # Listing details for the Essbase custom image. # The resource_id values here should match the build script and oci_images.tf essbase_listing_id="ocid1.appcataloglisting.oc1..aaaaaaaanstxnoz6uttexhw5jfpqhu4gkwsp2ebmw4i2p7gkq65sr3e7z4gq" -essbase_listing_resource_version="21.6.0.0.1_240807" -essbase_listing_resource_id="ocid1.image.oc1..aaaaaaaaocztyhunwqpdbow2kxpi7xxdnyteq27wey5rcuskwwqb6fendzla" +essbase_listing_resource_version="21.7.3.0.1_250805" +essbase_listing_resource_id="ocid1.image.oc1..aaaaaaaalujvgnvdkyjbof4ve7mc6v7t3v34r46mpcet5yufy7a7kskwwhoq" diff --git a/terraform/main.tf b/terraform/main.tf index 8f748a9..676ff07 100644 --- a/terraform/main.tf +++ b/terraform/main.tf @@ -25,6 +25,7 @@ locals { instance_count = var.enable_cluster ? var.instance_count : 1 instance_catalog_storage = var.instance_catalog_storage instance_smv_server = var.instance_smv_server + instance_register_essbase_url = var.register_essbase_url create_load_balancer = var.enable_cluster || var.create_load_balancer @@ -56,6 +57,7 @@ module "idcs" { count = (var.identity_provider == "idcs" && !var.is_upgrade) ? 1 : 0 idcs_tenant = var.idcs_tenant + idcs_host = var.idcs_host idcs_client_id = var.idcs_client_id idcs_client_secret_id = var.idcs_client_secret_id idcs_external_admin_username = var.idcs_external_admin_username @@ -268,10 +270,13 @@ module "essbase" { instance_catalog_storage = var.instance_catalog_storage instance_smv_server = local.instance_smv_server + instance_register_essbase_url = local.instance_register_essbase_url + additional_host_mappings = lookup(local.db_type_host_mappings, local.db_type, []) identity_provider = var.identity_provider idcs_config = var.identity_provider != "idcs" ? null : { tenant = var.idcs_tenant, + idcs_host = var.idcs_host, client_id = var.idcs_client_id, client_secret_id = var.idcs_client_secret_id, } @@ -284,6 +289,7 @@ module "essbase" { enable_monitoring = var.enable_essbase_monitoring stack_id = local.instance_uuid stack_display_name = local.resource_name_prefix + stack_version = local.stack_version notification_topic_id = var.notification_topic_id } @@ -335,4 +341,4 @@ module "upgrade" { instanceUpgradeShape = var.upgrade_target_instance_shape bucket_name = "essbase_${local.instance_uuid_short}_metadata" -} \ No newline at end of file +} diff --git a/terraform/modules/database/main.tf b/terraform/modules/database/main.tf index 79172cf..9d0a0a5 100644 --- a/terraform/modules/database/main.tf +++ b/terraform/modules/database/main.tf @@ -103,13 +103,15 @@ resource "oci_core_network_security_group_security_rule" "vcn_nsg_rule3" { resource "oci_database_autonomous_database" "autonomous_database" { admin_password = local.bootstrap_password compartment_id = var.compartment_id - cpu_core_count = "1" + # cpu_core_count = "1" # parameter invalid if compute_model is ECPU data_storage_size_in_tbs = "1" db_name = var.db_name db_workload = var.db_workload == "Autonomous Transaction Processing" ? "OLTP" : "DW" is_auto_scaling_enabled = true subnet_id = local.secure_count == 1 ? var.subnet_id : null nsg_ids = local.secure_count == 1 ? [oci_core_network_security_group.vcn_nsg[0].id] : null + compute_model = "ECPU" + compute_count = "4.0" # Minimum value is 1 for ECPU model. 1 OCPU = 4 ECPU display_name = "${var.display_name_prefix}-database" freeform_tags = var.freeform_tags diff --git a/terraform/modules/essbase-node/main.tf b/terraform/modules/essbase-node/main.tf index 62c6dd9..58d9952 100644 --- a/terraform/modules/essbase-node/main.tf +++ b/terraform/modules/essbase-node/main.tf @@ -96,6 +96,10 @@ resource "oci_core_instance" "essbase" { catalog_bucket = jsonencode(var.catalog_bucket) catalog_storage = jsonencode(var.instance_catalog_storage) smv_server = jsonencode(tostring(var.instance_smv_server)) + stack_info=jsonencode({ + register_essbase_url = tostring(var.instance_register_essbase_url), + version = tostring(var.stack_version), + }) volumes = jsonencode({ config = { diff --git a/terraform/modules/essbase-node/variables.tf b/terraform/modules/essbase-node/variables.tf index 62a8e88..9ff4ae8 100644 --- a/terraform/modules/essbase-node/variables.tf +++ b/terraform/modules/essbase-node/variables.tf @@ -121,6 +121,7 @@ variable "identity_provider" { variable "idcs_config" { type = object({ tenant = string, + idcs_host = string, client_id = string, client_secret_id = string }) @@ -188,6 +189,12 @@ variable "stack_display_name" { default = "" } +variable "stack_version" { + type = string + default = "" +} + + // Notification settings variable "notification_topic_id" { type = string @@ -223,6 +230,11 @@ variable "instance_smv_server" { default = false } +variable "instance_register_essbase_url" { + type = bool + default = false +} + variable "metadata_bucket" { type = object({ id = string diff --git a/terraform/modules/essbase/main.tf b/terraform/modules/essbase/main.tf index ae3b093..17cbf31 100644 --- a/terraform/modules/essbase/main.tf +++ b/terraform/modules/essbase/main.tf @@ -114,6 +114,8 @@ module "essbase-node" { stack_id = var.stack_id stack_display_name = var.stack_display_name + stack_version = var.stack_version + enable_monitoring = var.enable_monitoring enable_embedded_proxy = var.enable_embedded_proxy notification_topic_id = var.notification_topic_id @@ -142,7 +144,7 @@ module "essbase-node" { instance_catalog_storage = var.instance_catalog_storage instance_smv_server = var.instance_smv_server - + instance_register_essbase_url = var.instance_register_essbase_url db_type = var.db_type db_database_id = var.db_database_id diff --git a/terraform/modules/essbase/variables.tf b/terraform/modules/essbase/variables.tf index 9d338c6..24af9c4 100644 --- a/terraform/modules/essbase/variables.tf +++ b/terraform/modules/essbase/variables.tf @@ -91,6 +91,12 @@ variable "instance_smv_server" { default = false } +variable "instance_register_essbase_url" { + type = bool + default = false +} + + variable "hostname_label_prefix" { description = "The hostname for the essbase node" type = string @@ -167,6 +173,7 @@ variable "identity_provider" { variable "idcs_config" { type = object({ tenant = string, + idcs_host = string, client_id = string, client_secret_id = string }) @@ -240,6 +247,11 @@ variable "stack_display_name" { default = "" } +variable "stack_version" { + type = string + default = "" +} + // Notification settings variable "notification_topic_id" { type = string diff --git a/terraform/modules/idcs/variables.tf b/terraform/modules/idcs/variables.tf index 27b6982..64a9202 100644 --- a/terraform/modules/idcs/variables.tf +++ b/terraform/modules/idcs/variables.tf @@ -11,6 +11,13 @@ variable "idcs_tenant" { } } +variable "idcs_host" { + type = string + default = "identity.oraclecloud.com" + + # No validation. String can be left empty and default would be taken as identity.oraclecloud.com +} + variable "idcs_client_id" { type = string default = "" diff --git a/terraform/modules/upgrade/outputs.tf b/terraform/modules/upgrade/outputs.tf index 0ced49a..cb56a97 100644 --- a/terraform/modules/upgrade/outputs.tf +++ b/terraform/modules/upgrade/outputs.tf @@ -43,7 +43,7 @@ output "rcu_schema_prefix"{ } output "bucket_namespace" { - value = var.instanceUpgrade19c02? data.oci_objectstorage_namespace.objectstorage_ns.namespace: null + value = var.instanceUpgrade19c02? data.oci_objectstorage_namespace.objectstorage_ns.namespace: data.oci_objectstorage_bucket.source_bucket.namespace } output "bucket_name" { diff --git a/terraform/outputs.tf b/terraform/outputs.tf index 159d7e8..d17e682 100644 --- a/terraform/outputs.tf +++ b/terraform/outputs.tf @@ -2,7 +2,7 @@ ## Licensed under the Universal Permissive License v1.0 as shown at https://oss.oracle.com/licenses/upl. output "stack_version" { - value = var.stack_version + value = local.stack_version } output "stack_id" { @@ -22,11 +22,11 @@ output "essbase_node_display_names" { } output "essbase_node_public_ips" { - value = var.is_upgrade? [module.upgrade[0].public_ip] : compact(module.essbase[0].nodes[*].public_ip) + value = local.essbase_node_public_ips } output "essbase_node_private_ips" { - value = var.is_upgrade? [module.upgrade[0].private_ip]: compact(module.essbase[0].nodes[*].private_ip) + value = local.essbase_node_private_ips } output "private_endpoint_db" { @@ -42,7 +42,7 @@ output "essbase_url" { } output "essbase_external_url" { - value = var.is_upgrade? null: (local.create_load_balancer ? join("", module.load-balancer.*.external_url) : module.essbase[0].external_url) + value = local.essbase_external_url } output "essbase_redirect_url" { @@ -84,3 +84,44 @@ output "instance_smv_server" { output "z_messages" { value = "\n\n*********************\nOracle Essbase stack has been provisioned and is continuing configuration in the background.\nIt may take up to 20 minutes for configuration to complete.\nLog details can be found on the target nodes at /var/log/essbase-init.log.\n*********************\n" } + +locals { + +stack_version= var.stack_version +essbase_node_public_ips= var.is_upgrade? [module.upgrade[0].public_ip] : compact(module.essbase[0].nodes[*].public_ip) +essbase_node_private_ips= var.is_upgrade? [module.upgrade[0].private_ip]: compact(module.essbase[0].nodes[*].private_ip) +essbase_external_url= var.is_upgrade? null: (local.create_load_balancer ? join("", module.load-balancer.*.external_url) : module.essbase[0].external_url) + +/*stack_id = var.is_upgrade? module.upgrade[0].stack_id : local.instance_uuid +stack_display_name = var.is_upgrade? module.upgrade[0].stack_resource_id : local.resource_name_prefix +essbase_node_ids = var.is_upgrade? [module.upgrade[0].node_id]: compact(module.essbase[0].nodes[*].id) +essbase_node_display_names = var.is_upgrade? [module.upgrade[0].display_name]: compact(module.essbase[0].nodes[*].display_name) +private_endpoint_db= var.create_secure_db ? join("", module.database.*.private_endpoint) : null +essbase_node_domain_names= var.is_upgrade? [module.upgrade[0].domain_name] : compact(module.essbase[0].nodes[*].domain_name) +essbase_url= var.is_upgrade? null: (local.create_load_balancer ? join("", module.load-balancer.*.external_url) : module.essbase[0].external_url) +essbase_redirect_url= var.is_upgrade? null: (var.identity_provider == "idcs" ? (local.create_load_balancer ? format("%s/redirect_uri", join("", module.load-balancer.*.redirect_url_prefix)) : format("%s/redirect_uri", module.essbase[0].external_url)) : "") +essbase_post_logout_redirect_url= var.is_upgrade? null: (var.identity_provider == "idcs" ? (local.create_load_balancer ? format("%s/jet/logout.html", join("", module.load-balancer.*.redirect_url_prefix)) : format("%s/jet/logout.html", module.essbase[0].external_url)) : "") +idcs_tenant= var.is_upgrade? null: ((var.identity_provider == "idcs" && !var.is_upgrade) ? var.idcs_tenant : "") +idcs_client_id= var.is_upgrade? null: ((var.identity_provider == "idcs" && !var.is_upgrade)? var.idcs_client_id : "") +rcu_schema_prefix = var.is_upgrade? module.upgrade[0].rcu_schema_prefix: module.essbase[0].rcu_schema_prefix +backup_bucket_name= var.is_upgrade? module.upgrade[0].backup_bucket_name: module.backup-bucket[0].name +catalog_bucket_name= (var.is_upgrade || (length(module.catalog-bucket) == 0)) ? null : module.catalog-bucket[0].name +metadata_bucket_name= var.is_upgrade? module.upgrade[0].metadata_bucket_name: module.metadata-bucket[0].name +instance_smv_server= var.is_upgrade? null: var.instance_smv_server +z_messages= "\n\n*********************\nOracle Essbase stack has been provisioned and is continuing configuration in the background.\nIt may take up to 20 minutes for configuration to complete.\nLog details can be found on the target nodes at /var/log/essbase-init.log.\n*********************\n" + */ +} + +resource "oci_objectstorage_object" "essbase_stack_info" { + bucket = var.is_upgrade? module.upgrade[0].metadata_bucket_name : module.metadata-bucket[0].name + namespace = var.is_upgrade? module.upgrade[0].bucket_namespace : module.metadata-bucket[0].namespace + + object = "stack-info.dat" + storage_tier = "InfrequentAccess" + content = jsonencode({ + "url" = var.is_upgrade? null : local.essbase_external_url, + "version" = local.stack_version, + "public_ip" = var.is_upgrade? null : local.essbase_node_public_ips, + "private_ip" = var.is_upgrade? null : local.essbase_node_private_ips + }) +} \ No newline at end of file diff --git a/terraform/schema.yaml b/terraform/schema.yaml index 6b6609f..0c786bb 100644 --- a/terraform/schema.yaml +++ b/terraform/schema.yaml @@ -63,6 +63,7 @@ groupings: - title: "Identity Configuration" variables: - ${identity_provider} + - ${idcs_host} - ${idcs_tenant} - ${idcs_client_id} - ${idcs_external_admin_username} @@ -118,6 +119,7 @@ groupings: - ${show_db_advanced_options} - ${create_secure_db} - ${db_workload} + - ${register_essbase_url} - title: "Load Balancer Configuration" variables: @@ -1020,13 +1022,8 @@ variables: - ${is_upgrade} instance_smv_server: -<<<<<<< HEAD - title: "Deploy Smart View Server (Preview)" - description: "Check to configure Oracle Smart View server. Oracle Smart View for Office (Mac and Browser) for Essbase is in Preview status." -======= title: "Deploy Smart View Server" description: "Select to configure Oracle Smart View for Office (Mac and Browser) for Essbase." ->>>>>>> sankara911-snh_release_216 type: boolean default: false required: false @@ -1302,7 +1299,24 @@ variables: - ${use_existing_db} - ${use_existing_vcn} - ${is_upgrade} - + + register_essbase_url: + type: boolean + default: false + required: true + title: Add Essbase URL to Autonomous Database + description: Configure Autonomous Database with Essbase Launch URL automatically. Can be configured post-deployment too. + visible: + and: + - or: + - eq: + - ${existing_db_type} + - "Autonomous Database" + - not: + - ${use_existing_db} + - not: + - ${is_upgrade} + existing_db_type: title: Database Type description: Select which database you will use @@ -1522,6 +1536,20 @@ variables: not: - ${is_upgrade} + idcs_host: + title: IDCS/IAM Endpoint URL + description: By default it is identity.oraclecloud.com for most commercial regions - change only if needed. + type: string + visible: + and: + - eq: + - ${identity_provider} + - idcs + - not: + - ${is_upgrade} + required: true + default: identity.oraclecloud.com + idcs_tenant: title: IDCS/IAM Instance GUID description: The ID of your IDCS/IAM instance, which typically has the format idcs-, and is part of the host name that you use to access IDCS/IAM. @@ -1684,6 +1712,9 @@ outputs: rcu_schema_prefix: title: RCU Schema Prefix type: string + idcs_host: + title: IDCS/IAM Endpoint + type: string idcs_tenant: title: IDCS/IAM Instance GUID type: string diff --git a/terraform/variables.tf b/terraform/variables.tf index 8e29f4b..3cd8018 100644 --- a/terraform/variables.tf +++ b/terraform/variables.tf @@ -209,6 +209,10 @@ variable "instance_smv_server" { default = false } +variable "register_essbase_url" { + type = bool + default = false +} variable "data_volume_size" { // (gigabytes) @@ -295,6 +299,11 @@ variable "idcs_tenant" { # } } +variable "idcs_host" { + type = string + default = "identity.oraclecloud.com" +} + variable "idcs_client_id" { type = string default = ""