Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
23 commits
Select commit Hold shift + click to select a range
a9798fe
feat: BREAKING CHANGE replace alb with nlb
ludwig-mueller Jul 31, 2025
fefbbea
chore: remove fileshare-alb module
ludwig-mueller Jul 31, 2025
ee6382b
refactor: move fileshare nlb from module into one file and make it sh…
ludwig-mueller Aug 1, 2025
eba1813
Merge branch 'main' into nfs_nlb
ludwig-mueller Aug 1, 2025
20e52e1
Merge branch 'main' into nfs_nlb
ludwig-mueller Aug 4, 2025
78140bc
fix: network services only depends on mount target
ludwig-mueller Aug 5, 2025
1a5e1f3
feat: remove wait for testing
ludwig-mueller Aug 5, 2025
4f44495
refactor: cleanup commented components left from last refactor
ludwig-mueller Aug 6, 2025
7ffae19
feat: replace sleep wait with implicit dependencies to optimize deplo…
ludwig-mueller Aug 6, 2025
ccbd279
fix: null check for nfs and nlb variables
ludwig-mueller Aug 7, 2025
792a7a8
Merge branch 'main' into nfs_nlb
ludwig-mueller Aug 7, 2025
16c3eaa
docs: update architecture diagrams
ludwig-mueller Aug 7, 2025
692c8c0
chore: remove alb related scc rules
ludwig-mueller Aug 7, 2025
9bf058a
docs: update readmes
ludwig-mueller Aug 7, 2025
08d929c
BREAKING CHANGE
ludwig-mueller Aug 7, 2025
13c21e1
chore: cleanup
ludwig-mueller Aug 7, 2025
954ef92
docs: lastupdated, version number
ludwig-mueller Aug 7, 2025
e241adc
chore: validate in us-south
ludwig-mueller Aug 7, 2025
b4eab07
refactor: local naming
ludwig-mueller Aug 7, 2025
0d0cb3e
refactor: split main.tf into separate files for each functional unit
ludwig-mueller Aug 7, 2025
98d0b39
feat: expose a way to create ocp-rg and use it for tgw, vpc, and powe…
ludwig-mueller Aug 7, 2025
1eec6b9
Merge branch 'temp' into nfs_nlb
ludwig-mueller Aug 7, 2025
a7bc9eb
BREAKING CHANGE
ludwig-mueller Aug 7, 2025
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
12 changes: 0 additions & 12 deletions cra-tf-validate-ignore-rules.json
Original file line number Diff line number Diff line change
Expand Up @@ -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
}
]
}
12 changes: 6 additions & 6 deletions ibm_catalog.json
Original file line number Diff line number Diff line change
Expand Up @@ -378,7 +378,7 @@
"key": "vsi_ssh_key_data"
},
{
"key": "application_load_balancer"
"key": "network_load_balancer"
},
{
"key": "ssh_public_key"
Expand Down Expand Up @@ -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."
Expand Down Expand Up @@ -1025,7 +1025,7 @@
"key": "vsi_names"
},
{
"key": "application_load_balancer"
"key": "network_load_balancer"
},
{
"key": "ssh_public_key"
Expand Down Expand Up @@ -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."
Expand Down Expand Up @@ -1444,7 +1444,7 @@
"key": "vsi_ssh_key_data"
},
{
"key": "application_load_balancer"
"key": "network_load_balancer"
},
{
"key": "ssh_public_key"
Expand Down Expand Up @@ -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'."
Expand Down
16 changes: 11 additions & 5 deletions modules/powervs-vpc-landing-zone/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down Expand Up @@ -118,14 +118,19 @@ Creates VPC Landing Zone | Performs VPC VSI OS Config | Creates PowerVS Infrastr
| <a name="module_scc_wp_instance"></a> [scc\_wp\_instance](#module\_scc\_wp\_instance) | terraform-ibm-modules/scc-workload-protection/ibm | 1.10.13 |
| <a name="module_secrets_manager_group"></a> [secrets\_manager\_group](#module\_secrets\_manager\_group) | terraform-ibm-modules/secrets-manager-secret-group/ibm | 1.3.12 |
| <a name="module_secrets_manager_private_certificate"></a> [secrets\_manager\_private\_certificate](#module\_secrets\_manager\_private\_certificate) | terraform-ibm-modules/secrets-manager-private-cert/ibm | 1.4.3 |
| <a name="module_vpc_file_share_alb"></a> [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 |

Expand All @@ -152,7 +157,7 @@ Creates VPC Landing Zone | Performs VPC VSI OS Config | Creates PowerVS Infrastr
| <a name="input_powervs_custom_image_cos_service_credentials"></a> [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 |
| <a name="input_powervs_custom_images"></a> [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. | <pre>object({<br/> powervs_custom_image1 = object({<br/> image_name = string<br/> file_name = string<br/> storage_tier = string<br/> sap_type = optional(string)<br/> }),<br/> powervs_custom_image2 = object({<br/> image_name = string<br/> file_name = string<br/> storage_tier = string<br/> sap_type = optional(string)<br/> }),<br/> powervs_custom_image3 = object({<br/> image_name = string<br/> file_name = string<br/> storage_tier = string<br/> sap_type = optional(string)<br/> })<br/> })</pre> | <pre>{<br/> "powervs_custom_image1": {<br/> "file_name": "",<br/> "image_name": "",<br/> "sap_type": null,<br/> "storage_tier": ""<br/> },<br/> "powervs_custom_image2": {<br/> "file_name": "",<br/> "image_name": "",<br/> "sap_type": null,<br/> "storage_tier": ""<br/> },<br/> "powervs_custom_image3": {<br/> "file_name": "",<br/> "image_name": "",<br/> "sap_type": null,<br/> "storage_tier": ""<br/> }<br/>}</pre> | no |
| <a name="input_powervs_management_network"></a> [powervs\_management\_network](#input\_powervs\_management\_network) | Name of the IBM Cloud PowerVS management subnet and CIDR to create. | <pre>object({<br/> name = string<br/> cidr = string<br/> })</pre> | <pre>{<br/> "cidr": "10.51.0.0/24",<br/> "name": "mgmt_net"<br/>}</pre> | no |
| <a name="input_powervs_resource_group_name"></a> [powervs\_resource\_group\_name](#input\_powervs\_resource\_group\_name) | Existing IBM Cloud resource group name. | `string` | n/a | yes |
| <a name="input_powervs_resource_group_name"></a> [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 |
| <a name="input_powervs_zone"></a> [powervs\_zone](#input\_powervs\_zone) | IBM Cloud data center location where IBM PowerVS infrastructure will be created. | `string` | n/a | yes |
| <a name="input_prefix"></a> [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 |
| <a name="input_sm_service_plan"></a> [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 |
Expand All @@ -168,12 +173,13 @@ Creates VPC Landing Zone | Performs VPC VSI OS Config | Creates PowerVS Infrastr
|------|-------------|
| <a name="output_access_host_or_ip"></a> [access\_host\_or\_ip](#output\_access\_host\_or\_ip) | Access host(jump/bastion) for created PowerVS infrastructure. |
| <a name="output_ansible_host_or_ip"></a> [ansible\_host\_or\_ip](#output\_ansible\_host\_or\_ip) | Central Ansible node private IP address. |
| <a name="output_application_load_balancer"></a> [application\_load\_balancer](#output\_application\_load\_balancer) | Details of application load balancer. |
| <a name="output_dns_host_or_ip"></a> [dns\_host\_or\_ip](#output\_dns\_host\_or\_ip) | DNS forwarder host for created PowerVS infrastructure. |
| <a name="output_kms_key_map"></a> [kms\_key\_map](#output\_kms\_key\_map) | Map of ids and keys for KMS keys created |
| <a name="output_monitoring_instance"></a> [monitoring\_instance](#output\_monitoring\_instance) | Details of the IBM Cloud Monitoring Instance: CRN, location, guid, monitoring\_host\_ip. |
| <a name="output_network_load_balancer"></a> [network\_load\_balancer](#output\_network\_load\_balancer) | Details of network load balancer. |
| <a name="output_network_services_config"></a> [network\_services\_config](#output\_network\_services\_config) | Complete configuration of network management services. |
| <a name="output_nfs_host_or_ip_path"></a> [nfs\_host\_or\_ip\_path](#output\_nfs\_host\_or\_ip\_path) | NFS host for created PowerVS infrastructure. |
| <a name="output_nlb_nfs_network_services_ready"></a> [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. |
| <a name="output_ntp_host_or_ip"></a> [ntp\_host\_or\_ip](#output\_ntp\_host\_or\_ip) | NTP host for created PowerVS infrastructure. |
| <a name="output_powervs_backup_subnet"></a> [powervs\_backup\_subnet](#output\_powervs\_backup\_subnet) | Name, ID and CIDR of backup private network in created PowerVS infrastructure. |
| <a name="output_powervs_images"></a> [powervs\_images](#output\_powervs\_images) | Object containing imported PowerVS image names and image ids. |
Expand Down
11 changes: 0 additions & 11 deletions modules/powervs-vpc-landing-zone/client2sitevpn.tf
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down
Loading