From d6a4819145242d7201c45dcb478a5bb225bf7877 Mon Sep 17 00:00:00 2001 From: "kierra.searle@ibm.com" Date: Thu, 25 Jul 2024 14:25:29 -0400 Subject: [PATCH 1/3] feat: add support for at management events --- README.md | 2 +- cos.tf | 1 + variables.tf | 1 + 3 files changed, 3 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index c7bac7f55..8aaa83dde 100644 --- a/README.md +++ b/README.md @@ -909,7 +909,7 @@ module "cluster_pattern" { | [appid](#input\_appid) | The App ID instance to be used for the teleport vsi deployments |
object({
name = optional(string)
resource_group = optional(string)
use_data = optional(bool)
keys = optional(list(string))
use_appid = bool
})
|
{
"use_appid": false
}
| no | | [atracker](#input\_atracker) | atracker variables |
object({
resource_group = string
receive_global_events = bool
collector_bucket_name = string
add_route = bool
})
| n/a | yes | | [clusters](#input\_clusters) | A list describing clusters workloads to create |
list(
object({
name = string # Name of Cluster
vpc_name = string # Name of VPC
subnet_names = list(string) # List of vpc subnets for cluster
workers_per_subnet = number # Worker nodes per subnet.
machine_type = string # Worker node flavor
kube_type = string # iks or openshift
kube_version = optional(string) # Can be a version from `ibmcloud ks versions` or `default`
entitlement = optional(string) # entitlement option for openshift
secondary_storage = optional(string) # Secondary storage type
pod_subnet = optional(string) # Portable subnet for pods
service_subnet = optional(string) # Portable subnet for services
resource_group = string # Resource Group used for cluster
cos_name = optional(string) # Name of COS instance Required only for OpenShift clusters
access_tags = optional(list(string), [])
boot_volume_crk_name = optional(string) # Boot volume encryption key name
disable_public_endpoint = optional(bool, true) # disable cluster public, leaving only private endpoint
disable_outbound_traffic_protection = optional(bool, false) # public outbound access from the cluster workers
cluster_force_delete_storage = optional(bool, false) # force the removal of persistent storage associated with the cluster during cluster deletion
kms_wait_for_apply = optional(bool, true) # make terraform wait until KMS is applied to master and it is ready and deployed
addons = optional(object({ # Map of OCP cluster add-on versions to install
debug-tool = optional(string)
image-key-synchronizer = optional(string)
openshift-data-foundation = optional(string)
vpc-file-csi-driver = optional(string)
static-route = optional(string)
cluster-autoscaler = optional(string)
vpc-block-csi-driver = optional(string)
ibm-storage-operator = optional(string)
}), {})
manage_all_addons = optional(bool, false) # Instructs Terraform to manage all cluster addons, even if addons were installed outside of the module. If set to 'true' this module will destroy any addons that were installed by other sources.
kms_config = optional(
object({
crk_name = string # Name of key
private_endpoint = optional(bool) # Private endpoint
})
)
worker_pools = optional(
list(
object({
name = string # Worker pool name
vpc_name = string # VPC name
workers_per_subnet = number # Worker nodes per subnet
flavor = string # Worker node flavor
subnet_names = list(string) # List of vpc subnets for worker pool
entitlement = optional(string) # entitlement option for openshift
secondary_storage = optional(string) # Secondary storage type
boot_volume_crk_name = optional(string) # Boot volume encryption key name
})
)
)
})
)
| n/a | yes | -| [cos](#input\_cos) | Object describing the cloud object storage instance, buckets, and keys. Set `use_data` to false to create instance |
list(
object({
name = string
use_data = optional(bool)
resource_group = string
plan = optional(string)
random_suffix = optional(bool) # Use a random suffix for COS instance
access_tags = optional(list(string), [])
buckets = list(object({
name = string
storage_class = string
endpoint_type = string
force_delete = bool
single_site_location = optional(string)
region_location = optional(string)
cross_region_location = optional(string)
kms_key = optional(string)
access_tags = optional(list(string), [])
allowed_ip = optional(list(string), [])
hard_quota = optional(number)
archive_rule = optional(object({
days = number
enable = bool
rule_id = optional(string)
type = string
}))
expire_rule = optional(object({
days = optional(number)
date = optional(string)
enable = bool
expired_object_delete_marker = optional(string)
prefix = optional(string)
rule_id = optional(string)
}))
activity_tracking = optional(object({
activity_tracker_crn = string
read_data_events = bool
write_data_events = bool
}))
metrics_monitoring = optional(object({
metrics_monitoring_crn = string
request_metrics_enabled = optional(bool)
usage_metrics_enabled = optional(bool)
}))
}))
keys = optional(
list(object({
name = string
role = string
enable_HMAC = bool
}))
)

})
)
| n/a | yes | +| [cos](#input\_cos) | Object describing the cloud object storage instance, buckets, and keys. Set `use_data` to false to create instance |
list(
object({
name = string
use_data = optional(bool)
resource_group = string
plan = optional(string)
random_suffix = optional(bool) # Use a random suffix for COS instance
access_tags = optional(list(string), [])
buckets = list(object({
name = string
storage_class = string
endpoint_type = string
force_delete = bool
single_site_location = optional(string)
region_location = optional(string)
cross_region_location = optional(string)
kms_key = optional(string)
access_tags = optional(list(string), [])
allowed_ip = optional(list(string), [])
hard_quota = optional(number)
archive_rule = optional(object({
days = number
enable = bool
rule_id = optional(string)
type = string
}))
expire_rule = optional(object({
days = optional(number)
date = optional(string)
enable = bool
expired_object_delete_marker = optional(string)
prefix = optional(string)
rule_id = optional(string)
}))
activity_tracking = optional(object({
activity_tracker_crn = string
read_data_events = bool
write_data_events = bool
management_events = bool
}))
metrics_monitoring = optional(object({
metrics_monitoring_crn = string
request_metrics_enabled = optional(bool)
usage_metrics_enabled = optional(bool)
}))
}))
keys = optional(
list(object({
name = string
role = string
enable_HMAC = bool
}))
)

})
)
| n/a | yes | | [enable\_transit\_gateway](#input\_enable\_transit\_gateway) | Create transit gateway | `bool` | `true` | no | | [f5\_template\_data](#input\_f5\_template\_data) | Data for all f5 templates |
object({
tmos_admin_password = optional(string)
license_type = optional(string)
byol_license_basekey = optional(string)
license_host = optional(string)
license_username = optional(string)
license_password = optional(string)
license_pool = optional(string)
license_sku_keyword_1 = optional(string)
license_sku_keyword_2 = optional(string)
license_unit_of_measure = optional(string)
do_declaration_url = optional(string)
as3_declaration_url = optional(string)
ts_declaration_url = optional(string)
phone_home_url = optional(string)
template_source = optional(string)
template_version = optional(string)
app_id = optional(string)
tgactive_url = optional(string)
tgstandby_url = optional(string)
tgrefresh_url = optional(string)
})
|
{
"license_type": "none"
}
| no | | [f5\_vsi](#input\_f5\_vsi) | A list describing F5 VSI workloads to create |
list(
object({
name = string
vpc_name = string
primary_subnet_name = string
secondary_subnet_names = list(string)
secondary_subnet_security_group_names = list(
object({
group_name = string
interface_name = string
})
)
ssh_keys = list(string)
f5_image_name = string
machine_type = string
resource_group = optional(string)
enable_management_floating_ip = optional(bool)
enable_external_floating_ip = optional(bool)
security_groups = optional(list(string))
boot_volume_encryption_key_name = optional(string)
hostname = string
domain = string
access_tags = optional(list(string), [])
security_group = optional(
object({
name = string
rules = list(
object({
name = string
direction = string
source = string
tcp = optional(
object({
port_max = number
port_min = number
})
)
udp = optional(
object({
port_max = number
port_min = number
})
)
icmp = optional(
object({
type = number
code = number
})
)
})
)
})
)
block_storage_volumes = optional(list(
object({
name = string
profile = string
capacity = optional(number)
iops = optional(number)
encryption_key = optional(string)
})
))
load_balancers = optional(list(
object({
name = string
type = string
listener_port = number
listener_protocol = string
connection_limit = number
algorithm = string
protocol = string
health_delay = number
health_retries = number
health_timeout = number
health_type = string
pool_member_port = string
idle_connection_timeout = optional(number)
security_group = optional(
object({
name = string
rules = list(
object({
name = string
direction = string
source = string
tcp = optional(
object({
port_max = number
port_min = number
})
)
udp = optional(
object({
port_max = number
port_min = number
})
)
icmp = optional(
object({
type = number
code = number
})
)
})
)
})
)
})
))
})
)
| `[]` | no | diff --git a/cos.tf b/cos.tf index 792f99acf..8347dac04 100644 --- a/cos.tf +++ b/cos.tf @@ -141,6 +141,7 @@ resource "ibm_cos_bucket" "buckets" { activity_tracker_crn = activity_tracking.value.activity_tracker_crn read_data_events = activity_tracking.value.read_data_events write_data_events = activity_tracking.value.write_data_events + management_events = activity_tracking.value.management_events } } diff --git a/variables.tf b/variables.tf index 91e1011ea..281ed9eae 100644 --- a/variables.tf +++ b/variables.tf @@ -541,6 +541,7 @@ variable "cos" { activity_tracker_crn = string read_data_events = bool write_data_events = bool + management_events = bool })) metrics_monitoring = optional(object({ metrics_monitoring_crn = string From 0acc39930c5b76ca61807c0a4a9e0e9882db3496 Mon Sep 17 00:00:00 2001 From: "kierra.searle@ibm.com" Date: Tue, 30 Jul 2024 10:08:24 -0400 Subject: [PATCH 2/3] chore: ibm cloud version bump --- examples/one-vpc-one-vsi/version.tf | 2 +- examples/override-example/version.tf | 2 +- patterns/mixed/versions.tf | 2 +- patterns/roks-quickstart/version.tf | 2 +- patterns/roks/versions.tf | 2 +- patterns/vpc/version.tf | 2 +- patterns/vsi-extension/version.tf | 2 +- patterns/vsi-quickstart/version.tf | 2 +- patterns/vsi/versions.tf | 2 +- 9 files changed, 9 insertions(+), 9 deletions(-) diff --git a/examples/one-vpc-one-vsi/version.tf b/examples/one-vpc-one-vsi/version.tf index 61acc7e99..1452e364f 100644 --- a/examples/one-vpc-one-vsi/version.tf +++ b/examples/one-vpc-one-vsi/version.tf @@ -3,7 +3,7 @@ terraform { required_providers { ibm = { source = "IBM-Cloud/ibm" - version = "1.66.0" + version = "1.67.0" } } } diff --git a/examples/override-example/version.tf b/examples/override-example/version.tf index 61acc7e99..1452e364f 100644 --- a/examples/override-example/version.tf +++ b/examples/override-example/version.tf @@ -3,7 +3,7 @@ terraform { required_providers { ibm = { source = "IBM-Cloud/ibm" - version = "1.66.0" + version = "1.67.0" } } } diff --git a/patterns/mixed/versions.tf b/patterns/mixed/versions.tf index b5505b0e3..09f373b85 100644 --- a/patterns/mixed/versions.tf +++ b/patterns/mixed/versions.tf @@ -8,7 +8,7 @@ terraform { required_providers { ibm = { source = "IBM-Cloud/ibm" - version = "1.66.0" + version = "1.67.0" } external = { source = "hashicorp/external" diff --git a/patterns/roks-quickstart/version.tf b/patterns/roks-quickstart/version.tf index d525e26a0..deb0921ca 100644 --- a/patterns/roks-quickstart/version.tf +++ b/patterns/roks-quickstart/version.tf @@ -4,7 +4,7 @@ terraform { # renovate is set up to keep provider version at the latest for all DA solutions ibm = { source = "IBM-Cloud/ibm" - version = "1.66.0" + version = "1.67.0" } } } diff --git a/patterns/roks/versions.tf b/patterns/roks/versions.tf index 1cdd8f9a5..8737e2622 100644 --- a/patterns/roks/versions.tf +++ b/patterns/roks/versions.tf @@ -8,7 +8,7 @@ terraform { required_providers { ibm = { source = "IBM-Cloud/ibm" - version = "1.66.0" + version = "1.67.0" } # tflint-ignore: terraform_unused_required_providers external = { diff --git a/patterns/vpc/version.tf b/patterns/vpc/version.tf index 1cdd8f9a5..8737e2622 100644 --- a/patterns/vpc/version.tf +++ b/patterns/vpc/version.tf @@ -8,7 +8,7 @@ terraform { required_providers { ibm = { source = "IBM-Cloud/ibm" - version = "1.66.0" + version = "1.67.0" } # tflint-ignore: terraform_unused_required_providers external = { diff --git a/patterns/vsi-extension/version.tf b/patterns/vsi-extension/version.tf index 1cdd8f9a5..8737e2622 100644 --- a/patterns/vsi-extension/version.tf +++ b/patterns/vsi-extension/version.tf @@ -8,7 +8,7 @@ terraform { required_providers { ibm = { source = "IBM-Cloud/ibm" - version = "1.66.0" + version = "1.67.0" } # tflint-ignore: terraform_unused_required_providers external = { diff --git a/patterns/vsi-quickstart/version.tf b/patterns/vsi-quickstart/version.tf index d525e26a0..deb0921ca 100644 --- a/patterns/vsi-quickstart/version.tf +++ b/patterns/vsi-quickstart/version.tf @@ -4,7 +4,7 @@ terraform { # renovate is set up to keep provider version at the latest for all DA solutions ibm = { source = "IBM-Cloud/ibm" - version = "1.66.0" + version = "1.67.0" } } } diff --git a/patterns/vsi/versions.tf b/patterns/vsi/versions.tf index 1cdd8f9a5..8737e2622 100644 --- a/patterns/vsi/versions.tf +++ b/patterns/vsi/versions.tf @@ -8,7 +8,7 @@ terraform { required_providers { ibm = { source = "IBM-Cloud/ibm" - version = "1.66.0" + version = "1.67.0" } # tflint-ignore: terraform_unused_required_providers external = { From d9b10607bd0ae5e2d093fa5d779b078e96d0b815 Mon Sep 17 00:00:00 2001 From: "kierra.searle@ibm.com" Date: Tue, 30 Jul 2024 12:41:09 -0400 Subject: [PATCH 3/3] chore: more version bumps --- README.md | 2 +- patterns/roks/module/versions.tf | 2 +- patterns/vpc/module/version.tf | 2 +- patterns/vsi/module/versions.tf | 2 +- version.tf | 2 +- 5 files changed, 5 insertions(+), 5 deletions(-) diff --git a/README.md b/README.md index 8aaa83dde..2f14b2b16 100644 --- a/README.md +++ b/README.md @@ -842,7 +842,7 @@ module "cluster_pattern" { | Name | Version | |------|---------| | [terraform](#requirement\_terraform) | >= 1.3 | -| [ibm](#requirement\_ibm) | >= 1.66.0, < 2.0.0 | +| [ibm](#requirement\_ibm) | >= 1.67.0, < 2.0.0 | | [random](#requirement\_random) | >= 3.4.3, < 4.0.0 | | [time](#requirement\_time) | >= 0.9.1, < 1.0.0 | diff --git a/patterns/roks/module/versions.tf b/patterns/roks/module/versions.tf index 764672e16..50c900da9 100644 --- a/patterns/roks/module/versions.tf +++ b/patterns/roks/module/versions.tf @@ -9,7 +9,7 @@ terraform { # tflint-ignore: terraform_unused_required_providers ibm = { source = "IBM-Cloud/ibm" - version = ">= 1.66.0" + version = ">= 1.67.0" } external = { source = "hashicorp/external" diff --git a/patterns/vpc/module/version.tf b/patterns/vpc/module/version.tf index 764672e16..50c900da9 100644 --- a/patterns/vpc/module/version.tf +++ b/patterns/vpc/module/version.tf @@ -9,7 +9,7 @@ terraform { # tflint-ignore: terraform_unused_required_providers ibm = { source = "IBM-Cloud/ibm" - version = ">= 1.66.0" + version = ">= 1.67.0" } external = { source = "hashicorp/external" diff --git a/patterns/vsi/module/versions.tf b/patterns/vsi/module/versions.tf index 764672e16..50c900da9 100644 --- a/patterns/vsi/module/versions.tf +++ b/patterns/vsi/module/versions.tf @@ -9,7 +9,7 @@ terraform { # tflint-ignore: terraform_unused_required_providers ibm = { source = "IBM-Cloud/ibm" - version = ">= 1.66.0" + version = ">= 1.67.0" } external = { source = "hashicorp/external" diff --git a/version.tf b/version.tf index 154c0a253..99de062a8 100644 --- a/version.tf +++ b/version.tf @@ -8,7 +8,7 @@ terraform { required_providers { ibm = { source = "IBM-Cloud/ibm" - version = ">= 1.66.0, < 2.0.0" + version = ">= 1.67.0, < 2.0.0" } random = { source = "hashicorp/random"