@@ -10,7 +10,12 @@ locals {
1010 elasticsearch_key_name = var. prefix != null ? " ${ var . prefix } -${ var . elasticsearch_key_name } " : var. elasticsearch_key_name
1111 elasticsearch_key_ring_name = var. prefix != null ? " ${ var . prefix } -${ var . elasticsearch_key_ring_name } " : var. elasticsearch_key_ring_name
1212
13- kms_key_crn = var. existing_kms_key_crn != null ? var. existing_kms_key_crn : module. kms [0 ]. keys [format (" %s.%s" , local. elasticsearch_key_ring_name , local. elasticsearch_key_name )]. crn
13+
14+ kms_key_crn = var. existing_kms_key_crn != null ? var. existing_kms_key_crn : module. kms [0 ]. keys [format (" %s.%s" , local. elasticsearch_key_ring_name , local. elasticsearch_key_name )]. crn
15+
16+ existing_db_instance_guid = var. existing_db_instance_crn != null ? element (split (" :" , var. existing_db_instance_crn ), length (split (" :" , var. existing_db_instance_crn )) - 3 ) : null
17+ use_existing_db_instance = var. existing_db_instance_crn != null
18+
1419 create_cross_account_auth_policy = ! var. skip_iam_authorization_policy && var. ibmcloud_kms_api_key != null
1520 kms_service_name = local. kms_key_crn != null ? (
1621 can (regex (" .*kms.*" , local. kms_key_crn )) ? " kms" : can (regex (" .*hs-crypto.*" , local. kms_key_crn )) ? " hs-crypto" : null
@@ -90,6 +95,7 @@ module "kms" {
9095# ######################################################################################################################
9196
9297module "elasticsearch" {
98+ count = local. use_existing_db_instance ? 0 : 1
9399 source = " ../../modules/fscloud"
94100 depends_on = [time_sleep . wait_for_authorization_policy ]
95101 resource_group_id = module. resource_group . resource_group_id
@@ -113,3 +119,26 @@ module "elasticsearch" {
113119 service_credential_names = var. service_credential_names
114120 enable_elser_model = var. enable_elser_model
115121}
122+
123+ # this extra block is needed when passing in an existing ES instance - the database data block
124+ # requires a name and resource_id to retrieve the data
125+ data "ibm_resource_instance" "existing_instance_resource" {
126+ count = local. use_existing_db_instance ? 1 : 0
127+ identifier = local. existing_db_instance_guid
128+ }
129+
130+ data "ibm_database" "existing_db_instance" {
131+ count = local. use_existing_db_instance ? 1 : 0
132+ name = data. ibm_resource_instance . existing_instance_resource [0 ]. name
133+ resource_group_id = data. ibm_resource_instance . existing_instance_resource [0 ]. resource_group_id
134+ location = var. region
135+ service = " databases-for-elasticsearch"
136+ }
137+
138+ data "ibm_database_connection" "existing_connection" {
139+ count = local. use_existing_db_instance ? 1 : 0
140+ endpoint_type = " private"
141+ deployment_id = data. ibm_database . existing_db_instance [0 ]. id
142+ user_id = data. ibm_database . existing_db_instance [0 ]. adminuser
143+ user_type = " database"
144+ }
0 commit comments