From 00780217050eb246564bcefe993462e62f6447ff Mon Sep 17 00:00:00 2001 From: Sankara Narayanan H Date: Mon, 4 Aug 2025 18:49:30 +0530 Subject: [PATCH 1/2] draft 21.7.1.0.1 --- terraform/essbase.auto.tfvars | 4 +- terraform/essbase.auto.tfvars.ucm | 4 +- terraform/main.tf | 6 ++- terraform/modules/database/main.tf | 4 +- terraform/modules/essbase-node/main.tf | 4 ++ terraform/modules/essbase-node/variables.tf | 11 +++++ terraform/modules/essbase/main.tf | 4 +- terraform/modules/essbase/variables.tf | 11 +++++ terraform/modules/upgrade/outputs.tf | 2 +- terraform/outputs.tf | 49 +++++++++++++++++++-- terraform/schema.yaml | 25 ++++++++--- terraform/variables.tf | 4 ++ terraform/versions.tf | 4 ++ 13 files changed, 114 insertions(+), 18 deletions(-) diff --git a/terraform/essbase.auto.tfvars b/terraform/essbase.auto.tfvars index 52859b7..f715ce1 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.1.0.1_250224" +essbase_listing_resource_id = "ocid1.image.oc1..aaaaaaaaoqjqxwwye4gs4ybfm7xfvirvydegnak2idgcqbcay2e5enx2oyfa" diff --git a/terraform/essbase.auto.tfvars.ucm b/terraform/essbase.auto.tfvars.ucm index cf5c724..8c65356 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.1.0.1_250224" +essbase_listing_resource_id="ocid1.image.oc1..aaaaaaaaemmueasoabsu7o3he7ihebixrjoepzywjsegs5uax3g3jjizxrjq" diff --git a/terraform/main.tf b/terraform/main.tf index 8f748a9..e7939eb 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 @@ -268,6 +269,8 @@ 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 @@ -284,6 +287,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 +339,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..947318e 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" 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..2d12f51 100644 --- a/terraform/modules/essbase-node/variables.tf +++ b/terraform/modules/essbase-node/variables.tf @@ -188,6 +188,12 @@ variable "stack_display_name" { default = "" } +variable "stack_version" { + type = string + default = "" +} + + // Notification settings variable "notification_topic_id" { type = string @@ -223,6 +229,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..60de92b 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 @@ -240,6 +246,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/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..aff496b 100644 --- a/terraform/schema.yaml +++ b/terraform/schema.yaml @@ -118,6 +118,7 @@ groupings: - ${show_db_advanced_options} - ${create_secure_db} - ${db_workload} + - ${register_essbase_url} - title: "Load Balancer Configuration" variables: @@ -1020,13 +1021,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 +1298,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 diff --git a/terraform/variables.tf b/terraform/variables.tf index 8e29f4b..ca93e15 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) diff --git a/terraform/versions.tf b/terraform/versions.tf index 379588b..a1756ec 100644 --- a/terraform/versions.tf +++ b/terraform/versions.tf @@ -16,6 +16,10 @@ terraform { source = "hashicorp/random" version = "~> 3.1" } + template = { + source = "hashicorp/template" + version = "~> 2.1" + } tls = { source = "hashicorp/tls" version = "~> 3.1" From be95114cc548494142cd3efb5acfb292f8ba8777 Mon Sep 17 00:00:00 2001 From: Sankara Narayanan H Date: Thu, 21 Aug 2025 16:48:38 +0530 Subject: [PATCH 2/2] revert ecpu to ocpu --- terraform/modules/database/main.tf | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/terraform/modules/database/main.tf b/terraform/modules/database/main.tf index 947318e..79172cf 100644 --- a/terraform/modules/database/main.tf +++ b/terraform/modules/database/main.tf @@ -103,15 +103,13 @@ 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" 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