diff --git a/cra-tf-validate-ignore-rules.json b/cra-tf-validate-ignore-rules.json index a41bccfe..b9cf9076 100644 --- a/cra-tf-validate-ignore-rules.json +++ b/cra-tf-validate-ignore-rules.json @@ -11,18 +11,6 @@ "description": "Check whether Flow Logs for VPC are enabled", "ignore_reason": "In order for this rule to pass, Context Based Restrictions (CBRs) support needs to be added to the module (tracking in https://github.ibm.com/GoldenEye/issues/issues/5626). Even after that is added, there is still a dependency on SCC to support scanning for CBR rules. SCC CBR support is being tracked in https://github.ibm.com/project-fortress/pm/issues/11800.", "is_valid": true - }, - { - "scc_rule_id": "rule-8c923215-afdc-41b1-886c-64ce78741f8c", - "description": "Check whether Application Load Balancer for VPC has health check configured when created", - "ignore_reason": "In order for this rule to pass, Context Based Restrictions (CBRs) support needs to be added to the module (tracking in https://github.ibm.com/GoldenEye/issues/issues/5626). Even after that is added, there is still a dependency on SCC to support scanning for CBR rules. SCC CBR support is being tracked in https://github.ibm.com/project-fortress/pm/issues/11800.", - "is_valid": true - }, - { - "scc_rule_id": "rule-65b61a0f-ffdb-41ba-873d-ad329e7fc0ee", - "description": "Check whether Application Load Balancer for VPC is configured to convert HTTP client requests to HTTPS", - "ignore_reason": "In order for this rule to pass, Context Based Restrictions (CBRs) support needs to be added to the module (tracking in https://github.ibm.com/GoldenEye/issues/issues/5626). Even after that is added, there is still a dependency on SCC to support scanning for CBR rules. SCC CBR support is being tracked in https://github.ibm.com/project-fortress/pm/issues/11800.", - "is_valid": true } ] } diff --git a/ibm_catalog.json b/ibm_catalog.json index 32723278..72cc3e6d 100644 --- a/ibm_catalog.json +++ b/ibm_catalog.json @@ -378,7 +378,7 @@ "key": "vsi_ssh_key_data" }, { - "key": "application_load_balancer" + "key": "network_load_balancer" }, { "key": "ssh_public_key" @@ -561,7 +561,7 @@ { "diagram": { "caption": "Power Virtual Server with VPC landing zone 'Standard Landscape' variation", - "url": "https://raw.githubusercontent.com/terraform-ibm-modules/terraform-ibm-powervs-infrastructure/refs/tags/v8.5.6/reference-architectures/standard/deploy-arch-ibm-pvs-inf-standard.svg", + "url": "https://raw.githubusercontent.com/terraform-ibm-modules/terraform-ibm-powervs-infrastructure/refs/tags/v9.0.0/reference-architectures/standard/deploy-arch-ibm-pvs-inf-standard.svg", "type": "image/svg+xml" }, "description": "The Power Virtual Server with VPC landing zone as variation 'Create a new architecture' deploys VPC services and a Power Virtual Server workspace and interconnects them.\n \nRequired and optional management components are configured." @@ -1025,7 +1025,7 @@ "key": "vsi_names" }, { - "key": "application_load_balancer" + "key": "network_load_balancer" }, { "key": "ssh_public_key" @@ -1220,7 +1220,7 @@ { "diagram": { "caption": "Power Virtual Server with VPC landing zone 'Quickstart' variation", - "url": "https://raw.githubusercontent.com/terraform-ibm-modules/terraform-ibm-powervs-infrastructure/refs/tags/v8.5.6/reference-architectures/standard-plus-vsi/deploy-arch-ibm-pvs-inf-standard-plus-vsi.svg", + "url": "https://raw.githubusercontent.com/terraform-ibm-modules/terraform-ibm-powervs-infrastructure/refs/tags/v9.0.0/reference-architectures/standard-plus-vsi/deploy-arch-ibm-pvs-inf-standard-plus-vsi.svg", "type": "image/svg+xml" }, "description": "The Power Virtual Server with VPC landing zone as 'Quickstart' variation of 'Create a new architecture' option deploys VPC services and a Power Virtual Server workspace and interconnects them. It also creates one Power virtual server instance of chosen t-shirt size or custom configuration.\n \nRequired and optional management components are configured." @@ -1444,7 +1444,7 @@ "key": "vsi_ssh_key_data" }, { - "key": "application_load_balancer" + "key": "network_load_balancer" }, { "key": "ssh_public_key" @@ -1548,7 +1548,7 @@ { "diagram": { "caption": "Power Virtual Server with VPC landing zone 'Extend Standard Landscape' variation", - "url": "https://raw.githubusercontent.com/terraform-ibm-modules/terraform-ibm-powervs-infrastructure/refs/tags/v8.5.6/reference-architectures/standard-extend/deploy-arch-ibm-pvs-inf-standard-extend.svg", + "url": "https://raw.githubusercontent.com/terraform-ibm-modules/terraform-ibm-powervs-infrastructure/refs/tags/v9.0.0/reference-architectures/standard-extend/deploy-arch-ibm-pvs-inf-standard-extend.svg", "type": "image/svg+xml" }, "description": "The Power Virtual Server with VPC landing zone as variation 'Extend Power Virtual Server with VPC landing zone' creates an additional Power Virtual Server workspace and connects it with already created Power Virtual Server with VPC landing zone. It builds on existing Power Virtual Server with VPC landing zone deployed as a variation 'Create a new architecture'." diff --git a/modules/powervs-vpc-landing-zone/README.md b/modules/powervs-vpc-landing-zone/README.md index fb247460..c2d35ec6 100644 --- a/modules/powervs-vpc-landing-zone/README.md +++ b/modules/powervs-vpc-landing-zone/README.md @@ -9,7 +9,7 @@ This module provisions the following resources in IBM Cloud: - Optional VSI for Monitoring host - Optional [Client to site VPN server](https://cloud.ibm.com/docs/vpc?topic=vpc-vpn-client-to-site-overview) - Optional [File storage share](https://cloud.ibm.com/docs/vpc?topic=vpc-file-storage-create&interface=ui) - - Optional [Application load balancer](https://cloud.ibm.com/docs/vpc?topic=vpc-load-balancers&interface=ui) + - Optional [Network load balancer](https://cloud.ibm.com/docs/vpc?group=network-load-balancer) - IBM Cloud Object storage(COS) Virtual Private endpoint gateway(VPE) - IBM Cloud Object storage(COS) Instance and buckets - VPC flow logs @@ -118,14 +118,19 @@ Creates VPC Landing Zone | Performs VPC VSI OS Config | Creates PowerVS Infrastr | [scc\_wp\_instance](#module\_scc\_wp\_instance) | terraform-ibm-modules/scc-workload-protection/ibm | 1.10.13 | | [secrets\_manager\_group](#module\_secrets\_manager\_group) | terraform-ibm-modules/secrets-manager-secret-group/ibm | 1.3.12 | | [secrets\_manager\_private\_certificate](#module\_secrets\_manager\_private\_certificate) | terraform-ibm-modules/secrets-manager-private-cert/ibm | 1.4.3 | -| [vpc\_file\_share\_alb](#module\_vpc\_file\_share\_alb) | ./submodules/fileshare-alb | n/a | ### Resources | Name | Type | |------|------| +| [ibm_is_lb.file_share_nlb](https://registry.terraform.io/providers/IBM-Cloud/ibm/latest/docs/resources/is_lb) | resource | +| [ibm_is_lb_listener.nfs_front_end_listener](https://registry.terraform.io/providers/IBM-Cloud/ibm/latest/docs/resources/is_lb_listener) | resource | +| [ibm_is_lb_pool.nfs_backend_pool](https://registry.terraform.io/providers/IBM-Cloud/ibm/latest/docs/resources/is_lb_pool) | resource | +| [ibm_is_share.file_share_nfs](https://registry.terraform.io/providers/IBM-Cloud/ibm/latest/docs/resources/is_share) | resource | +| [ibm_is_share_mount_target.mount_target_nfs](https://registry.terraform.io/providers/IBM-Cloud/ibm/latest/docs/resources/is_share_mount_target) | resource | | [ibm_is_vpc_address_prefix.vpn_address_prefix](https://registry.terraform.io/providers/IBM-Cloud/ibm/latest/docs/resources/is_vpc_address_prefix) | resource | -| [ibm_is_vpc_routing_table.transit](https://registry.terraform.io/providers/IBM-Cloud/ibm/latest/docs/resources/is_vpc_routing_table) | resource | +| [ibm_is_vpc_routing_table.routing_table](https://registry.terraform.io/providers/IBM-Cloud/ibm/latest/docs/resources/is_vpc_routing_table) | resource | +| [ibm_is_vpc_routing_table_route.nfs_route](https://registry.terraform.io/providers/IBM-Cloud/ibm/latest/docs/resources/is_vpc_routing_table_route) | resource | | [ibm_resource_instance.monitoring_instance](https://registry.terraform.io/providers/IBM-Cloud/ibm/latest/docs/resources/resource_instance) | resource | | [ibm_resource_instance.secrets_manager](https://registry.terraform.io/providers/IBM-Cloud/ibm/latest/docs/resources/resource_instance) | resource | @@ -152,7 +157,7 @@ Creates VPC Landing Zone | Performs VPC VSI OS Config | Creates PowerVS Infrastr | [powervs\_custom\_image\_cos\_service\_credentials](#input\_powervs\_custom\_image\_cos\_service\_credentials) | Service credentials for the Cloud Object Storage bucket containing the custom PowerVS images. The bucket must have HMAC credentials enabled. Click [here](https://cloud.ibm.com/docs/cloud-object-storage?topic=cloud-object-storage-service-credentials) for a json example of a service credential. | `string` | `null` | no | | [powervs\_custom\_images](#input\_powervs\_custom\_images) | Optionally import up to three custom images from Cloud Object Storage into PowerVS workspace. Requires 'powervs\_custom\_image\_cos\_configuration' to be set. image\_name: string, must be unique. Name of image inside PowerVS workspace. file\_name: string, object key of image inside COS bucket. storage\_tier: string, storage tier which image will be stored in after import. Supported values: tier0, tier1, tier3, tier5k. sap\_type: optional string, Supported values: null, Hana, Netweaver, use null for non-SAP image. |
object({
powervs_custom_image1 = object({
image_name = string
file_name = string
storage_tier = string
sap_type = optional(string)
}),
powervs_custom_image2 = object({
image_name = string
file_name = string
storage_tier = string
sap_type = optional(string)
}),
powervs_custom_image3 = object({
image_name = string
file_name = string
storage_tier = string
sap_type = optional(string)
})
}) | {
"powervs_custom_image1": {
"file_name": "",
"image_name": "",
"sap_type": null,
"storage_tier": ""
},
"powervs_custom_image2": {
"file_name": "",
"image_name": "",
"sap_type": null,
"storage_tier": ""
},
"powervs_custom_image3": {
"file_name": "",
"image_name": "",
"sap_type": null,
"storage_tier": ""
}
} | no |
| [powervs\_management\_network](#input\_powervs\_management\_network) | Name of the IBM Cloud PowerVS management subnet and CIDR to create. | object({
name = string
cidr = string
}) | {
"cidr": "10.51.0.0/24",
"name": "mgmt_net"
} | no |
-| [powervs\_resource\_group\_name](#input\_powervs\_resource\_group\_name) | Existing IBM Cloud resource group name. | `string` | n/a | yes |
+| [powervs\_resource\_group\_name](#input\_powervs\_resource\_group\_name) | Existing IBM Cloud resource group name. Used for PowerVS related resources. If null, ocp-rg is created and used for TGW, VPC, and PowerVS resources. | `string` | n/a | yes |
| [powervs\_zone](#input\_powervs\_zone) | IBM Cloud data center location where IBM PowerVS infrastructure will be created. | `string` | n/a | yes |
| [prefix](#input\_prefix) | A unique identifier for resources. Must begin with a lowercase letter and end with a lowercase letter or number. Must contain only lowercase letters, numbers, and - characters. This prefix will be prepended to any resources provisioned by this template. Prefixes must be 16 or fewer characters. | `string` | n/a | yes |
| [sm\_service\_plan](#input\_sm\_service\_plan) | The service/pricing plan to use when provisioning a new Secrets Manager instance. Allowed values: `standard` and `trial`. Only used if `existing_sm_instance_guid` is set to null. | `string` | `"standard"` | no |
@@ -168,12 +173,13 @@ Creates VPC Landing Zone | Performs VPC VSI OS Config | Creates PowerVS Infrastr
|------|-------------|
| [access\_host\_or\_ip](#output\_access\_host\_or\_ip) | Access host(jump/bastion) for created PowerVS infrastructure. |
| [ansible\_host\_or\_ip](#output\_ansible\_host\_or\_ip) | Central Ansible node private IP address. |
-| [application\_load\_balancer](#output\_application\_load\_balancer) | Details of application load balancer. |
| [dns\_host\_or\_ip](#output\_dns\_host\_or\_ip) | DNS forwarder host for created PowerVS infrastructure. |
| [kms\_key\_map](#output\_kms\_key\_map) | Map of ids and keys for KMS keys created |
| [monitoring\_instance](#output\_monitoring\_instance) | Details of the IBM Cloud Monitoring Instance: CRN, location, guid, monitoring\_host\_ip. |
+| [network\_load\_balancer](#output\_network\_load\_balancer) | Details of network load balancer. |
| [network\_services\_config](#output\_network\_services\_config) | Complete configuration of network management services. |
| [nfs\_host\_or\_ip\_path](#output\_nfs\_host\_or\_ip\_path) | NFS host for created PowerVS infrastructure. |
+| [nlb\_nfs\_network\_services\_ready](#output\_nlb\_nfs\_network\_services\_ready) | Output value that always returns true but depends on nfs, nlb, and network services playbook. Used to create implicit dependency for PowerVS initialization so PowerVS instance creation can start in parallel with nfs, nlb, and network services. |
| [ntp\_host\_or\_ip](#output\_ntp\_host\_or\_ip) | NTP host for created PowerVS infrastructure. |
| [powervs\_backup\_subnet](#output\_powervs\_backup\_subnet) | Name, ID and CIDR of backup private network in created PowerVS infrastructure. |
| [powervs\_images](#output\_powervs\_images) | Object containing imported PowerVS image names and image ids. |
diff --git a/modules/powervs-vpc-landing-zone/client2sitevpn.tf b/modules/powervs-vpc-landing-zone/client2sitevpn.tf
index c0893621..16f5dea9 100644
--- a/modules/powervs-vpc-landing-zone/client2sitevpn.tf
+++ b/modules/powervs-vpc-landing-zone/client2sitevpn.tf
@@ -141,17 +141,6 @@ module "client_to_site_vpn" {
vpn_server_routes = local.vpn_server_routes
}
-# Allows VPN Server <=> Transit Gateway traffic
-resource "ibm_is_vpc_routing_table" "transit" {
- provider = ibm.ibm-is
- count = var.client_to_site_vpn.enable ? 1 : 0
-
- vpc = [for vpc in module.landing_zone.vpc_data : vpc.vpc_id if vpc.vpc_name == "${var.prefix}-edge"][0]
- name = "${var.prefix}-route-table-vpn-server-transit"
- route_transit_gateway_ingress = true
- accept_routes_from_resource_type = ["vpn_server"]
-}
-
# Allows VPN Clients <=> Transit Gateway traffic
resource "ibm_is_vpc_address_prefix" "vpn_address_prefix" {
provider = ibm.ibm-is
diff --git a/modules/powervs-vpc-landing-zone/fileshare-nlb.tf b/modules/powervs-vpc-landing-zone/fileshare-nlb.tf
new file mode 100644
index 00000000..65276683
--- /dev/null
+++ b/modules/powervs-vpc-landing-zone/fileshare-nlb.tf
@@ -0,0 +1,111 @@
+#####################################################
+# File share for NFS and Network Load Balancer
+#####################################################
+
+locals {
+ vpc_zone = "${lookup(local.ibm_powervs_zone_cloud_region_map, var.powervs_zone, null)}-1"
+ resource_group_id = module.landing_zone.resource_group_data["${var.prefix}-${local.second_rg_name}"]
+ file_share_name = "${var.prefix}-file-share-nfs"
+ file_share_size = var.nfs_server_config.size
+ file_share_iops = var.nfs_server_config.iops
+ file_share_mount_target_name = "${var.prefix}-nfs"
+ file_share_subnet_id = [for subnet in module.landing_zone.subnet_data : subnet.id if subnet.name == "${var.prefix}-edge-vsi-edge-zone-1"][0]
+ file_share_security_group_ids = [for security_group in module.landing_zone.vpc_data[0].vpc_data.security_group : security_group.group_id if security_group.group_name == "network-services-sg"]
+ nlb_name = "${var.prefix}-file-share-nlb"
+ nlb_subnet_ids = [for subnet in module.landing_zone.subnet_data : subnet.id if subnet.name == "${var.prefix}-edge-vsi-edge-zone-1"]
+ nlb_security_group_ids = [for security_group in module.landing_zone.vpc_data[0].vpc_data.security_group : security_group.group_id if security_group.group_name == "network-services-sg"]
+}
+
+resource "ibm_is_share" "file_share_nfs" {
+ provider = ibm.ibm-is
+ count = var.configure_nfs_server ? 1 : 0
+
+ name = local.file_share_name
+ size = local.file_share_size
+ profile = "dp2"
+ access_control_mode = "security_group"
+ iops = local.file_share_iops
+ zone = local.vpc_zone
+ resource_group = local.resource_group_id
+}
+
+resource "ibm_is_share_mount_target" "mount_target_nfs" {
+ provider = ibm.ibm-is
+ count = var.configure_nfs_server ? 1 : 0
+
+ name = local.file_share_mount_target_name
+ share = ibm_is_share.file_share_nfs[0].id
+ virtual_network_interface {
+ name = local.file_share_mount_target_name
+ resource_group = local.resource_group_id
+ subnet = local.file_share_subnet_id
+ security_groups = local.file_share_security_group_ids
+ }
+}
+
+resource "ibm_is_lb" "file_share_nlb" {
+ provider = ibm.ibm-is
+ count = var.configure_nfs_server ? 1 : 0
+
+ name = local.nlb_name
+ resource_group = local.resource_group_id
+ type = "private"
+ subnets = local.nlb_subnet_ids
+ profile = "network-fixed"
+ security_groups = local.nlb_security_group_ids
+ route_mode = true
+}
+
+resource "ibm_is_lb_pool" "nfs_backend_pool" {
+ provider = ibm.ibm-is
+ count = var.configure_nfs_server ? 1 : 0
+
+ name = "nfs-backend-pool"
+ lb = ibm_is_lb.file_share_nlb[0].id
+ algorithm = "round_robin"
+ protocol = "tcp"
+ health_type = "tcp"
+ health_delay = 5
+ health_retries = 2
+ health_timeout = 2
+ health_monitor_port = 2049
+ failsafe_policy {
+ action = "bypass"
+ }
+}
+
+resource "ibm_is_lb_listener" "nfs_front_end_listener" {
+ provider = ibm.ibm-is
+ count = var.configure_nfs_server ? 1 : 0
+
+ lb = ibm_is_lb.file_share_nlb[0].id
+ default_pool = ibm_is_lb_pool.nfs_backend_pool[0].id
+ protocol = "tcp"
+}
+
+resource "ibm_is_vpc_routing_table_route" "nfs_route" {
+ provider = ibm.ibm-is
+ count = var.configure_nfs_server ? 1 : 0
+
+ name = "nfs-route"
+ vpc = ibm_is_share_mount_target.mount_target_nfs[0].vpc
+ routing_table = ibm_is_vpc_routing_table.routing_table[0].routing_table
+ zone = local.vpc_zone
+ destination = "${split(":", ibm_is_share_mount_target.mount_target_nfs[0].mount_path)[0]}/32"
+ action = "deliver"
+ advertise = false
+ next_hop = ibm_is_lb.file_share_nlb[0].private_ips[0]
+}
+
+locals {
+ nfs_host_or_ip_path = var.configure_nfs_server ? ibm_is_share_mount_target.mount_target_nfs[0].mount_path : ""
+ file_share_nlb = var.configure_nfs_server ? {
+ name = ibm_is_lb.file_share_nlb[0].name
+ id = ibm_is_lb.file_share_nlb[0].id
+ private_ips = [for private_ip in ibm_is_lb.file_share_nlb[0].private_ip : private_ip.address]
+ } : {
+ name = ""
+ id = ""
+ private_ips = []
+ }
+}
diff --git a/modules/powervs-vpc-landing-zone/locals.tf b/modules/powervs-vpc-landing-zone/locals.tf
index 91609cf0..08227e43 100644
--- a/modules/powervs-vpc-landing-zone/locals.tf
+++ b/modules/powervs-vpc-landing-zone/locals.tf
@@ -52,5 +52,4 @@ locals {
validate_json_msg = "Wrong JSON preset used. Please use one of the JSON preset supported for Power."
# tflint-ignore: terraform_unused_declarations
validate_json_chk = regex("^${local.validate_json_msg}$", (local.valid_json_used ? local.validate_json_msg : ""))
-
}
diff --git a/modules/powervs-vpc-landing-zone/main.tf b/modules/powervs-vpc-landing-zone/main.tf
index 3c9bf66a..788a25bc 100644
--- a/modules/powervs-vpc-landing-zone/main.tf
+++ b/modules/powervs-vpc-landing-zone/main.tf
@@ -2,7 +2,6 @@
# VPC Landing Zone module
#####################################################
locals {
-
external_access_ip = var.external_access_ip != null && var.external_access_ip != "" ? length(regexall("/", var.external_access_ip)) > 0 ? var.external_access_ip : "${var.external_access_ip}/32" : ""
# Openshift IPI requires VPC resources, PowerVS resources, and TGW to be in the same resource group
second_rg_name = var.powervs_resource_group_name != null ? "slz-edge-rg" : "ocp-rg"
@@ -21,6 +20,7 @@ locals {
)
}
+
module "landing_zone" {
source = "terraform-ibm-modules/landing-zone/ibm//patterns//vsi//module"
version = "8.4.3"
@@ -32,148 +32,19 @@ module "landing_zone" {
override_json_string = local.override_json_string
}
-#####################################################
-# IBM Cloud Monitoring Instance module
-#####################################################
-
-resource "ibm_resource_instance" "monitoring_instance" {
- count = var.enable_monitoring && var.existing_monitoring_instance_crn == null ? 1 : 0
- provider = ibm.ibm-is
- name = "${var.prefix}-monitoring-instance"
- location = lookup(local.ibm_powervs_zone_cloud_region_map, var.powervs_zone, null)
- service = "sysdig-monitor"
- plan = "graduated-tier"
- resource_group_id = module.landing_zone.resource_group_data["${var.prefix}-slz-service-rg"]
- tags = var.tags
-}
-
-locals {
- monitoring_instance = {
- enable = var.enable_monitoring
- crn = var.enable_monitoring && var.existing_monitoring_instance_crn == null ? resource.ibm_resource_instance.monitoring_instance[0].crn : var.existing_monitoring_instance_crn != null ? var.existing_monitoring_instance_crn : ""
- location = var.enable_monitoring && var.existing_monitoring_instance_crn == null ? resource.ibm_resource_instance.monitoring_instance[0].location : var.existing_monitoring_instance_crn != null ? split(":", var.existing_monitoring_instance_crn)[5] : ""
- guid = var.enable_monitoring && var.existing_monitoring_instance_crn == null ? resource.ibm_resource_instance.monitoring_instance[0].guid : var.existing_monitoring_instance_crn != null ? split(":", var.existing_monitoring_instance_crn)[7] : ""
- monitoring_host_ip = local.monitoring_vsi_ip
- }
-}
-
-#################################################
-# SCC Workload Protection Instance module
-#################################################
-
-# Create new App Config instance
-module "app_config" {
- source = "terraform-ibm-modules/app-configuration/ibm"
- version = "1.8.12"
- providers = { ibm = ibm.ibm-is }
- count = var.enable_scc_wp ? 1 : 0
-
- region = lookup(local.ibm_powervs_zone_cloud_region_map, var.powervs_zone, null)
- resource_group_id = module.landing_zone.resource_group_data["${var.prefix}-slz-service-rg"]
- app_config_plan = "basic"
- app_config_name = "${var.prefix}-app-config"
- app_config_tags = var.tags
- enable_config_aggregator = true
- config_aggregator_trusted_profile_name = "${var.prefix}-app-config-tp"
-}
-
-module "scc_wp_instance" {
- source = "terraform-ibm-modules/scc-workload-protection/ibm"
- version = "1.10.13"
- providers = { ibm = ibm.ibm-is }
- count = var.enable_scc_wp ? 1 : 0
-
- name = "${var.prefix}-scc-wp-instance"
- region = lookup(local.ibm_powervs_zone_cloud_region_map, var.powervs_zone, null)
- resource_group_id = module.landing_zone.resource_group_data["${var.prefix}-slz-service-rg"]
- scc_wp_service_plan = "graduated-tier"
- scc_workload_protection_trusted_profile_name = "${var.prefix}-workload-protection-trusted-profile"
- resource_tags = var.tags
- resource_key_name = "${var.prefix}-scc-wp-manager-key"
- resource_key_tags = var.tags
- cloud_monitoring_instance_crn = local.monitoring_instance.crn != "" ? local.monitoring_instance.crn : null
- app_config_crn = var.enable_scc_wp ? module.app_config[0].app_config_crn : null
-}
-
-locals {
- scc_wp_instance = {
- enable = var.enable_scc_wp
- guid = var.enable_scc_wp ? module.scc_wp_instance[0].guid : "",
- access_key = var.enable_scc_wp ? nonsensitive(module.scc_wp_instance[0].access_key) : "",
- api_endpoint = var.enable_scc_wp ? nonsensitive(replace(module.scc_wp_instance[0].api_endpoint, "https://", "https://private.")) : "",
- ingestion_endpoint = var.enable_scc_wp ? nonsensitive(replace(module.scc_wp_instance[0].ingestion_endpoint, "ingest.", "ingest.private.")) : ""
- }
-}
-
-###########################################################
-# File share for NFS and Application Load Balancer module
-###########################################################
-
-module "vpc_file_share_alb" {
- source = "./submodules/fileshare-alb"
- providers = { ibm = ibm.ibm-is }
- count = var.configure_nfs_server ? 1 : 0
-
- vpc_zone = "${lookup(local.ibm_powervs_zone_cloud_region_map, var.powervs_zone, null)}-1"
- resource_group_id = module.landing_zone.resource_group_data["${var.prefix}-${local.second_rg_name}"]
- file_share_name = "${var.prefix}-file-share-nfs"
- file_share_size = var.nfs_server_config.size
- file_share_iops = var.nfs_server_config.iops
- file_share_mount_target_name = "${var.prefix}-nfs"
- file_share_subnet_id = [for subnet in module.landing_zone.subnet_data : subnet.id if subnet.name == "${var.prefix}-edge-vsi-edge-zone-1"][0]
- file_share_security_group_ids = [for security_group in module.landing_zone.vpc_data[0].vpc_data.security_group : security_group.group_id if security_group.group_name == "network-services-sg"]
- alb_name = "${var.prefix}-file-share-alb"
- alb_subnet_ids = [for subnet in module.landing_zone.subnet_data : subnet.id if subnet.name == "${var.prefix}-edge-vsi-edge-zone-1"]
- alb_security_group_ids = [for security_group in module.landing_zone.vpc_data[0].vpc_data.security_group : security_group.group_id if security_group.group_name == "network-services-sg"]
-
-}
-
-###########################################################
-# PowerVS Workspace module
-###########################################################
-
-locals {
- powervs_custom_image1 = (
- var.powervs_custom_images.powervs_custom_image1.image_name == "" &&
- var.powervs_custom_images.powervs_custom_image1.file_name == "" &&
- var.powervs_custom_images.powervs_custom_image1.storage_tier == ""
- ) ? null : var.powervs_custom_images.powervs_custom_image1
- powervs_custom_image2 = (
- var.powervs_custom_images.powervs_custom_image2.image_name == "" &&
- var.powervs_custom_images.powervs_custom_image2.file_name == "" &&
- var.powervs_custom_images.powervs_custom_image2.storage_tier == ""
- ) ? null : var.powervs_custom_images.powervs_custom_image2
- powervs_custom_image3 = (
- var.powervs_custom_images.powervs_custom_image3.image_name == "" &&
- var.powervs_custom_images.powervs_custom_image3.file_name == "" &&
- var.powervs_custom_images.powervs_custom_image3.storage_tier == ""
- ) ? null : var.powervs_custom_images.powervs_custom_image3
- powervs_custom_image_cos_configuration = (
- var.powervs_custom_image_cos_configuration.bucket_name == "" &&
- var.powervs_custom_image_cos_configuration.bucket_access == "" &&
- var.powervs_custom_image_cos_configuration.bucket_region == ""
- ) ? null : var.powervs_custom_image_cos_configuration
-}
-module "powervs_workspace" {
- source = "terraform-ibm-modules/powervs-workspace/ibm"
- version = "3.2.0"
+# ###########################################################
+# # Routing table used by NLB for NFS and VPN
+# ###########################################################
- providers = { ibm = ibm.ibm-pi }
+resource "ibm_is_vpc_routing_table" "routing_table" {
+ provider = ibm.ibm-is
+ count = var.configure_nfs_server || var.client_to_site_vpn.enable ? 1 : 0
- pi_zone = var.powervs_zone
- pi_resource_group_name = var.powervs_resource_group_name
- pi_workspace_name = "${var.prefix}-${var.powervs_zone}-power-workspace"
- pi_ssh_public_key = { "name" = "${var.prefix}-${var.powervs_zone}-pvs-ssh-key", value = var.ssh_public_key }
- pi_private_subnet_1 = var.powervs_management_network
- pi_private_subnet_2 = var.powervs_backup_network
- pi_transit_gateway_connection = { "enable" : true, "transit_gateway_id" : module.landing_zone.transit_gateway_data.id }
- pi_tags = var.tags
- pi_custom_image1 = local.powervs_custom_image1
- pi_custom_image2 = local.powervs_custom_image2
- pi_custom_image3 = local.powervs_custom_image3
- pi_custom_image_cos_configuration = local.powervs_custom_image_cos_configuration
- pi_custom_image_cos_service_credentials = var.powervs_custom_image_cos_service_credentials
+ name = "${var.prefix}-routing"
+ vpc = [for vpc in module.landing_zone.vpc_data : vpc.vpc_id if vpc.vpc_name == "${var.prefix}-edge"][0]
+ route_transit_gateway_ingress = true
+ accept_routes_from_resource_type = var.client_to_site_vpn.enable ? ["vpn_server"] : []
}
@@ -195,19 +66,19 @@ locals {
}
nfs = {
"enable" = var.configure_nfs_server
- "nfs_server_path" = var.configure_nfs_server ? module.vpc_file_share_alb[0].nfs_host_or_ip_path : ""
+ "nfs_server_path" = var.configure_nfs_server ? ibm_is_share_mount_target.mount_target_nfs[0].mount_path : ""
"nfs_client_path" = var.configure_nfs_server ? var.nfs_server_config.mount_path : ""
"opts" = "sec=sys,nfsvers=4.1,nofail"
"fstype" = "nfs4"
}
}
-
}
+
module "configure_network_services" {
source = "./submodules/ansible"
- depends_on = [module.vpc_file_share_alb]
+ depends_on = [ibm_is_share_mount_target.mount_target_nfs]
bastion_host_ip = local.access_host_or_ip
ansible_host_or_ip = local.network_services_vsi_ip
@@ -234,62 +105,3 @@ module "configure_network_services" {
dst_inventory_file_name = "network-services-instance-inventory"
inventory_template_vars = { "host_or_ip" : local.network_services_vsi_ip }
}
-
-
-module "configure_monitoring_host" {
-
- source = "./submodules/ansible"
- depends_on = [module.configure_network_services]
- count = var.enable_monitoring ? 1 : 0
-
- bastion_host_ip = local.access_host_or_ip
- ansible_host_or_ip = local.network_services_vsi_ip
- ssh_private_key = var.ssh_private_key
- configure_ansible_host = false
-
- src_script_template_name = "configure-monitoring-instance/ansible_exec.sh.tftpl"
- dst_script_file_name = "monitoring-instance.sh"
-
- src_playbook_template_name = "configure-monitoring-instance/playbook-configure-monitoring-instance.yml.tftpl"
- dst_playbook_file_name = "monitoring-instance-playbook.yml"
- playbook_template_vars = {
- "client_config" : jsonencode(
- {
- "nfs" : local.network_services_config.nfs
- "dns" : { enable = var.configure_dns_forwarder, dns_server_ip = local.network_services_vsi_ip }
- "ntp" : { enable = var.configure_ntp_forwarder, ntp_server_ip = local.network_services_vsi_ip }
- })
- }
-
- src_inventory_template_name = "inventory.tftpl"
- dst_inventory_file_name = "monitoring-instance-inventory"
- inventory_template_vars = { "host_or_ip" : local.monitoring_vsi_ip }
-}
-
-
-module "configure_scc_wp_agent" {
-
- source = "./submodules/ansible"
- depends_on = [module.configure_network_services, module.configure_monitoring_host]
- count = var.enable_scc_wp ? 1 : 0
-
- bastion_host_ip = local.access_host_or_ip
- ansible_host_or_ip = local.network_services_vsi_ip
- ssh_private_key = var.ssh_private_key
- ansible_vault_password = var.ansible_vault_password
- configure_ansible_host = false
-
- src_script_template_name = "configure-scc-wp-agent/ansible_configure_scc_wp_agent.sh.tftpl"
- dst_script_file_name = "${var.prefix}-configure_scc_wp_agent.sh"
-
- src_playbook_template_name = "configure-scc-wp-agent/playbook-configure-scc-wp-agent-linux.yml.tftpl"
- dst_playbook_file_name = "${var.prefix}-playbook-configure-scc-wp-agent.yml"
- playbook_template_vars = {
- COLLECTOR_ENDPOINT : local.scc_wp_instance.ingestion_endpoint,
- API_ENDPOINT : local.scc_wp_instance.api_endpoint,
- ACCESS_KEY : local.scc_wp_instance.access_key
- }
- src_inventory_template_name = "inventory.tftpl"
- dst_inventory_file_name = "${var.prefix}-scc-wp-inventory"
- inventory_template_vars = { "host_or_ip" : join("\n", [for vsi in module.landing_zone.vsi_list : vsi["ipv4_address"]]) }
-}
diff --git a/modules/powervs-vpc-landing-zone/monitoring.tf b/modules/powervs-vpc-landing-zone/monitoring.tf
new file mode 100644
index 00000000..2afe6ae5
--- /dev/null
+++ b/modules/powervs-vpc-landing-zone/monitoring.tf
@@ -0,0 +1,59 @@
+#####################################################
+# IBM Cloud Monitoring Instance module
+#####################################################
+
+resource "ibm_resource_instance" "monitoring_instance" {
+ count = var.enable_monitoring && var.existing_monitoring_instance_crn == null ? 1 : 0
+ provider = ibm.ibm-is
+ name = "${var.prefix}-monitoring-instance"
+ location = lookup(local.ibm_powervs_zone_cloud_region_map, var.powervs_zone, null)
+ service = "sysdig-monitor"
+ plan = "graduated-tier"
+ resource_group_id = module.landing_zone.resource_group_data["${var.prefix}-slz-service-rg"]
+ tags = var.tags
+}
+
+locals {
+ monitoring_instance = {
+ enable = var.enable_monitoring
+ crn = var.enable_monitoring && var.existing_monitoring_instance_crn == null ? resource.ibm_resource_instance.monitoring_instance[0].crn : var.existing_monitoring_instance_crn != null ? var.existing_monitoring_instance_crn : ""
+ location = var.enable_monitoring && var.existing_monitoring_instance_crn == null ? resource.ibm_resource_instance.monitoring_instance[0].location : var.existing_monitoring_instance_crn != null ? split(":", var.existing_monitoring_instance_crn)[5] : ""
+ guid = var.enable_monitoring && var.existing_monitoring_instance_crn == null ? resource.ibm_resource_instance.monitoring_instance[0].guid : var.existing_monitoring_instance_crn != null ? split(":", var.existing_monitoring_instance_crn)[7] : ""
+ monitoring_host_ip = local.monitoring_vsi_ip
+ }
+}
+
+#####################################################
+# Configure monitoring VSI
+# VSI is created in landing zone preset
+#####################################################
+
+module "configure_monitoring_host" {
+
+ source = "./submodules/ansible"
+ depends_on = [module.configure_network_services]
+ count = var.enable_monitoring ? 1 : 0
+
+ bastion_host_ip = local.access_host_or_ip
+ ansible_host_or_ip = local.network_services_vsi_ip
+ ssh_private_key = var.ssh_private_key
+ configure_ansible_host = false
+
+ src_script_template_name = "configure-monitoring-instance/ansible_exec.sh.tftpl"
+ dst_script_file_name = "monitoring-instance.sh"
+
+ src_playbook_template_name = "configure-monitoring-instance/playbook-configure-monitoring-instance.yml.tftpl"
+ dst_playbook_file_name = "monitoring-instance-playbook.yml"
+ playbook_template_vars = {
+ "client_config" : jsonencode(
+ {
+ "nfs" : local.network_services_config.nfs
+ "dns" : { enable = var.configure_dns_forwarder, dns_server_ip = local.network_services_vsi_ip }
+ "ntp" : { enable = var.configure_ntp_forwarder, ntp_server_ip = local.network_services_vsi_ip }
+ })
+ }
+
+ src_inventory_template_name = "inventory.tftpl"
+ dst_inventory_file_name = "monitoring-instance-inventory"
+ inventory_template_vars = { "host_or_ip" : local.monitoring_vsi_ip }
+}
diff --git a/modules/powervs-vpc-landing-zone/outputs.tf b/modules/powervs-vpc-landing-zone/outputs.tf
index b726858f..a6b1efd9 100644
--- a/modules/powervs-vpc-landing-zone/outputs.tf
+++ b/modules/powervs-vpc-landing-zone/outputs.tf
@@ -62,9 +62,9 @@ output "resource_group_data" {
value = module.landing_zone.resource_group_data
}
-output "application_load_balancer" {
- description = "Details of application load balancer."
- value = var.configure_nfs_server ? module.vpc_file_share_alb[0].file_share_alb : { name = "", id = "", private_ips = [] }
+output "network_load_balancer" {
+ description = "Details of network load balancer."
+ value = var.configure_nfs_server ? local.file_share_nlb : { name = "", id = "", private_ips = [] }
}
output "access_host_or_ip" {
@@ -89,7 +89,7 @@ output "ntp_host_or_ip" {
output "nfs_host_or_ip_path" {
description = "NFS host for created PowerVS infrastructure."
- value = var.configure_nfs_server ? module.vpc_file_share_alb[0].nfs_host_or_ip_path : ""
+ value = var.configure_nfs_server ? local.nfs_host_or_ip_path : ""
}
output "ansible_host_or_ip" {
@@ -168,3 +168,8 @@ output "scc_wp_instance" {
description = "Details of the Security and Compliance Center Workload Protection Instance: guid, access key, api_endpoint, ingestion_endpoint."
value = local.scc_wp_instance
}
+
+output "nlb_nfs_network_services_ready" {
+ description = "Output value that always returns true but depends on nfs, nlb, and network services playbook. Used to create implicit dependency for PowerVS initialization so PowerVS instance creation can start in parallel with nfs, nlb, and network services."
+ value = length([module.configure_network_services.playbook_output, ibm_is_vpc_routing_table_route.nfs_route, ibm_is_lb_listener.nfs_front_end_listener]) >= 0
+}
diff --git a/modules/powervs-vpc-landing-zone/powervs-ws.tf b/modules/powervs-vpc-landing-zone/powervs-ws.tf
new file mode 100644
index 00000000..9f09ca83
--- /dev/null
+++ b/modules/powervs-vpc-landing-zone/powervs-ws.tf
@@ -0,0 +1,47 @@
+###########################################################
+# PowerVS Workspace module
+###########################################################
+
+locals {
+ powervs_custom_image1 = (
+ var.powervs_custom_images.powervs_custom_image1.image_name == "" &&
+ var.powervs_custom_images.powervs_custom_image1.file_name == "" &&
+ var.powervs_custom_images.powervs_custom_image1.storage_tier == ""
+ ) ? null : var.powervs_custom_images.powervs_custom_image1
+ powervs_custom_image2 = (
+ var.powervs_custom_images.powervs_custom_image2.image_name == "" &&
+ var.powervs_custom_images.powervs_custom_image2.file_name == "" &&
+ var.powervs_custom_images.powervs_custom_image2.storage_tier == ""
+ ) ? null : var.powervs_custom_images.powervs_custom_image2
+ powervs_custom_image3 = (
+ var.powervs_custom_images.powervs_custom_image3.image_name == "" &&
+ var.powervs_custom_images.powervs_custom_image3.file_name == "" &&
+ var.powervs_custom_images.powervs_custom_image3.storage_tier == ""
+ ) ? null : var.powervs_custom_images.powervs_custom_image3
+ powervs_custom_image_cos_configuration = (
+ var.powervs_custom_image_cos_configuration.bucket_name == "" &&
+ var.powervs_custom_image_cos_configuration.bucket_access == "" &&
+ var.powervs_custom_image_cos_configuration.bucket_region == ""
+ ) ? null : var.powervs_custom_image_cos_configuration
+}
+
+module "powervs_workspace" {
+ source = "terraform-ibm-modules/powervs-workspace/ibm"
+ version = "3.2.0"
+
+ providers = { ibm = ibm.ibm-pi }
+
+ pi_zone = var.powervs_zone
+ pi_resource_group_name = var.powervs_resource_group_name
+ pi_workspace_name = "${var.prefix}-${var.powervs_zone}-power-workspace"
+ pi_ssh_public_key = { "name" = "${var.prefix}-${var.powervs_zone}-pvs-ssh-key", value = var.ssh_public_key }
+ pi_private_subnet_1 = var.powervs_management_network
+ pi_private_subnet_2 = var.powervs_backup_network
+ pi_transit_gateway_connection = { "enable" : true, "transit_gateway_id" : module.landing_zone.transit_gateway_data.id }
+ pi_tags = var.tags
+ pi_custom_image1 = local.powervs_custom_image1
+ pi_custom_image2 = local.powervs_custom_image2
+ pi_custom_image3 = local.powervs_custom_image3
+ pi_custom_image_cos_configuration = local.powervs_custom_image_cos_configuration
+ pi_custom_image_cos_service_credentials = var.powervs_custom_image_cos_service_credentials
+}
diff --git a/modules/powervs-vpc-landing-zone/scc-wp.tf b/modules/powervs-vpc-landing-zone/scc-wp.tf
new file mode 100644
index 00000000..95680c28
--- /dev/null
+++ b/modules/powervs-vpc-landing-zone/scc-wp.tf
@@ -0,0 +1,75 @@
+#################################################
+# SCC Workload Protection Instance module
+#################################################
+
+# Create new App Config instance
+module "app_config" {
+ source = "terraform-ibm-modules/app-configuration/ibm"
+ version = "1.8.12"
+ providers = { ibm = ibm.ibm-is }
+ count = var.enable_scc_wp ? 1 : 0
+
+ region = lookup(local.ibm_powervs_zone_cloud_region_map, var.powervs_zone, null)
+ resource_group_id = module.landing_zone.resource_group_data["${var.prefix}-slz-service-rg"]
+ app_config_plan = "basic"
+ app_config_name = "${var.prefix}-app-config"
+ app_config_tags = var.tags
+ enable_config_aggregator = true
+ config_aggregator_trusted_profile_name = "${var.prefix}-app-config-tp"
+}
+
+module "scc_wp_instance" {
+ source = "terraform-ibm-modules/scc-workload-protection/ibm"
+ version = "1.10.13"
+ providers = { ibm = ibm.ibm-is }
+ count = var.enable_scc_wp ? 1 : 0
+
+ name = "${var.prefix}-scc-wp-instance"
+ region = lookup(local.ibm_powervs_zone_cloud_region_map, var.powervs_zone, null)
+ resource_group_id = module.landing_zone.resource_group_data["${var.prefix}-slz-service-rg"]
+ scc_wp_service_plan = "graduated-tier"
+ scc_workload_protection_trusted_profile_name = "${var.prefix}-workload-protection-trusted-profile"
+ resource_tags = var.tags
+ resource_key_name = "${var.prefix}-scc-wp-manager-key"
+ resource_key_tags = var.tags
+ cloud_monitoring_instance_crn = local.monitoring_instance.crn != "" ? local.monitoring_instance.crn : null
+ app_config_crn = var.enable_scc_wp ? module.app_config[0].app_config_crn : null
+}
+
+locals {
+ scc_wp_instance = {
+ enable = var.enable_scc_wp
+ guid = var.enable_scc_wp ? module.scc_wp_instance[0].guid : "",
+ access_key = var.enable_scc_wp ? nonsensitive(module.scc_wp_instance[0].access_key) : "",
+ api_endpoint = var.enable_scc_wp ? nonsensitive(replace(module.scc_wp_instance[0].api_endpoint, "https://", "https://private.")) : "",
+ ingestion_endpoint = var.enable_scc_wp ? nonsensitive(replace(module.scc_wp_instance[0].ingestion_endpoint, "ingest.", "ingest.private.")) : ""
+ }
+}
+
+
+module "configure_scc_wp_agent" {
+
+ source = "./submodules/ansible"
+ depends_on = [module.configure_network_services, module.configure_monitoring_host]
+ count = var.enable_scc_wp ? 1 : 0
+
+ bastion_host_ip = local.access_host_or_ip
+ ansible_host_or_ip = local.network_services_vsi_ip
+ ssh_private_key = var.ssh_private_key
+ ansible_vault_password = var.ansible_vault_password
+ configure_ansible_host = false
+
+ src_script_template_name = "configure-scc-wp-agent/ansible_configure_scc_wp_agent.sh.tftpl"
+ dst_script_file_name = "${var.prefix}-configure_scc_wp_agent.sh"
+
+ src_playbook_template_name = "configure-scc-wp-agent/playbook-configure-scc-wp-agent-linux.yml.tftpl"
+ dst_playbook_file_name = "${var.prefix}-playbook-configure-scc-wp-agent.yml"
+ playbook_template_vars = {
+ COLLECTOR_ENDPOINT : local.scc_wp_instance.ingestion_endpoint,
+ API_ENDPOINT : local.scc_wp_instance.api_endpoint,
+ ACCESS_KEY : local.scc_wp_instance.access_key
+ }
+ src_inventory_template_name = "inventory.tftpl"
+ dst_inventory_file_name = "${var.prefix}-scc-wp-inventory"
+ inventory_template_vars = { "host_or_ip" : join("\n", [for vsi in module.landing_zone.vsi_list : vsi["ipv4_address"]]) }
+}
diff --git a/modules/powervs-vpc-landing-zone/submodules/ansible/README.md b/modules/powervs-vpc-landing-zone/submodules/ansible/README.md
index 839d21b9..843ce3c4 100644
--- a/modules/powervs-vpc-landing-zone/submodules/ansible/README.md
+++ b/modules/powervs-vpc-landing-zone/submodules/ansible/README.md
@@ -42,5 +42,7 @@ No modules.
### Outputs
-No outputs.
+| Name | Description |
+|------|-------------|
+| [playbook\_output](#output\_playbook\_output) | Output from execute\_playbooks. Only available after apply. Can be used to create an implicit dependency on the playbook execution. |
diff --git a/modules/powervs-vpc-landing-zone/submodules/ansible/outputs.tf b/modules/powervs-vpc-landing-zone/submodules/ansible/outputs.tf
index e69de29b..72dd4974 100644
--- a/modules/powervs-vpc-landing-zone/submodules/ansible/outputs.tf
+++ b/modules/powervs-vpc-landing-zone/submodules/ansible/outputs.tf
@@ -0,0 +1,4 @@
+output "playbook_output" {
+ description = "Output from execute_playbooks. Only available after apply. Can be used to create an implicit dependency on the playbook execution."
+ value = var.ansible_vault_password == null ? terraform_data.execute_playbooks[0].output : terraform_data.execute_playbooks_with_vault[0].output
+}
diff --git a/modules/powervs-vpc-landing-zone/submodules/fileshare-alb/README.md b/modules/powervs-vpc-landing-zone/submodules/fileshare-alb/README.md
deleted file mode 100644
index ca6ea66c..00000000
--- a/modules/powervs-vpc-landing-zone/submodules/fileshare-alb/README.md
+++ /dev/null
@@ -1,48 +0,0 @@
-# Module fileshare-alb
-
-
-### Requirements
-
-| Name | Version |
-|------|---------|
-| [terraform](#requirement\_terraform) | >= 1.9 |
-| [ibm](#requirement\_ibm) | >=1.65.0 |
-
-### Modules
-
-No modules.
-
-### Resources
-
-| Name | Type |
-|------|------|
-| [ibm_is_lb.file_share_alb](https://registry.terraform.io/providers/IBM-Cloud/ibm/latest/docs/resources/is_lb) | resource |
-| [ibm_is_lb_listener.nfs_front_end_listener](https://registry.terraform.io/providers/IBM-Cloud/ibm/latest/docs/resources/is_lb_listener) | resource |
-| [ibm_is_lb_pool.nfs_backend_pool](https://registry.terraform.io/providers/IBM-Cloud/ibm/latest/docs/resources/is_lb_pool) | resource |
-| [ibm_is_lb_pool_member.nfs_backend_pool_member](https://registry.terraform.io/providers/IBM-Cloud/ibm/latest/docs/resources/is_lb_pool_member) | resource |
-| [ibm_is_share.file_share_nfs](https://registry.terraform.io/providers/IBM-Cloud/ibm/latest/docs/resources/is_share) | resource |
-| [ibm_is_share_mount_target.mount_target_nfs](https://registry.terraform.io/providers/IBM-Cloud/ibm/latest/docs/resources/is_share_mount_target) | resource |
-
-### Inputs
-
-| Name | Description | Type | Default | Required |
-|------|-------------|------|---------|:--------:|
-| [alb\_name](#input\_alb\_name) | The user-defined name for this load balancer pool. | `string` | n/a | yes |
-| [alb\_security\_group\_ids](#input\_alb\_security\_group\_ids) | A list of security groups that are used with this load balancer. This option is supported only for application load balancers. | `list(string)` | n/a | yes |
-| [alb\_subnet\_ids](#input\_alb\_subnet\_ids) | The ID of the subnets to provision this load balancer. | `list(string)` | n/a | yes |
-| [file\_share\_iops](#input\_file\_share\_iops) | The maximum input/output operation performance bandwidth per second for the file share. | `number` | n/a | yes |
-| [file\_share\_mount\_target\_name](#input\_file\_share\_mount\_target\_name) | The user-defined name for this share target. Names must be unique within the share the share target resides in. | `string` | n/a | yes |
-| [file\_share\_name](#input\_file\_share\_name) | The user-defined name for this share target. Names must be unique within the share the share target resides in. | `string` | n/a | yes |
-| [file\_share\_security\_group\_ids](#input\_file\_share\_security\_group\_ids) | List of security group ids to be attached. | `list(string)` | n/a | yes |
-| [file\_share\_size](#input\_file\_share\_size) | The size of the file share rounded up to the next gigabyte. | `number` | n/a | yes |
-| [file\_share\_subnet\_id](#input\_file\_share\_subnet\_id) | The subnet id of the virtual network interface for the share mount target. | `string` | n/a | yes |
-| [resource\_group\_id](#input\_resource\_group\_id) | The ID of the resource group to use. | `string` | n/a | yes |
-| [vpc\_zone](#input\_vpc\_zone) | The globally unique name for this zone. | `string` | n/a | yes |
-
-### Outputs
-
-| Name | Description |
-|------|-------------|
-| [file\_share\_alb](#output\_file\_share\_alb) | Details of application load balancer. |
-| [nfs\_host\_or\_ip\_path](#output\_nfs\_host\_or\_ip\_path) | NFS mount path for created infrastructure. |
-
diff --git a/modules/powervs-vpc-landing-zone/submodules/fileshare-alb/main.tf b/modules/powervs-vpc-landing-zone/submodules/fileshare-alb/main.tf
deleted file mode 100644
index 5707af66..00000000
--- a/modules/powervs-vpc-landing-zone/submodules/fileshare-alb/main.tf
+++ /dev/null
@@ -1,66 +0,0 @@
-#####################################################
-# File share for NFS and application Load Balancer
-#####################################################
-
-resource "ibm_is_share" "file_share_nfs" {
-
- name = var.file_share_name
- size = var.file_share_size
- profile = "dp2"
- access_control_mode = "security_group"
- iops = var.file_share_iops
- zone = var.vpc_zone
- resource_group = var.resource_group_id
-}
-
-resource "ibm_is_share_mount_target" "mount_target_nfs" {
-
- name = var.file_share_mount_target_name
- share = ibm_is_share.file_share_nfs.id
- virtual_network_interface {
- name = var.file_share_mount_target_name
- resource_group = var.resource_group_id
- subnet = var.file_share_subnet_id
- security_groups = var.file_share_security_group_ids
- }
-
-}
-
-resource "ibm_is_lb" "file_share_alb" {
-
- name = var.alb_name
- resource_group = var.resource_group_id
- type = "private"
- subnets = var.alb_subnet_ids
- security_groups = var.alb_security_group_ids
-}
-
-resource "ibm_is_lb_pool" "nfs_backend_pool" {
-
- name = "nfs-backend-pool"
- lb = ibm_is_lb.file_share_alb.id
- algorithm = "round_robin"
- protocol = "tcp"
- proxy_protocol = "disabled"
- health_type = "tcp"
- health_delay = 5
- health_retries = 2
- health_timeout = 2
- health_monitor_port = 2049
-}
-
-resource "ibm_is_lb_pool_member" "nfs_backend_pool_member" {
-
- lb = ibm_is_lb.file_share_alb.id
- pool = element(split("/", ibm_is_lb_pool.nfs_backend_pool.id), 1)
- port = 2049
- target_address = split(":", ibm_is_share_mount_target.mount_target_nfs.mount_path)[0]
-}
-
-resource "ibm_is_lb_listener" "nfs_front_end_listener" {
-
- lb = ibm_is_lb.file_share_alb.id
- default_pool = ibm_is_lb_pool.nfs_backend_pool.id
- protocol = "tcp"
- port = 2049
-}
diff --git a/modules/powervs-vpc-landing-zone/submodules/fileshare-alb/outputs.tf b/modules/powervs-vpc-landing-zone/submodules/fileshare-alb/outputs.tf
deleted file mode 100644
index cbb31bb9..00000000
--- a/modules/powervs-vpc-landing-zone/submodules/fileshare-alb/outputs.tf
+++ /dev/null
@@ -1,13 +0,0 @@
-output "file_share_alb" {
- description = "Details of application load balancer."
- value = {
- name = ibm_is_lb.file_share_alb.name
- id = ibm_is_lb.file_share_alb.id
- private_ips = [for private_ip in ibm_is_lb.file_share_alb.private_ip : private_ip.address]
- }
-}
-
-output "nfs_host_or_ip_path" {
- description = "NFS mount path for created infrastructure."
- value = "${ibm_is_lb.file_share_alb.private_ip[1].address}:${split(":", ibm_is_share_mount_target.mount_target_nfs.mount_path)[1]}"
-}
diff --git a/modules/powervs-vpc-landing-zone/submodules/fileshare-alb/variables.tf b/modules/powervs-vpc-landing-zone/submodules/fileshare-alb/variables.tf
deleted file mode 100644
index df1668f0..00000000
--- a/modules/powervs-vpc-landing-zone/submodules/fileshare-alb/variables.tf
+++ /dev/null
@@ -1,54 +0,0 @@
-variable "resource_group_id" {
- description = "The ID of the resource group to use."
- type = string
-}
-
-variable "vpc_zone" {
- description = "The globally unique name for this zone."
- type = string
-}
-
-variable "file_share_name" {
- description = "The user-defined name for this share target. Names must be unique within the share the share target resides in."
- type = string
-}
-
-variable "file_share_size" {
- description = "The size of the file share rounded up to the next gigabyte."
- type = number
-}
-
-variable "file_share_iops" {
- description = "The maximum input/output operation performance bandwidth per second for the file share."
- type = number
-}
-
-variable "file_share_mount_target_name" {
- description = "The user-defined name for this share target. Names must be unique within the share the share target resides in."
- type = string
-}
-
-variable "file_share_subnet_id" {
- description = "The subnet id of the virtual network interface for the share mount target."
- type = string
-}
-
-variable "file_share_security_group_ids" {
- description = "List of security group ids to be attached."
- type = list(string)
-}
-
-variable "alb_name" {
- description = "The user-defined name for this load balancer pool."
- type = string
-}
-
-variable "alb_subnet_ids" {
- description = "The ID of the subnets to provision this load balancer."
- type = list(string)
-}
-
-variable "alb_security_group_ids" {
- description = "A list of security groups that are used with this load balancer. This option is supported only for application load balancers."
- type = list(string)
-}
diff --git a/modules/powervs-vpc-landing-zone/submodules/fileshare-alb/versions.tf b/modules/powervs-vpc-landing-zone/submodules/fileshare-alb/versions.tf
deleted file mode 100644
index fbf84882..00000000
--- a/modules/powervs-vpc-landing-zone/submodules/fileshare-alb/versions.tf
+++ /dev/null
@@ -1,13 +0,0 @@
-#####################################################
-# PowerVS with VPC landing zone module
-#####################################################
-
-terraform {
- required_version = ">= 1.9"
- required_providers {
- ibm = {
- source = "IBM-Cloud/ibm"
- version = ">=1.65.0"
- }
- }
-}
diff --git a/modules/powervs-vpc-landing-zone/variables.tf b/modules/powervs-vpc-landing-zone/variables.tf
index f48a68a4..0437389d 100644
--- a/modules/powervs-vpc-landing-zone/variables.tf
+++ b/modules/powervs-vpc-landing-zone/variables.tf
@@ -4,7 +4,7 @@ variable "powervs_zone" {
}
variable "powervs_resource_group_name" {
- description = "Existing IBM Cloud resource group name."
+ description = "Existing IBM Cloud resource group name. Used for PowerVS related resources. If null, ocp-rg is created and used for TGW, VPC, and PowerVS resources."
type = string
}
diff --git a/reference-architectures/standard-extend/deploy-arch-ibm-pvs-inf-standard-extend.md b/reference-architectures/standard-extend/deploy-arch-ibm-pvs-inf-standard-extend.md
index cd38f127..27fffac2 100644
--- a/reference-architectures/standard-extend/deploy-arch-ibm-pvs-inf-standard-extend.md
+++ b/reference-architectures/standard-extend/deploy-arch-ibm-pvs-inf-standard-extend.md
@@ -1,7 +1,7 @@
---
copyright:
years: 2024, 2025
-lastupdated: "2025-07-21"
+lastupdated: "2025-08-07"
keywords:
subcollection: deployable-reference-architectures
authors:
@@ -15,7 +15,7 @@ image_source: https://github.com/terraform-ibm-modules/terraform-ibm-powervs-inf
use-case: ITServiceManagement
industry: Technology
content-type: reference-architecture
-version: v8.5.6
+version: v9.0.0
compliance: SAPCertified
---
@@ -28,7 +28,7 @@ compliance: SAPCertified
{: toc-industry="Technology"}
{: toc-use-case="ITServiceManagement"}
{: toc-compliance="SAPCertified"}
-{: toc-version="v8.5.6"}
+{: toc-version="v9.0.0"}
The Power Virtual Server with VPC landing zone as variation 'Extend Power Virtual Server with VPC landing zone' creates an additional Power Virtual Server workspace and connects it with the already created Power Virtual Server with VPC landing zone. It builds on the existing Power Virtual Server with VPC landing zone deployed as a variation 'Create a new architecture'.
diff --git a/reference-architectures/standard-extend/deploy-arch-ibm-pvs-inf-standard-extend.svg b/reference-architectures/standard-extend/deploy-arch-ibm-pvs-inf-standard-extend.svg
index e01565e7..7b9cc11f 100644
--- a/reference-architectures/standard-extend/deploy-arch-ibm-pvs-inf-standard-extend.svg
+++ b/reference-architectures/standard-extend/deploy-arch-ibm-pvs-inf-standard-extend.svg
@@ -1,4 +1,4 @@
-
\ No newline at end of file
+
\ No newline at end of file
diff --git a/reference-architectures/standard-plus-vsi/deploy-arch-ibm-pvs-inf-standard-plus-vsi.md b/reference-architectures/standard-plus-vsi/deploy-arch-ibm-pvs-inf-standard-plus-vsi.md
index 0bc761c0..09200744 100644
--- a/reference-architectures/standard-plus-vsi/deploy-arch-ibm-pvs-inf-standard-plus-vsi.md
+++ b/reference-architectures/standard-plus-vsi/deploy-arch-ibm-pvs-inf-standard-plus-vsi.md
@@ -1,7 +1,7 @@
---
copyright:
years: 2024, 2025
-lastupdated: "2025-07-21"
+lastupdated: "2025-08-07"
keywords:
subcollection: deployable-reference-architectures
authors:
@@ -16,7 +16,7 @@ image_source: https://github.com/terraform-ibm-modules/terraform-ibm-powervs-inf
use-case: ITServiceManagement
industry: Technology
content-type: reference-architecture
-version: v8.5.6
+version: v9.0.0
compliance:
---
@@ -28,7 +28,7 @@ compliance:
{: toc-content-type="reference-architecture"}
{: toc-industry="Technology"}
{: toc-use-case="ITServiceManagement"}
-{: toc-version="v8.5.6"}
+{: toc-version="v9.0.0"}
Quickstart deployment of the Power Virtual Server with VPC landing zone creates VPC services, a Power Virtual Server workspace, and interconnects them. It also deploys a Power Virtual Server of chosen T-shirt size or custom configuration. Supported Os are Aix, IBM i, and Linux images.
diff --git a/reference-architectures/standard-plus-vsi/deploy-arch-ibm-pvs-inf-standard-plus-vsi.svg b/reference-architectures/standard-plus-vsi/deploy-arch-ibm-pvs-inf-standard-plus-vsi.svg
index cd793c72..12d3c760 100644
--- a/reference-architectures/standard-plus-vsi/deploy-arch-ibm-pvs-inf-standard-plus-vsi.svg
+++ b/reference-architectures/standard-plus-vsi/deploy-arch-ibm-pvs-inf-standard-plus-vsi.svg
@@ -1,4 +1,4 @@
-
\ No newline at end of file
+
\ No newline at end of file
diff --git a/reference-architectures/standard/deploy-arch-ibm-pvs-inf-standard.md b/reference-architectures/standard/deploy-arch-ibm-pvs-inf-standard.md
index 0eec4129..24f79f60 100644
--- a/reference-architectures/standard/deploy-arch-ibm-pvs-inf-standard.md
+++ b/reference-architectures/standard/deploy-arch-ibm-pvs-inf-standard.md
@@ -1,7 +1,7 @@
---
copyright:
years: 2024, 2025
-lastupdated: "2025-07-21"
+lastupdated: "2025-08-07"
keywords:
subcollection: deployable-reference-architectures
authors:
@@ -15,7 +15,7 @@ image_source: https://github.com/terraform-ibm-modules/terraform-ibm-powervs-inf
use-case: ITServiceManagement
industry: Technology
content-type: reference-architecture
-version: v8.5.6
+version: v9.0.0
compliance: SAPCertified
---
@@ -28,7 +28,7 @@ compliance: SAPCertified
{: toc-industry="Technology"}
{: toc-use-case="ITServiceManagement"}
{: toc-compliance="SAPCertified"}
-{: toc-version="v8.5.6"}
+{: toc-version="v9.0.0"}
The Standard deployment of the Power Virtual Server with VPC landing zone creates VPC services and a Power Virtual Server workspace and interconnects them.
diff --git a/reference-architectures/standard/deploy-arch-ibm-pvs-inf-standard.svg b/reference-architectures/standard/deploy-arch-ibm-pvs-inf-standard.svg
index c8d34154..886b5137 100644
--- a/reference-architectures/standard/deploy-arch-ibm-pvs-inf-standard.svg
+++ b/reference-architectures/standard/deploy-arch-ibm-pvs-inf-standard.svg
@@ -1,4 +1,4 @@
-
\ No newline at end of file
+
\ No newline at end of file
diff --git a/solutions/standard-extend/README.md b/solutions/standard-extend/README.md
index 679be7ec..8dc971d9 100644
--- a/solutions/standard-extend/README.md
+++ b/solutions/standard-extend/README.md
@@ -73,10 +73,10 @@ If you do not have a PowerVS infrastructure that is the [Standard Landscape Vari
|------|-------------|
| [access\_host\_or\_ip](#output\_access\_host\_or\_ip) | Access host for created PowerVS infrastructure. |
| [ansible\_host\_or\_ip](#output\_ansible\_host\_or\_ip) | Central Ansible node private IP address. |
-| [application\_load\_balancer](#output\_application\_load\_balancer) | Details of application load balancer. |
| [dns\_host\_or\_ip](#output\_dns\_host\_or\_ip) | DNS forwarder host for created PowerVS infrastructure. |
| [kms\_key\_map](#output\_kms\_key\_map) | Map of ids and keys for KMS keys created |
| [monitoring\_instance](#output\_monitoring\_instance) | Details of the IBM Cloud Monitoring Instance: CRN, location, guid. |
+| [network\_load\_balancer](#output\_network\_load\_balancer) | Details of network load balancer. |
| [network\_services\_config](#output\_network\_services\_config) | Complete configuration of network management services. |
| [nfs\_host\_or\_ip\_path](#output\_nfs\_host\_or\_ip\_path) | NFS host for created PowerVS infrastructure. |
| [ntp\_host\_or\_ip](#output\_ntp\_host\_or\_ip) | NTP host for created PowerVS infrastructure. |
diff --git a/solutions/standard-extend/outputs.tf b/solutions/standard-extend/outputs.tf
index fcd82d12..974305a5 100644
--- a/solutions/standard-extend/outputs.tf
+++ b/solutions/standard-extend/outputs.tf
@@ -31,9 +31,9 @@ output "vsi_ssh_key_data" {
description = "List of VSI SSH key data"
value = local.standard_output[0].vsi_ssh_key_data.value
}
-output "application_load_balancer" {
- description = "Details of application load balancer."
- value = local.standard_output[0].application_load_balancer.value
+output "network_load_balancer" {
+ description = "Details of network load balancer."
+ value = local.standard_output[0].network_load_balancer.value
}
output "ssh_public_key" {
diff --git a/solutions/standard-plus-vsi/README.md b/solutions/standard-plus-vsi/README.md
index 754bb705..2059da0f 100644
--- a/solutions/standard-plus-vsi/README.md
+++ b/solutions/standard-plus-vsi/README.md
@@ -7,7 +7,7 @@ This example sets up the following infrastructure:
- Optional VSI for Monitoring host
- Optional [Client to site VPN server](https://cloud.ibm.com/docs/vpc?topic=vpc-vpn-client-to-site-overview)
- Optional [File storage share](https://cloud.ibm.com/docs/vpc?topic=vpc-file-storage-create&interface=ui)
- - Optional [Application load balancer](https://cloud.ibm.com/docs/vpc?topic=vpc-load-balancers&interface=ui)
+ - Optional [Network load balancer](https://cloud.ibm.com/docs/vpc?group=network-load-balancer)
- Optional [IBM Cloud Security and Compliance Center Workload Protection](https://cloud.ibm.com/docs/workload-protection) and SCC Workload Protection agent configuration on the VSIs in the deployment
- IBM Cloud Object storage(COS) Virtual Private endpoint gateway(VPE)
- IBM Cloud Object storage(COS) Instance and buckets
@@ -50,7 +50,6 @@ This example sets up the following infrastructure:
| [terraform](#requirement\_terraform) | >= 1.9 |
| [ibm](#requirement\_ibm) | 1.81.0 |
| [restapi](#requirement\_restapi) | 2.0.1 |
-| [time](#requirement\_time) | 0.13.1 |
### Modules
@@ -65,7 +64,6 @@ This example sets up the following infrastructure:
| Name | Type |
|------|------|
| [terraform_data.aix_init](https://registry.terraform.io/providers/hashicorp/terraform/latest/docs/resources/data) | resource |
-| [time_sleep.wait_for_dependencies](https://registry.terraform.io/providers/hashicorp/time/0.13.1/docs/resources/sleep) | resource |
| [ibm_iam_auth_token.auth_token](https://registry.terraform.io/providers/IBM-Cloud/ibm/1.81.0/docs/data-sources/iam_auth_token) | data source |
### Inputs
@@ -108,10 +106,10 @@ This example sets up the following infrastructure:
|------|-------------|
| [access\_host\_or\_ip](#output\_access\_host\_or\_ip) | Access host(jump/bastion) for created PowerVS infrastructure. |
| [ansible\_host\_or\_ip](#output\_ansible\_host\_or\_ip) | Central Ansible node private IP address. |
-| [application\_load\_balancer](#output\_application\_load\_balancer) | Details of application load balancer. |
| [dns\_host\_or\_ip](#output\_dns\_host\_or\_ip) | DNS forwarder host for created PowerVS infrastructure. |
| [kms\_key\_map](#output\_kms\_key\_map) | Map of ids and keys for KMS keys created |
| [monitoring\_instance](#output\_monitoring\_instance) | Details of the IBM Cloud Monitoring Instance: CRN, location, guid. |
+| [network\_load\_balancer](#output\_network\_load\_balancer) | Details of network load balancer. |
| [network\_services\_config](#output\_network\_services\_config) | Complete configuration of network management services. |
| [nfs\_host\_or\_ip\_path](#output\_nfs\_host\_or\_ip\_path) | NFS host for created PowerVS infrastructure. |
| [ntp\_host\_or\_ip](#output\_ntp\_host\_or\_ip) | NTP host for created PowerVS infrastructure. |
diff --git a/solutions/standard-plus-vsi/catalogValidationValues.json.template b/solutions/standard-plus-vsi/catalogValidationValues.json.template
index 1a7455ef..2c1ff876 100644
--- a/solutions/standard-plus-vsi/catalogValidationValues.json.template
+++ b/solutions/standard-plus-vsi/catalogValidationValues.json.template
@@ -1,6 +1,6 @@
{
"ibmcloud_api_key": $VALIDATION_APIKEY,
- "powervs_zone": "sao04",
+ "powervs_zone": "us-south",
"prefix": "qs-val",
"tshirt_size": {
"tshirt_size":"aix_xs",
diff --git a/solutions/standard-plus-vsi/main.tf b/solutions/standard-plus-vsi/main.tf
index bdf0be15..9a276718 100644
--- a/solutions/standard-plus-vsi/main.tf
+++ b/solutions/standard-plus-vsi/main.tf
@@ -33,21 +33,14 @@ module "standard" {
ansible_vault_password = var.ansible_vault_password
}
-
-resource "time_sleep" "wait_for_dependencies" {
- count = local.pi_instance_os_type == "aix" || local.pi_instance_os_type == "linux" ? 1 : 0
- create_duration = var.configure_nfs_server ? "900s" : "500s"
-}
-
#####################################################
# PowerVS Instance module
#####################################################
module "powervs_instance" {
- source = "terraform-ibm-modules/powervs-instance/ibm"
- version = "2.6.2"
- providers = { ibm = ibm.ibm-pi }
- depends_on = [time_sleep.wait_for_dependencies]
+ source = "terraform-ibm-modules/powervs-instance/ibm"
+ version = "2.6.2"
+ providers = { ibm = ibm.ibm-pi }
pi_workspace_guid = module.standard.powervs_workspace_guid
pi_ssh_public_key_name = module.standard.powervs_ssh_public_key.name
@@ -67,7 +60,9 @@ module "powervs_instance" {
enable = true
bastion_host_ip = module.standard.access_host_or_ip
ansible_host_or_ip = module.standard.ansible_host_or_ip
- ssh_private_key = var.ssh_private_key
+ # same as: ssh_private_key = var.ssh_private_key
+ # creates implicit dependencies without affecting the value of ssh_private_key
+ ssh_private_key = "${var.ssh_private_key}${module.standard.nlb_nfs_network_services_ready ? "" : ""}"
} : {
enable = false
bastion_host_ip = ""
diff --git a/solutions/standard-plus-vsi/outputs.tf b/solutions/standard-plus-vsi/outputs.tf
index 145cfdf7..7ea56c2c 100644
--- a/solutions/standard-plus-vsi/outputs.tf
+++ b/solutions/standard-plus-vsi/outputs.tf
@@ -32,9 +32,9 @@ output "vsi_ssh_key_data" {
value = module.standard.vsi_ssh_key_data
}
-output "application_load_balancer" {
- description = "Details of application load balancer."
- value = module.standard.application_load_balancer
+output "network_load_balancer" {
+ description = "Details of network load balancer."
+ value = module.standard.network_load_balancer
}
output "ssh_public_key" {
diff --git a/solutions/standard-plus-vsi/versions.tf b/solutions/standard-plus-vsi/versions.tf
index cc96f756..80005b21 100644
--- a/solutions/standard-plus-vsi/versions.tf
+++ b/solutions/standard-plus-vsi/versions.tf
@@ -13,10 +13,5 @@ terraform {
source = "Mastercard/restapi"
version = "2.0.1"
}
- time = {
- source = "hashicorp/time"
- version = "0.13.1"
- }
-
}
}
diff --git a/solutions/standard/README.md b/solutions/standard/README.md
index 5289d60b..1a551013 100644
--- a/solutions/standard/README.md
+++ b/solutions/standard/README.md
@@ -7,7 +7,7 @@ This example sets up the following infrastructure:
- Optional VSI for Monitoring host
- Optional [Client to site VPN server](https://cloud.ibm.com/docs/vpc?topic=vpc-vpn-client-to-site-overview)
- Optional [File storage share](https://cloud.ibm.com/docs/vpc?topic=vpc-file-storage-create&interface=ui)
- - Optional [Application load balancer](https://cloud.ibm.com/docs/vpc?topic=vpc-load-balancers&interface=ui)
+ - Optional [Network load balancer](https://cloud.ibm.com/docs/vpc?group=network-load-balancer)
- Optional [IBM Cloud Security and Compliance Center Workload Protection](https://cloud.ibm.com/docs/workload-protection) and SCC Workload Protection agent configuration on the VSIs in the deployment
- IBM Cloud Object storage(COS) Virtual Private endpoint gateway(VPE)
- IBM Cloud Object storage(COS) Instance and buckets
@@ -103,10 +103,10 @@ This example sets up the following infrastructure:
|------|-------------|
| [access\_host\_or\_ip](#output\_access\_host\_or\_ip) | Access host(jump/bastion) for created PowerVS infrastructure. |
| [ansible\_host\_or\_ip](#output\_ansible\_host\_or\_ip) | Central Ansible node private IP address. |
-| [application\_load\_balancer](#output\_application\_load\_balancer) | Details of application load balancer. |
| [dns\_host\_or\_ip](#output\_dns\_host\_or\_ip) | DNS forwarder host for created PowerVS infrastructure. |
| [kms\_key\_map](#output\_kms\_key\_map) | Map of ids and keys for KMS keys created |
| [monitoring\_instance](#output\_monitoring\_instance) | Details of the IBM Cloud Monitoring Instance: CRN, location, guid. |
+| [network\_load\_balancer](#output\_network\_load\_balancer) | Details of network load balancer. |
| [network\_services\_config](#output\_network\_services\_config) | Complete configuration of network management services. |
| [nfs\_host\_or\_ip\_path](#output\_nfs\_host\_or\_ip\_path) | NFS host for created PowerVS infrastructure. |
| [ntp\_host\_or\_ip](#output\_ntp\_host\_or\_ip) | NTP host for created PowerVS infrastructure. |
diff --git a/solutions/standard/catalogValidationValues.json.template b/solutions/standard/catalogValidationValues.json.template
index 93bcf29d..f231c233 100644
--- a/solutions/standard/catalogValidationValues.json.template
+++ b/solutions/standard/catalogValidationValues.json.template
@@ -1,7 +1,7 @@
{
"prefix": $PREFIX,
"powervs_resource_group_name": "Default",
- "powervs_zone": "eu-de-1",
+ "powervs_zone": "us-south",
"external_access_ip": "0.0.0.0/0",
"ssh_public_key": $SSH_PUB_KEY,
"ssh_private_key": $SSH_PRV_KEY,
diff --git a/solutions/standard/outputs.tf b/solutions/standard/outputs.tf
index 310fb3df..7f8956d9 100644
--- a/solutions/standard/outputs.tf
+++ b/solutions/standard/outputs.tf
@@ -32,9 +32,9 @@ output "vsi_ssh_key_data" {
value = module.standard.vsi_ssh_key_data
}
-output "application_load_balancer" {
- description = "Details of application load balancer."
- value = module.standard.application_load_balancer
+output "network_load_balancer" {
+ description = "Details of network load balancer."
+ value = module.standard.network_load_balancer
}
output "ssh_public_key" {