Skip to content

Commit 7d16e74

Browse files
feat: provided the ability to opt out of provisioning logging or monitoring instances using new boolean input variables log_analysis_provision and cloud_monitoring_provision (#45)
1 parent a944618 commit 7d16e74

File tree

5 files changed

+36
-14
lines changed

5 files changed

+36
-14
lines changed

common-dev-assets

ibm_catalog.json

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -154,6 +154,9 @@
154154
}
155155
]
156156
},
157+
{
158+
"key": "log_analysis_provision"
159+
},
157160
{
158161
"key": "log_analysis_instance_name"
159162
},
@@ -217,6 +220,9 @@
217220
{
218221
"key": "enable_at_event_routing_to_cos_bucket"
219222
},
223+
{
224+
"key": "cloud_monitoring_provision"
225+
},
220226
{
221227
"key": "cloud_monitoring_instance_name"
222228
},

solutions/instances/main.tf

Lines changed: 9 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,10 @@
33
#######################################################################################################################
44

55
locals {
6+
7+
# tflint-ignore: terraform_unused_declarations
8+
validate_log_analysis_provision = var.enable_at_event_routing_to_log_analysis && var.log_analysis_provision == false ? tobool("log_analysis_provision can't be false if enable_at_event_routing_to_log_analysis is true") : true
9+
610
archive_api_key = var.log_archive_api_key == null ? var.ibmcloud_api_key : var.log_archive_api_key
711
default_cos_region = var.cos_region != null ? var.cos_region : var.region
812

@@ -21,13 +25,13 @@ locals {
2125
cos_target_bucket_name = var.existing_at_cos_target_bucket_name != null ? var.existing_at_cos_target_bucket_name : module.cos_bucket[0].buckets[local.at_cos_target_bucket_name].bucket_name
2226
cos_target_bucket_endpoint = var.existing_at_cos_target_bucket_endpoint != null ? var.existing_at_cos_target_bucket_endpoint : module.cos_bucket[0].buckets[local.at_cos_target_bucket_name].s3_endpoint_private
2327

24-
bucket_config_1 = var.existing_log_archive_cos_bucket_name == null ? {
28+
bucket_config_1 = var.existing_log_archive_cos_bucket_name == null && var.log_analysis_provision == true ? {
2529
class = var.log_archive_cos_bucket_class
2630
name = local.log_archive_cos_bucket_name
2731
tag = var.archive_bucket_access_tags
2832
} : null
2933

30-
bucket_config_2 = var.existing_at_cos_target_bucket_name == null ? {
34+
bucket_config_2 = var.existing_at_cos_target_bucket_name == null && var.enable_at_event_routing_to_cos_bucket == true ? {
3135
class = var.at_cos_target_bucket_class
3236
name = local.at_cos_target_bucket_name
3337
tag = var.at_cos_bucket_access_tags
@@ -100,7 +104,7 @@ module "observability_instance" {
100104
enable_archive = var.enable_log_archive
101105
ibmcloud_api_key = local.archive_api_key
102106
# Log Analysis
103-
log_analysis_provision = true
107+
log_analysis_provision = var.log_analysis_provision
104108
log_analysis_instance_name = var.prefix != null ? "${var.prefix}-${var.log_analysis_instance_name}" : var.log_analysis_instance_name
105109
log_analysis_plan = var.log_analysis_plan
106110
log_analysis_tags = var.log_analysis_tags
@@ -110,7 +114,7 @@ module "observability_instance" {
110114
log_analysis_cos_bucket_endpoint = local.archive_cos_bucket_endpoint
111115
enable_platform_logs = var.enable_platform_logs
112116
# IBM Cloud Monitoring
113-
cloud_monitoring_provision = true
117+
cloud_monitoring_provision = var.cloud_monitoring_provision
114118
cloud_monitoring_instance_name = var.prefix != null ? "${var.prefix}-${var.cloud_monitoring_instance_name}" : var.cloud_monitoring_instance_name
115119
cloud_monitoring_plan = var.cloud_monitoring_plan
116120
cloud_monitoring_tags = var.cloud_monitoring_tags
@@ -207,7 +211,7 @@ module "cos_instance" {
207211
providers = {
208212
ibm = ibm.cos
209213
}
210-
count = (var.existing_cos_instance_crn == null) ? 1 : 0 # no need to call COS module if consumer is using existing COS instance
214+
count = (var.existing_cos_instance_crn == null) && length(local.bucket_config_map) != 0 ? 1 : 0 # no need to call COS module if consumer is using existing COS instance
211215
source = "terraform-ibm-modules/cos/ibm//modules/fscloud"
212216
version = "7.5.3"
213217
resource_group_id = module.resource_group.resource_group_id

solutions/instances/outputs.tf

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -4,44 +4,44 @@
44

55
## Log analysis
66
output "log_analysis_name" {
7-
value = module.observability_instance.log_analysis_name
7+
value = var.log_analysis_provision ? module.observability_instance.log_analysis_name : null
88
description = "The name of the provisioned Log Analysis instance."
99
}
1010

1111
output "log_analysis_crn" {
12-
value = module.observability_instance.log_analysis_crn
12+
value = var.log_analysis_provision ? module.observability_instance.log_analysis_crn : null
1313
description = "The id of the provisioned Log Analysis instance."
1414
}
1515

1616
output "log_analysis_guid" {
17-
value = module.observability_instance.log_analysis_guid
17+
value = var.log_analysis_provision ? module.observability_instance.log_analysis_guid : null
1818
description = "vaThe guid of the provisioned Log Analysis instance."
1919
}
2020

2121
output "log_analysis_ingestion_key" {
22-
value = module.observability_instance.log_analysis_ingestion_key
22+
value = var.log_analysis_provision ? module.observability_instance.log_analysis_ingestion_key : null
2323
description = "Log Analysis ingest key for agents to use"
2424
sensitive = true
2525
}
2626

2727
## Cloud Monitoring
2828
output "cloud_monitoring_name" {
29-
value = module.observability_instance.cloud_monitoring_name
29+
value = var.cloud_monitoring_provision ? module.observability_instance.cloud_monitoring_name : null
3030
description = "The name of the provisioned IBM cloud monitoring instance."
3131
}
3232

3333
output "cloud_monitoring_crn" {
34-
value = module.observability_instance.cloud_monitoring_crn
34+
value = var.cloud_monitoring_provision ? module.observability_instance.cloud_monitoring_crn : null
3535
description = "The id of the provisioned IBM cloud monitoring instance."
3636
}
3737

3838
output "cloud_monitoring_guid" {
39-
value = module.observability_instance.cloud_monitoring_guid
39+
value = var.cloud_monitoring_provision ? module.observability_instance.cloud_monitoring_guid : null
4040
description = "The guid of the provisioned IBM cloud monitoring instance."
4141
}
4242

4343
output "cloud_monitoring_access_key" {
44-
value = module.observability_instance.cloud_monitoring_access_key
44+
value = var.cloud_monitoring_provision ? module.observability_instance.cloud_monitoring_access_key : null
4545
description = "IBM cloud monitoring access key for agents to use"
4646
sensitive = true
4747
}

solutions/instances/variables.tf

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -40,6 +40,12 @@ variable "prefix" {
4040
# Log Analysis Variables
4141
##############################################################################
4242

43+
variable "log_analysis_provision" {
44+
description = "Set it to true to provision an IBM Cloud Logging instance"
45+
type = bool
46+
default = true
47+
}
48+
4349
variable "log_analysis_instance_name" {
4450
type = string
4551
description = "The name of the IBM Cloud Logging instance to create. If prefix input variable is passed then it will get prefixed infront of the value in the format of '<prefix>-value'"
@@ -111,6 +117,12 @@ variable "enable_at_event_routing_to_log_analysis" {
111117
# Cloud Monitoring Variables
112118
##############################################################################
113119

120+
variable "cloud_monitoring_provision" {
121+
description = "Set it to true to provision an IBM cloud monitoring instance"
122+
type = bool
123+
default = true
124+
}
125+
114126
variable "cloud_monitoring_instance_name" {
115127
type = string
116128
description = "The name of the IBM Cloud Monitoring instance to create. If prefix input variable is passed then it will get prefixed infront of the value in the format of '<prefix>-value'"

0 commit comments

Comments
 (0)