diff --git a/.catalog-onboard-pipeline.yaml b/.catalog-onboard-pipeline.yaml index 91b37e82..5c6e5a14 100644 --- a/.catalog-onboard-pipeline.yaml +++ b/.catalog-onboard-pipeline.yaml @@ -25,9 +25,3 @@ offerings: scc: instance_id: d9f6ba0c-dd0e-4348-a834-6002b675fe40 region: us-south - - name: import - mark_ready: false - install_type: fullstack - scc: - instance_id: d9f6ba0c-dd0e-4348-a834-6002b675fe40 - region: us-south diff --git a/.secrets.baseline b/.secrets.baseline index e241a9e7..e56527fd 100644 --- a/.secrets.baseline +++ b/.secrets.baseline @@ -3,7 +3,7 @@ "files": "go.sum|^.secrets.baseline$", "lines": null }, - "generated_at": "2025-04-07T07:37:19Z", + "generated_at": "2025-05-07T12:39:51Z", "plugins_used": [ { "name": "AWSKeyDetector" @@ -92,7 +92,7 @@ "hashed_secret": "91199272d5d6a574a51722ca6f3d1148edb1a0e7", "is_secret": false, "is_verified": false, - "line_number": 46, + "line_number": 45, "type": "Secret Keyword", "verified_result": null }, @@ -100,7 +100,7 @@ "hashed_secret": "a67ef662b9a11a96b15936764d77e118c9f155dd", "is_secret": false, "is_verified": false, - "line_number": 59, + "line_number": 58, "type": "Secret Keyword", "verified_result": null }, @@ -108,7 +108,17 @@ "hashed_secret": "6aa42ddb8d86de967d322e6fdde293bf1344c852", "is_secret": false, "is_verified": false, - "line_number": 74, + "line_number": 72, + "type": "Secret Keyword", + "verified_result": null + } + ], + "solutions/standard-plus-vsi/catalogValidationValues.json.template": [ + { + "hashed_secret": "fa501f2ceec739604d621b521446b88d41a7f76b", + "is_secret": false, + "is_verified": false, + "line_number": 12, "type": "Secret Keyword", "verified_result": null } @@ -126,7 +136,7 @@ "hashed_secret": "fa501f2ceec739604d621b521446b88d41a7f76b", "is_secret": false, "is_verified": false, - "line_number": 75, + "line_number": 85, "type": "Secret Keyword", "verified_result": null } diff --git a/README.md b/README.md index 4aa313c1..341da5da 100644 --- a/README.md +++ b/README.md @@ -9,34 +9,29 @@ ## Summary This repository contains deployable architecture solutions that help provision VPC landing zones, PowerVS workspaces, and interconnect them. The solutions are available in the IBM Cloud Catalog and can also be deployed without the catalog, except for the second solution below. -Four solutions are offered: -1. [Standard](https://github.com/terraform-ibm-modules/terraform-ibm-powervs-infrastructure/tree/main/solutions/standard) +Three solutions are offered: +1. [Standard Landscape](https://github.com/terraform-ibm-modules/terraform-ibm-powervs-infrastructure/tree/main/solutions/standard) - Creates a VPC and Power Virtual Server workspace, interconnects them, and configures OS network management services (SQUID proxy, NTP, NFS, and DNS services) using Ansible Galaxy collection roles [ibm.power_linux_sap collection](https://galaxy.ansible.com/ui/repo/published/ibm/power_linux_sap/). -2. [Standard Extend](https://github.com/terraform-ibm-modules/terraform-ibm-powervs-infrastructure/tree/main/solutions/standard-extend) - - Extends the standard solution by creating a new Power Virtual Server workspace in a different zone and interconnects with the previous solution. +2. [Extend Standard Landscape](https://github.com/terraform-ibm-modules/terraform-ibm-powervs-infrastructure/tree/main/solutions/standard-extend) + - Extends the standard landscape solution by creating a new Power Virtual Server workspace in a different zone and interconnects with the previous solution. - This solution is typically used for **High Availability scenarios** where a single management VPC can be used to reach both PowerVS workspaces. -3. [Quickstart (Standard plus VSI)](https://github.com/terraform-ibm-modules/terraform-ibm-powervs-infrastructure/tree/main/solutions/standard-plus-vsi) +3. [Quickstart (Standard Landscape plus VSI)](https://github.com/terraform-ibm-modules/terraform-ibm-powervs-infrastructure/tree/main/solutions/standard-plus-vsi) - Creates a VPC and a Power Virtual Server workspace, interconnects them, and configures operating network management services (SQUID proxy, NTP, NFS, and DNS services) using Ansible Galaxy collection roles [ibm.power_linux_sap collection](https://galaxy.ansible.com/ui/repo/published/ibm/power_linux_sap/). - Additionally creates a Power Virtual Server Instance of a selected t-shirt size. - This solution is typically utilized for **PoCs, demos, and quick onboarding** to PowerVS Infrastructure. -4. [Import](https://github.com/terraform-ibm-modules/terraform-ibm-powervs-infrastructure/tree/main/solutions/import) - - Takes information about an existing infrastructure and creates a schematics workspace. - - The schematics workspace's ID and the outputs from it can be used to install the terraform solution 'Power Virtual Server for SAP HANA' on top of a pre-existing PowerVS infrastructure. - - It creates the ACL and security group rules necessary for management services (NTP, NFS, DNS, and proxy server) and schematics engine access. - - This solution is typically used for converting an existing Power Virtual Server landscape to a Schematics workspace. ## Reference architectures -- [Standard](https://github.com/terraform-ibm-modules/terraform-ibm-powervs-infrastructure/tree/main/reference-architectures/standard/deploy-arch-ibm-pvs-inf-standard.md) -- [Standard Extend](https://github.com/terraform-ibm-modules/terraform-ibm-powervs-infrastructure/tree/main/reference-architectures/standard-extend/deploy-arch-ibm-pvs-inf-standard-extend.md) -- [Quickstart (Standard plus VSI)](https://github.com/terraform-ibm-modules/terraform-ibm-powervs-infrastructure/tree/main/reference-architectures/standard-plus-vsi/deploy-arch-ibm-pvs-inf-standard-plus-vsi.md) +- [Standard Landscape](https://github.com/terraform-ibm-modules/terraform-ibm-powervs-infrastructure/tree/main/reference-architectures/standard/deploy-arch-ibm-pvs-inf-standard.md) +- [Extend Standard Landscape](https://github.com/terraform-ibm-modules/terraform-ibm-powervs-infrastructure/tree/main/reference-architectures/standard-extend/deploy-arch-ibm-pvs-inf-standard-extend.md) +- [Quickstart (Standard Landscape plus VSI)](https://github.com/terraform-ibm-modules/terraform-ibm-powervs-infrastructure/tree/main/reference-architectures/standard-plus-vsi/deploy-arch-ibm-pvs-inf-standard-plus-vsi.md) ## Solutions + | Variation | Available on IBM Catalog | Requires IBM Schematics Workspace ID | Creates VPC Landing Zone | Performs VPC VSI OS Config | Creates PowerVS Infrastructure | Creates PowerVS Instance | Performs PowerVS OS Config | | ------------- | ------------- | ------------- | ------------- | ------------- | ------------- | ------------- | ------------- | -| [Standard](https://github.com/terraform-ibm-modules/terraform-ibm-powervs-infrastructure/tree/main/solutions/standard) | :heavy_check_mark: | N/A | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | N/A | N/A | -| [Standard Extend](https://github.com/terraform-ibm-modules/terraform-ibm-powervs-infrastructure/tree/main/solutions/standard-extend) | :heavy_check_mark: | :heavy_check_mark: | N/A | N/A | :heavy_check_mark: | N/A | N/A | -| [Quickstart (Standard plus VSI)](https://github.com/terraform-ibm-modules/terraform-ibm-powervs-infrastructure/tree/main/solutions/standard-plus-vsi) | :heavy_check_mark: | N/A | :heavy_check_mark:| :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | N/A | -| [Import](https://github.com/terraform-ibm-modules/terraform-ibm-powervs-infrastructure/tree/main/solutions/import) | :heavy_check_mark: | N/A | N/A | N/A | N/A | N/A | N/A | +| [Standard Landscape](https://github.com/terraform-ibm-modules/terraform-ibm-powervs-infrastructure/tree/main/solutions/standard) | :heavy_check_mark: | N/A | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | N/A | N/A | +| [Extend Standard Landscape](https://github.com/terraform-ibm-modules/terraform-ibm-powervs-infrastructure/tree/main/solutions/standard-extend) | :heavy_check_mark: | :heavy_check_mark: | N/A | N/A | :heavy_check_mark: | N/A | N/A | +| [Quickstart (Standard Landscape plus VSI)](https://github.com/terraform-ibm-modules/terraform-ibm-powervs-infrastructure/tree/main/solutions/standard-plus-vsi) | :heavy_check_mark: | N/A | :heavy_check_mark:| :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | N/A | ## Required IAM access policies @@ -54,8 +49,6 @@ You need the following permissions to run this module. - `Editor` platform access - **Transit Gateway** service - `Editor` platform access - - **Direct Link** service - - `Editor` platform access ## Contributing diff --git a/common-dev-assets b/common-dev-assets index 1f72de03..8137b145 160000 --- a/common-dev-assets +++ b/common-dev-assets @@ -1 +1 @@ -Subproject commit 1f72de03a36f8ee5522aaacf0ba410b6481122e9 +Subproject commit 8137b14530a3d65a437f3115a92b9e2984e30a5d diff --git a/ibm_catalog.json b/ibm_catalog.json index a138586c..9d6931bb 100644 --- a/ibm_catalog.json +++ b/ibm_catalog.json @@ -37,7 +37,7 @@ "quickstart", "quick" ], - "short_description": "Build a IBM Cloud\u00ae Power Virtual Server Infrastructure (PowerVS) offering according to the best practices and requirements from the IBM Cloud.", + "short_description": "Deploy an IBM\u00ae Cloud Power Virtual Server (PowerVS) infrastructure in accordance with IBM Cloud best practices and compliance requirements.", "long_description": "IBM Cloud\u00ae Power Virtual Servers (PowerVS) is a public cloud offering that an enterprise can use to establish its own private IBM Power computing environment on shared public cloud infrastructure. PowerVS is logically isolated from all other public cloud tenants and infrastructure components, creating a private, secure place on the public cloud. This deployable architecture provides a framework to build a PowerVS offering according to the best practices and requirements from the IBM Cloud.", "offering_docs_url": "https://cloud.ibm.com/docs/powervs-vpc", "offering_icon_url": "data:image/svg+xml;base64,PHN2ZyBpZD0iUG93ZXJJbmZyYXN0cnVjdHVyZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayIgdmlld0JveD0iMCAwIDMyIDMyIj48ZGVmcz48bGluZWFyR3JhZGllbnQgaWQ9Inc2aHpjbXV6amEiIHgxPSItMTg1NS4yMDgiIHkxPSItMjUwMi41NjMiIHgyPSItMTg1NS4yMDgiIHkyPSItMjUyMi4xNzkiIGdyYWRpZW50VHJhbnNmb3JtPSJtYXRyaXgoMS4wNiAwIDAgLS40OTEgMTk3My42NzYgLTEyMjcuMjkzKSIgZ3JhZGllbnRVbml0cz0idXNlclNwYWNlT25Vc2UiPjxzdG9wIG9mZnNldD0iMCIvPjxzdG9wIG9mZnNldD0iLjgiIHN0b3Atb3BhY2l0eT0iMCIvPjwvbGluZWFyR3JhZGllbnQ+PGxpbmVhckdyYWRpZW50IGlkPSI2dmZkbzMxaXNiIiB4MT0iMzI4LjUwMiIgeTE9Ii02NzY1LjY0NyIgeDI9IjMyOC41MDIiIHkyPSItNjc4NS4yNjMiIGdyYWRpZW50VHJhbnNmb3JtPSJtYXRyaXgoMS4wNiAwIDAgLjUxNSAtMzM5Ljk2NiAzNTEzLjI1KSIgeGxpbms6aHJlZj0iI3c2aHpjbXV6amEiLz48bGluZWFyR3JhZGllbnQgaWQ9ImJ0eDNhMG9vZ2MiIHgxPSItOTUzLjI2NiIgeTE9Ii0yODI4LjY1OSIgeDI9Ii05NTMuMjY2IiB5Mj0iLTI4MzguNTMzIiBncmFkaWVudFRyYW5zZm9ybT0ibWF0cml4KDEuMDYgMCAwIC0uNjY5IDEwMzcuMjE4IC0xODc2LjQzOSkiIHhsaW5rOmhyZWY9IiN3Nmh6Y211emphIi8+PGxpbmVhckdyYWRpZW50IGlkPSI2NmhzYWNybDVkIiB4MT0iLTE5MjMuMjUiIHkxPSItMjYyMC4yOSIgeDI9Ii0xOTIzLjI1IiB5Mj0iLTI2MjcuODg0IiBncmFkaWVudFRyYW5zZm9ybT0ibWF0cml4KDEuMDYgMCAwIC42NjkgMjA0OC4wOTEgMTc4Mi4zNjQpIiB4bGluazpocmVmPSIjdzZoemNtdXpqYSIvPjxsaW5lYXJHcmFkaWVudCBpZD0idXp2YXRxaGhwZSIgeDE9Ii0xOTE1LjgwMiIgeTE9Ii0zMTkxLjI5NCIgeDI9Ii0xOTE1LjgwMiIgeTI9Ii0zMTk4Ljg4OSIgZ3JhZGllbnRUcmFuc2Zvcm09Im1hdHJpeCgxLjA2IDAgMCAuNjY5IDIwNDMuNDggMjE0MS4xMjgpIiB4bGluazpocmVmPSIjdzZoemNtdXpqYSIvPjxsaW5lYXJHcmFkaWVudCBpZD0iZTFxMWF3ZXJxZyIgeDE9IjAiIHkxPSIzMiIgeDI9IjMyIiB5Mj0iMCIgZ3JhZGllbnRVbml0cz0idXNlclNwYWNlT25Vc2UiPjxzdG9wIG9mZnNldD0iLjEiIHN0b3AtY29sb3I9IiMwOGJkYmEiLz48c3RvcCBvZmZzZXQ9Ii45IiBzdG9wLWNvbG9yPSIjMGY2MmZlIi8+PC9saW5lYXJHcmFkaWVudD48bWFzayBpZD0idnZmcnV4eXl1ZiIgeD0iMCIgeT0iMCIgd2lkdGg9IjMyIiBoZWlnaHQ9IjMyIiBtYXNrVW5pdHM9InVzZXJTcGFjZU9uVXNlIj48cGF0aCBkPSJNMTUuOTgyIDMwYy03LjcyIDAtMTQtNi4yOC0xNC0xNHM2LjI4MS0xNCAxNC0xNCAxNCA2LjI4IDE0IDE0LTYuMjggMTQtMTQgMTR6bTAtMjZjLTYuNjE3IDAtMTIgNS4zODMtMTIgMTJzNS4zODMgMTIgMTIgMTIgMTItNS4zODMgMTItMTItNS4zODMtMTItMTItMTJ6IiBzdHlsZT0iZmlsbDojZmZmIi8+PHBhdGggZD0iTTMwLjY5MSAzMC43MDhIMTEuNzI5bDMtOC43MDggMTAuNDY1LjAxMSA1LjU3Ny0uMDIxLS4wOCA4LjcxOHpNNi45ODIgMjBsLTYgNS40OTRWNi44MDdsNiA1LjAxNVYyMHpNMTYuMDAzIDFoMTQuOTk5djEzLjAzMkgxNi4wMDN6Ii8+PHBhdGggdHJhbnNmb3JtPSJyb3RhdGUoLTEzNSA3Ljk0MyA2Ljc4NykiIHN0eWxlPSJmaWxsOnVybCgjdzZoemNtdXpqYSkiIGQ9Ik00Ljc2NCAxLjk3aDYuMzU3djkuNjM1SDQuNzY0eiIvPjxwYXRoIHRyYW5zZm9ybT0icm90YXRlKDEzNSA4LjEwNiAyNS4zNDQpIiBzdHlsZT0iZmlsbDp1cmwoIzZ2ZmRvMzFpc2IpIiBkPSJNNC45MjggMjAuMjk1aDYuMzU3djEwLjA5OEg0LjkyOHoiLz48cGF0aCB0cmFuc2Zvcm09InJvdGF0ZSgxODAgMjcuMTYxIDE4Ljg2MykiIHN0eWxlPSJmaWxsOnVybCgjYnR4M2Ewb29nYykiIGQ9Ik0yMy45ODIgMTUuNTYxaDYuMzU3djYuNjA0aC02LjM1N3oiLz48cGF0aCB0cmFuc2Zvcm09InJvdGF0ZSgtNzAuNzkgMTAuMjYyIDI3LjE5NSkiIHN0eWxlPSJmaWxsOnVybCgjNjZoc2Fjcmw1ZCkiIGQ9Ik03LjA4NCAyNC42NTVoNi4zNTd2NS4wOEg3LjA4NHoiLz48cGF0aCBkPSJNOC45ODIgMjAuOThoLTZjLTEuMTAzIDAtMi0uODk3LTItMnYtNmMwLTEuMTAzLjg5Ny0yIDItMmg2YzEuMTAzIDAgMiAuODk3IDIgMnY2YzAgMS4xMDMtLjg5NyAyLTIgMnptLTYtOHY2aDYuMDAxdi02SDIuOTgyeiIgc3R5bGU9ImZpbGw6I2ZmZiIvPjxwYXRoIHRyYW5zZm9ybT0icm90YXRlKC05MCAxMy41NDMgNC4wMzIpIiBzdHlsZT0iZmlsbDp1cmwoI3V6dmF0cWhocGUpIiBkPSJNMTAuMzY0IDEuNDkyaDYuMzU3djUuMDhoLTYuMzU3eiIvPjxwYXRoIGQ9Ik0yNy4zMDQgNy4xMzRjMC0uMzctLjA2Ny0uNzIxLS4xNjEtMS4wNjJMMjkgNWwtMS0xLjczMi0xLjg0NyAxLjA2NmEzLjk5MSAzLjk5MSAwIDAgMC0xLjg0OS0xLjA1OFYxLjEzNGgtMnYyLjE0MmEzLjk5MSAzLjk5MSAwIDAgMC0xLjg0OSAxLjA1OGwtMS44NDctMS4wNjYtMSAxLjczMiAxLjg1NyAxLjA3MmMtLjA5NC4zNC0uMTYxLjY5Mi0uMTYxIDEuMDYycy4wNjcuNzIxLjE2MSAxLjA2MmwtMS44NTcgMS4wNzIgMSAxLjczMiAxLjg0Ny0xLjA2NmMuNS41MDkgMS4xMzguODczIDEuODQ5IDEuMDU4djIuMTQyaDJ2LTIuMTQyYTMuOTkxIDMuOTkxIDAgMCAwIDEuODQ5LTEuMDU4TDI4IDExbDEtMS43MzItMS44NTctMS4wNzJjLjA5NC0uMzQuMTYxLS42OTIuMTYxLTEuMDYyem0tNCAyYy0xLjEwMyAwLTItLjg5Ny0yLTJzLjg5Ny0yIDItMiAyIC44OTcgMiAyLS44OTcgMi0yIDJ6IiBzdHlsZT0iZmlsbDojZmZmIi8+PC9tYXNrPjwvZGVmcz48ZyBzdHlsZT0ibWFzazp1cmwoI3Z2ZnJ1eHl5dWYpIj48cGF0aCBzdHlsZT0iZmlsbDp1cmwoI2UxcTFhd2VycWcpIiBkPSJNMCAwaDMydjMySDB6Ii8+PC9nPjxwYXRoIGQ9Ik0yOS4wMDIgMzFoLTEzYy0xLjEwMyAwLTItLjg5Ny0yLTJ2LTRjMC0xLjEwMy44OTctMiAyLTJoMTNjMS4xMDMgMCAyIC44OTcgMiAydjRjMCAxLjEwMy0uODk3IDItMiAyem0tMTMtNnY0aDEzLjAwMXYtNEgxNi4wMDJ6IiBzdHlsZT0iZmlsbDojMDAxZDZjIi8+PGNpcmNsZSBjeD0iMTkuMDAyIiBjeT0iMjciIHI9IjEiIHN0eWxlPSJmaWxsOiMwMDFkNmMiLz48L3N2Zz4=", @@ -57,7 +57,7 @@ ], "flavors": [ { - "label": "Standard", + "label": "Standard Landscape", "name": "standard", "install_type": "fullstack", "index": 1, @@ -72,6 +72,25 @@ ] }, "configuration": [ + { + "key": "prefix", + "type": "string", + "default_value": "", + "required": true + }, + { + "key": "powervs_resource_group_name", + "required": true, + "default_value": "", + "custom_config": { + "config_constraints": { + "identifier": "rg_name" + }, + "grouping": "deployment", + "original_grouping": "deployment", + "type": "resource_group" + } + }, { "key": "powervs_zone", "type": "string", @@ -161,34 +180,11 @@ ], "custom_config": {} }, - { - "key": "powervs_resource_group_name", - "required": true, - "default_value": "", - "custom_config": { - "config_constraints": { - "identifier": "rg_name" - }, - "grouping": "deployment", - "original_grouping": "deployment", - "type": "resource_group" - } - }, - { - "key": "prefix", - "type": "string", - "default_value": "", - "required": true - }, { "key": "external_access_ip", "default_value": "__NULL__", "required": true }, - { - "key": "client_to_site_vpn", - "required": true - }, { "key": "ssh_public_key", "type": "multiline_secure_value", @@ -223,20 +219,13 @@ } }, { - "key": "powervs_image_names", - "required": true - }, - { - "key": "enable_monitoring", - "required": true + "key": "powervs_management_network" }, { - "key": "enable_scc_wp", - "required": true + "key": "powervs_backup_network" }, { - "key": "vpc_intel_images", - "hidden": true + "key": "tags" }, { "key": "powervs_custom_images", @@ -265,12 +254,11 @@ } }, { - "key": "ansible_vault_password", - "type": "multiline_secure_value", - "display_name": "ansible_vault_password" + "key": "transit_gateway_global" }, { - "key": "transit_gateway_global" + "key": "vpc_intel_images", + "hidden": true }, { "key": "network_services_vsi_profile" @@ -291,17 +279,22 @@ "key": "nfs_server_config" }, { - "key": "powervs_management_network" + "key": "enable_scc_wp" }, { - "key": "powervs_backup_network" + "key": "ansible_vault_password", + "type": "multiline_secure_value", + "display_name": "ansible_vault_password" }, { - "key": "tags" + "key": "enable_monitoring" }, { "key": "existing_monitoring_instance_crn" }, + { + "key": "client_to_site_vpn" + }, { "key": "sm_service_plan" }, @@ -503,12 +496,6 @@ ], "service_name": "transit.gateway" }, - { - "role_crns": [ - "crn:v1:bluemix:public:iam::::role:Editor" - ], - "service_name": "directlink.connect" - }, { "role_crns": [ "crn:v1:bluemix:public:iam::::serviceRole:Manager" @@ -554,8 +541,8 @@ "diagrams": [ { "diagram": { - "caption": "Power Virtual Server with VPC landing zone 'Standard' variation", - "url": "https://raw.githubusercontent.com/terraform-ibm-modules/terraform-ibm-powervs-infrastructure/refs/tags/v8.3.1/reference-architectures/standard/deploy-arch-ibm-pvs-inf-standard.svg", + "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.4.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." @@ -579,6 +566,24 @@ ] }, "configuration": [ + { + "key": "prefix", + "default_value": "", + "required": true + }, + { + "key": "powervs_resource_group_name", + "required": true, + "default_value": "", + "custom_config": { + "config_constraints": { + "identifier": "rg_name" + }, + "grouping": "deployment", + "original_grouping": "deployment", + "type": "resource_group" + } + }, { "key": "powervs_zone", "type": "string", @@ -668,11 +673,6 @@ ], "custom_config": {} }, - { - "key": "prefix", - "default_value": "", - "required": true - }, { "key": "tshirt_size", "type": "object", @@ -743,14 +743,14 @@ } }, { - "displayname": "SAP DEV RHEL (ush1-4x128,disk-750GB,RHEL9-SP4-SAP)", + "displayname": "SAP DEV RHEL (4x256,disk-750GB,RHEL9-SP4-SAP)", "value": { "tshirt_size": "sap_dev_rhel", "image": "RHEL9-SP4-SAP" } }, { - "displayname": "SAP DEV SLES (ush1-4x128,disk-750GB,SLES15-SP6-SAP)", + "displayname": "SAP DEV SLES (4x256,disk-750GB,SLES15-SP6-SAP)", "value": { "tshirt_size": "sap_dev_sles", "image": "SLES15-SP6-SAP" @@ -793,30 +793,11 @@ } }, { - "key": "powervs_resource_group_name", - "required": true, - "default_value": "", - "custom_config": { - "config_constraints": { - "identifier": "rg_name" - }, - "grouping": "deployment", - "original_grouping": "deployment", - "type": "resource_group" - } - }, - { - "key": "enable_monitoring", - "required": true - }, - { - "key": "enable_scc_wp", + "key": "ansible_vault_password", + "type": "multiline_secure_value", + "display_name": "ansible_vault_password", "required": true }, - { - "key": "vpc_intel_images", - "hidden": true - }, { "key": "custom_profile_instance_boot_image", "type": "string", @@ -906,9 +887,23 @@ } }, { - "key": "ansible_vault_password", - "type": "multiline_secure_value", - "display_name": "ansible_vault_password" + "key": "powervs_management_network" + }, + { + "key": "powervs_backup_network" + }, + { + "key": "tags" + }, + { + "key": "vpc_intel_images", + "hidden": true + }, + { + "key": "network_services_vsi_profile" + }, + { + "key": "external_access_ip" }, { "key": "configure_dns_forwarder" @@ -926,27 +921,17 @@ "key": "nfs_server_config" }, { - "key": "powervs_management_network" - }, - { - "key": "powervs_backup_network" + "key": "enable_scc_wp" }, { - "key": "tags" + "key": "enable_monitoring" }, { "key": "existing_monitoring_instance_crn" }, - { - "key": "external_access_ip", - "default_value": "0.0.0.0/0" - }, { "key": "client_to_site_vpn" }, - { - "key": "network_services_vsi_profile" - }, { "key": "sm_service_plan" }, @@ -1154,12 +1139,6 @@ ], "service_name": "transit.gateway" }, - { - "role_crns": [ - "crn:v1:bluemix:public:iam::::role:Editor" - ], - "service_name": "directlink.connect" - }, { "role_crns": [ "crn:v1:bluemix:public:iam::::serviceRole:Manager" @@ -1206,7 +1185,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.3.1/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/v8.4.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." @@ -1215,338 +1194,15 @@ } }, { - "label": "Import", - "name": "import", - "install_type": "fullstack", - "index": 3, - "working_directory": "solutions/import", - "compliance": {}, - "configuration": [ - { - "key": "access_host", - "required": true, - "default_value": "{\"vsi_name\":\"\",\"floating_ip\":\"\"}", - "custom_config": { - "grouping": "deployment", - "original_grouping": "deployment", - "type": "json_editor" - } - }, - { - "key": "proxy_server_ip_port", - "required": true, - "default_value": "{\"ip\":\"\",\"port\":\"\"}", - "custom_config": { - "grouping": "deployment", - "original_grouping": "deployment", - "type": "json_editor" - } - }, - { - "key": "transit_gateway_name", - "default_value": "", - "required": true - }, - { - "key": "powervs_zone", - "type": "string", - "required": true, - "default_value": "", - "options": [ - { - "displayname": "Dallas (dallas)", - "value": "us-south" - }, - { - "displayname": "Dallas 10 (dal10)", - "value": "dal10" - }, - { - "displayname": "Dallas 12 (dal12)", - "value": "dal12" - }, - { - "displayname": "Dallas 14 (dal14)", - "value": "dal14" - }, - { - "displayname": "Frankfurt 1 (eu-de-1)", - "value": "eu-de-1" - }, - { - "displayname": "Frankfurt 2 (eu-de-2)", - "value": "eu-de-2" - }, - { - "displayname": "London 04 (lon04)", - "value": "lon04" - }, - { - "displayname": "London 06 (lon06)", - "value": "lon06" - }, - { - "displayname": "Madrid 02 (mad02)", - "value": "mad02" - }, - { - "displayname": "Madrid 04 (mad04)", - "value": "mad04" - }, - { - "displayname": "Osaka 21 (osa21)", - "value": "osa21" - }, - { - "displayname": "Sao Paulo 01 (sao01)", - "value": "sao01" - }, - { - "displayname": "Sao Paulo 04 (sao04)", - "value": "sao04" - }, - { - "displayname": "Sydney 04 (syd04)", - "value": "syd04" - }, - { - "displayname": "Sydney 05 (syd05)", - "value": "syd05" - }, - { - "displayname": "Tokyo 04 (tok04)", - "value": "tok04" - }, - { - "displayname": "Toronto 01 (tor01)", - "value": "tor01" - }, - { - "displayname": "Washington DC (us-east)", - "value": "us-east" - }, - { - "displayname": "Washington DC 06 (wdc06)", - "value": "wdc06" - }, - { - "displayname": "Washington DC 07 (wdc07)", - "value": "wdc07" - } - ], - "custom_config": {} - }, - { - "key": "powervs_workspace_guid", - "default_value": "", - "required": true - }, - { - "key": "powervs_sshkey_name", - "default_value": "", - "required": true - }, - { - "key": "powervs_management_network_name", - "default_value": "", - "required": true - }, - { - "key": "powervs_backup_network_name", - "default_value": "", - "required": true - }, - { - "key": "ibmcloud_api_key", - "type": "multiline_secure_value", - "required": true, - "display_name": "Multiline secure value", - "custom_config": { - "grouping": "deployment", - "original_grouping": "deployment", - "type": "multiline_secure_value" - } - }, - { - "key": "dns_server_ip" - }, - { - "key": "ntp_server_ip" - }, - { - "key": "nfs_server_ip_path", - "custom_config": { - "grouping": "deployment", - "original_grouping": "deployment", - "type": "json_editor" - } - }, - { - "key": "IC_SCHEMATICS_WORKSPACE_ID", - "hidden": true - } - ], - "outputs": [ - { - "key": "prefix" - }, - { - "key": "ssh_public_key" - }, - { - "key": "transit_gateway_name" - }, - { - "key": "transit_gateway_id" - }, - { - "key": "access_host_or_ip" - }, - { - "key": "proxy_host_or_ip_port" - }, - { - "key": "dns_host_or_ip" - }, - { - "key": "ntp_host_or_ip" - }, - { - "key": "nfs_host_or_ip_path" - }, - { - "key": "powervs_zone" - }, - { - "key": "powervs_workspace_name" - }, - { - "key": "powervs_workspace_id" - }, - { - "key": "powervs_workspace_guid" - }, - { - "key": "powervs_ssh_public_key" - }, - { - "key": "powervs_management_subnet" - }, - { - "key": "powervs_backup_subnet" - }, - { - "key": "powervs_images" - }, - { - "key": "schematics_workspace_id" - } - ], - "iam_permissions": [ - { - "role_crns": [ - "crn:v1:bluemix:public:iam::::serviceRole:Manager" - ], - "service_name": "appid" - }, - { - "role_crns": [ - "crn:v1:bluemix:public:iam::::serviceRole:Manager" - ], - "service_name": "cloud-object-storage" - }, - { - "role_crns": [ - "crn:v1:bluemix:public:iam::::serviceRole:Manager" - ], - "service_name": "hs-crypto" - }, - { - "role_crns": [ - "crn:v1:bluemix:public:iam::::role:Administrator" - ], - "service_name": "iam-identity" - }, - { - "role_crns": [ - "crn:v1:bluemix:public:iam::::serviceRole:Manager" - ], - "service_name": "kms" - }, - { - "role_crns": [ - "crn:v1:bluemix:public:iam::::serviceRole:Manager", - "crn:v1:bluemix:public:iam::::role:Administrator" - ], - "service_name": "is.vpc" - }, - { - "role_crns": [ - "crn:v1:bluemix:public:iam::::role:Editor" - ], - "service_name": "is.vpc" - }, - { - "role_crns": [ - "crn:v1:bluemix:public:iam::::role:Editor" - ], - "service_name": "transit.gateway" - }, - { - "role_crns": [ - "crn:v1:bluemix:public:iam::::role:Editor" - ], - "service_name": "directlink.connect" - }, - { - "role_crns": [ - "crn:v1:bluemix:public:iam::::serviceRole:Manager" - ], - "service_name": "power-iaas" - } - ], - "architecture": { - "features": [ - { - "description": "Not created", - "title": "Power Virtual Server Instance" - }, - { - "description": "0", - "title": "Number of VPCs" - }, - { - "description": "0", - "title": "Number of Intel VSIs" - }, - { - "description": "0", - "title": "Power Virtual Server Workspace" - }, - { - "description": "Yes", - "title": "Schematics ACLs are inserted into existing Jump Hosts VPC" - } - ], - "diagrams": [ - { - "diagram": { - "caption": "Power Virtual Server with VPC landing zone 'Import' variation", - "url": "https://raw.githubusercontent.com/terraform-ibm-modules/terraform-ibm-powervs-infrastructure/refs/tags/v8.3.1/reference-architectures/import/deploy-arch-ibm-pvs-inf-import.svg", - "type": "image/svg+xml" - }, - "description": "This solution helps to install the deployable architecture 'Power Virtual Server for SAP HANA' on top of a pre-existing Power Virtual Server(PowerVS) landscape. 'Power Virtual Server for SAP HANA' automation requires a schematics workspace id for installation. The 'Import' solution creates a schematics workspace by taking pre-existing VPC and PowerVS infrastructure resource details as inputs. The ID of this schematics workspace will be the pre-requisite workspace id required by 'Power Virtual Server for SAP HANA' to create and configure the PowerVS instances for SAP on top of the existing infrastructure.\n \nRequired and optional management components are configured." - } - ] - } - }, - { - "label": "Standard", + "label": "Extend Standard Landscape", "name": "standard-extend", "install_type": "extension", "index": 4, "working_directory": "solutions/standard-extend", - "compliance": {}, + "compliance": { + "authority": "", + "profiles": [] + }, "dependencies": [ { "flavors": [ @@ -1698,10 +1354,6 @@ "type": "multiline_secure_value" } }, - { - "key": "powervs_image_names", - "required": true - }, { "key": "powervs_custom_images", "custom_config": { @@ -1832,12 +1484,6 @@ ], "service_name": "transit.gateway" }, - { - "role_crns": [ - "crn:v1:bluemix:public:iam::::role:Editor" - ], - "service_name": "directlink.connect" - }, { "role_crns": [ "crn:v1:bluemix:public:iam::::serviceRole:Manager" @@ -1855,8 +1501,8 @@ "diagrams": [ { "diagram": { - "caption": "Power Virtual Server with VPC landing zone 'Standard Extend' variation", - "url": "https://raw.githubusercontent.com/terraform-ibm-modules/terraform-ibm-powervs-infrastructure/refs/tags/v8.3.1/reference-architectures/standard-extend/deploy-arch-ibm-pvs-inf-standard-extend.svg", + "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.4.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/import-powervs-vpc/acl/main.tf b/modules/import-powervs-vpc/acl/main.tf deleted file mode 100644 index 71446b79..00000000 --- a/modules/import-powervs-vpc/acl/main.tf +++ /dev/null @@ -1,73 +0,0 @@ -data "ibm_is_network_acl_rules" "existing_acl_ds" { - network_acl = var.ibm_is_network_acl_id -} - -locals { - all_rules = data.ibm_is_network_acl_rules.existing_acl_ds.rules - inbound_rules = [for rule in local.all_rules : rule if rule.direction == "inbound"] - outbound_rules = [for rule in local.all_rules : rule if rule.direction == "outbound"] - inbound_before = length(local.inbound_rules) > 0 ? local.inbound_rules[0].rule_id : null - outbound_before = length(local.outbound_rules) > 0 ? local.outbound_rules[0].rule_id : null -} - -resource "ibm_is_network_acl_rule" "network_acl_rules" { - for_each = { for rule in var.acl_rules : rule.name => rule if rule.action != "deny" } - network_acl = var.ibm_is_network_acl_id - name = each.value.name - action = each.value.action - before = each.value.direction == "inbound" ? local.inbound_before : local.outbound_before - source = each.value.source - destination = each.value.destination - direction = each.value.direction - - dynamic "icmp" { - for_each = contains(keys(each.value), "icmp") && each.value.icmp != null ? [1] : [] - content { - type = each.value.icmp.type - code = each.value.icmp.code - } - } - - dynamic "tcp" { - for_each = contains(keys(each.value), "tcp") && each.value.tcp != null ? [1] : [] - content { - port_min = lookup(each.value.tcp, "port_min", null) - port_max = lookup(each.value.tcp, "port_max", null) - source_port_min = lookup(each.value.tcp, "source_port_min", null) - source_port_max = lookup(each.value.tcp, "source_port_max", null) - } - } - - dynamic "udp" { - for_each = contains(keys(each.value), "udp") && each.value.udp != null ? [1] : [] - content { - port_min = lookup(each.value.udp, "port_min", null) - port_max = lookup(each.value.udp, "port_max", null) - source_port_min = lookup(each.value.udp, "source_port_min", null) - source_port_max = lookup(each.value.udp, "source_port_max", null) - } - } -} - -resource "ibm_is_network_acl_rule" "deny_all_outbound" { - count = var.skip_deny_rules == true ? 0 : 1 - depends_on = [resource.ibm_is_network_acl_rule.network_acl_rules] - - network_acl = var.ibm_is_network_acl_id - name = "default-deny-outbound" - action = "deny" - source = "0.0.0.0/0" - destination = "0.0.0.0/0" - direction = "outbound" -} -resource "ibm_is_network_acl_rule" "deny_all_inbound" { - count = var.skip_deny_rules == true ? 0 : 1 - depends_on = [resource.ibm_is_network_acl_rule.network_acl_rules] - - network_acl = var.ibm_is_network_acl_id - name = "default-deny-inbound" - action = "deny" - source = "0.0.0.0/0" - destination = "0.0.0.0/0" - direction = "inbound" -} diff --git a/modules/import-powervs-vpc/acl/outputs.tf b/modules/import-powervs-vpc/acl/outputs.tf deleted file mode 100644 index e69de29b..00000000 diff --git a/modules/import-powervs-vpc/acl/variables.tf b/modules/import-powervs-vpc/acl/variables.tf deleted file mode 100644 index c89e027d..00000000 --- a/modules/import-powervs-vpc/acl/variables.tf +++ /dev/null @@ -1,36 +0,0 @@ -variable "acl_rules" { - description = "List of ACL rules which will be created" - type = list(object({ - name = string - action = string - direction = string - source = string - destination = string - tcp = optional(object({ - port_max = optional(string) - port_min = optional(string) - source_port_max = optional(string) - source_port_min = optional(string) - })) - udp = optional(object({ - port_max = optional(string) - port_min = optional(string) - source_port_max = optional(string) - source_port_min = optional(string) - })) - icmp = optional(object({ - type = optional(string) - code = optional(string) - })) - })) -} - -variable "ibm_is_network_acl_id" { - description = "An existing VPC's existing network ACL id to which rules will be added." - type = string -} - -variable "skip_deny_rules" { - description = "This boolean value decides if the default deny rules should be created for the respective ACl." - type = bool -} diff --git a/modules/import-powervs-vpc/acl/versions.tf b/modules/import-powervs-vpc/acl/versions.tf deleted file mode 100644 index 50f2227e..00000000 --- a/modules/import-powervs-vpc/acl/versions.tf +++ /dev/null @@ -1,13 +0,0 @@ -##################################################### -# powervs service Module -##################################################### - -terraform { - required_version = ">= 1.9" - required_providers { - ibm = { - source = "IBM-Cloud/ibm" - version = ">=1.65.1" - } - } -} diff --git a/modules/import-powervs-vpc/powervs/main.tf b/modules/import-powervs-vpc/powervs/main.tf deleted file mode 100644 index 7c97dd4e..00000000 --- a/modules/import-powervs-vpc/powervs/main.tf +++ /dev/null @@ -1,17 +0,0 @@ -data "ibm_pi_workspace" "powervs_workspace_ds" { - pi_cloud_instance_id = var.pi_workspace_guid -} - -data "ibm_pi_images" "powervs_workspace_images_ds" { - pi_cloud_instance_id = var.pi_workspace_guid -} - -data "ibm_pi_network" "powervs_management_network_ds" { - pi_network_name = var.pi_management_network_name - pi_cloud_instance_id = var.pi_workspace_guid -} - -data "ibm_pi_network" "powervs_backup_network_ds" { - pi_network_name = var.pi_backup_network_name - pi_cloud_instance_id = var.pi_workspace_guid -} diff --git a/modules/import-powervs-vpc/powervs/outputs.tf b/modules/import-powervs-vpc/powervs/outputs.tf deleted file mode 100644 index a9c481df..00000000 --- a/modules/import-powervs-vpc/powervs/outputs.tf +++ /dev/null @@ -1,40 +0,0 @@ -output "powervs_workspace_name" { - description = "The name of the PowerVS workspace." - value = data.ibm_pi_workspace.powervs_workspace_ds.pi_workspace_name -} - -output "powervs_workspace_id" { - description = "PowerVS infrastructure workspace ID." - value = data.ibm_pi_workspace.powervs_workspace_ds.id -} - -output "powervs_workspace_crn" { - description = "PowerVS infrastructure workspace CRN." - value = data.ibm_pi_workspace.powervs_workspace_ds.pi_workspace_details[0].crn -} - - -output "powervs_images" { - description = "Object containing imported PowerVS image names and image ids." - value = { - for image in data.ibm_pi_images.powervs_workspace_images_ds.image_info : image.name => image.id - } -} - -output "powervs_management_network_subnet" { - description = "Subnet details of management network in existing PowerVS infrastructure." - value = tomap({ - "cidr" = data.ibm_pi_network.powervs_management_network_ds.cidr - "id" = data.ibm_pi_network.powervs_management_network_ds.id - "name" = var.pi_management_network_name - }) -} - -output "powervs_backup_network_subnet" { - description = "Subnet details of backup network in existing PowerVS infrastructure." - value = tomap({ - "cidr" = data.ibm_pi_network.powervs_backup_network_ds.cidr - "id" = data.ibm_pi_network.powervs_backup_network_ds.id - "name" = var.pi_backup_network_name - }) -} diff --git a/modules/import-powervs-vpc/powervs/variables.tf b/modules/import-powervs-vpc/powervs/variables.tf deleted file mode 100644 index 09dc55bd..00000000 --- a/modules/import-powervs-vpc/powervs/variables.tf +++ /dev/null @@ -1,14 +0,0 @@ -variable "pi_workspace_guid" { - description = "An existing PowerVS infrastructure workspace GUID." - type = string -} - -variable "pi_management_network_name" { - description = "The name of existing management network in PowerVS infrastructure." - type = string -} - -variable "pi_backup_network_name" { - description = "The name of existing backup network in PowerVS infrastructure." - type = string -} diff --git a/modules/import-powervs-vpc/powervs/versions.tf b/modules/import-powervs-vpc/powervs/versions.tf deleted file mode 100644 index 403c2213..00000000 --- a/modules/import-powervs-vpc/powervs/versions.tf +++ /dev/null @@ -1,13 +0,0 @@ -##################################################### -# IBM Cloud PowerVS workspace Module -##################################################### - -terraform { - required_version = ">= 1.9" - required_providers { - ibm = { - source = "IBM-Cloud/ibm" - version = ">=1.65.1" - } - } -} diff --git a/modules/import-powervs-vpc/presets/vpc_acl_rules.json.tftpl b/modules/import-powervs-vpc/presets/vpc_acl_rules.json.tftpl deleted file mode 100644 index 2fa49d10..00000000 --- a/modules/import-powervs-vpc/presets/vpc_acl_rules.json.tftpl +++ /dev/null @@ -1,576 +0,0 @@ -{ - "management_acl": [ - %{ if "${access_host_ip}" != "" && "${access_host_ip}" != null } - { - "name": "management-acl", - "rules": [ - { - "name": "iw-ssh-inbound-schematics1", - "action": "allow", - "direction": "inbound", - "source": "169.45.235.176/28", - "destination": "${access_host_ip}", - "tcp": { - "port_max": 22, - "port_min": 22 - } - }, - { - "name": "iw-ssh-outbound-schematics1", - "action": "allow", - "direction": "outbound", - "source": "${access_host_ip}", - "destination": "169.45.235.176/28", - "tcp": { - "source_port_max": 22, - "source_port_min": 22 - } - }, - { - "name": "iw-ssh-inbound-schematics2", - "action": "allow", - "direction": "inbound", - "source": "169.55.82.128/27", - "destination": "${access_host_ip}", - "tcp": { - "port_max": 22, - "port_min": 22 - } - }, - { - "name": "iw-ssh-outbound-schematics2", - "action": "allow", - "direction": "outbound", - "source": "${access_host_ip}", - "destination": "169.55.82.128/28", - "tcp": { - "source_port_max": 22, - "source_port_min": 22 - } - }, - { - "name": "iw-ssh-inbound-schematics3", - "action": "allow", - "direction": "inbound", - "source": "169.60.115.32/27", - "destination": "${access_host_ip}", - "tcp": { - "port_max": 22, - "port_min": 22 - } - }, - { - "name": "iw-ssh-outbound-schematics3", - "action": "allow", - "direction": "outbound", - "source": "${access_host_ip}", - "destination": "169.60.115.32/27", - "tcp": { - "source_port_max": 22, - "source_port_min": 22 - } - }, - { - "name": "iw-ssh-inbound-schematics4", - "action": "allow", - "direction": "inbound", - "source": "169.63.150.144/28", - "destination": "${access_host_ip}", - "tcp": { - "port_max": 22, - "port_min": 22 - } - }, - { - "name": "iw-ssh-outbound-schematics4", - "action": "allow", - "direction": "outbound", - "source": "${access_host_ip}", - "destination": "169.63.150.144/28", - "tcp": { - "source_port_max": 22, - "source_port_min": 22 - } - }, - { - "name": "iw-ssh-inbound-schematics5", - "action": "allow", - "direction": "inbound", - "source": "169.62.1.224/28", - "destination": "${access_host_ip}", - "tcp": { - "port_max": 22, - "port_min": 22 - } - }, - { - "name": "iw-ssh-outbound-schematics5", - "action": "allow", - "direction": "outbound", - "source": "${access_host_ip}", - "destination": "169.62.1.224/28", - "tcp": { - "source_port_max": 22, - "source_port_min": 22 - } - }, - { - "name": "iw-ssh-inbound-schematics6", - "action": "allow", - "direction": "inbound", - "source": "169.62.53.64/27", - "destination": "${access_host_ip}", - "tcp": { - "port_max": 22, - "port_min": 22 - } - }, - { - "name": "iw-ssh-outbound-schematics6", - "action": "allow", - "direction": "outbound", - "source": "${access_host_ip}", - "destination": "169.62.53.64/27", - "tcp": { - "source_port_max": 22, - "source_port_min": 22 - } - }, - { - "name": "iw-ssh-inbound-schematics7", - "action": "allow", - "direction": "inbound", - "source": "150.238.230.128/27", - "destination": "${access_host_ip}", - "tcp": { - "port_max": 22, - "port_min": 22 - } - }, - { - "name": "iw-ssh-outbound-schematics7", - "action": "allow", - "direction": "outbound", - "source": "${access_host_ip}", - "destination": "150.238.230.128/27", - "tcp": { - "source_port_max": 22, - "source_port_min": 22 - } - }, - { - "name": "iw-ssh-inbound-schematics8", - "action": "allow", - "direction": "inbound", - "source": "169.63.254.64/28", - "destination": "${access_host_ip}", - "tcp": { - "port_max": 22, - "port_min": 22 - } - }, - { - "name": "iw-ssh-outbound-schematics8", - "action": "allow", - "direction": "outbound", - "source": "${access_host_ip}", - "destination": "169.63.254.64/28", - "tcp": { - "source_port_max": 22, - "source_port_min": 22 - } - }, - { - "name": "iw-ssh-inbound-schematics9", - "action": "allow", - "direction": "inbound", - "source": "169.47.104.160/28", - "destination": "${access_host_ip}", - "tcp": { - "port_max": 22, - "port_min": 22 - } - }, - { - "name": "iw-ssh-outbound-schematics9", - "action": "allow", - "direction": "outbound", - "source": "${access_host_ip}", - "destination": "169.47.104.160/28", - "tcp": { - "source_port_max": 22, - "source_port_min": 22 - } - }, - { - "name": "iw-ssh-inbound-schematics10", - "action": "allow", - "direction": "inbound", - "source": "169.61.191.64/27", - "destination": "${access_host_ip}", - "tcp": { - "port_max": 22, - "port_min": 22 - } - }, - { - "name": "iw-ssh-outbound-schematics10", - "action": "allow", - "direction": "outbound", - "source": "${access_host_ip}", - "destination": "169.61.191.64/27", - "tcp": { - "source_port_max": 22, - "source_port_min": 22 - } - }, - { - "name": "iw-ssh-inbound-schematics11", - "action": "allow", - "direction": "inbound", - "source": "169.60.172.144/28", - "destination": "${access_host_ip}", - "tcp": { - "port_max": 22, - "port_min": 22 - } - }, - { - "name": "iw-ssh-outbound-schematics11", - "action": "allow", - "direction": "outbound", - "source": "${access_host_ip}", - "destination": "169.60.172.144/28", - "tcp": { - "source_port_max": 22, - "source_port_min": 22 - } - }, - { - "name": "iw-ssh-inbound-schematics12", - "action": "allow", - "direction": "inbound", - "source": "169.62.204.32/27", - "destination": "${access_host_ip}", - "tcp": { - "port_max": 22, - "port_min": 22 - } - }, - { - "name": "iw-ssh-outbound-schematics12", - "action": "allow", - "direction": "outbound", - "source": "${access_host_ip}", - "destination": "169.62.204.32/27", - "tcp": { - "source_port_max": 22, - "source_port_min": 22 - } - }, - { - "name": "iw-ssh-inbound-schematics13", - "action": "allow", - "direction": "inbound", - "source": "158.175.106.64/27", - "destination": "${access_host_ip}", - "tcp": { - "port_max": 22, - "port_min": 22 - } - }, - { - "name": "iw-ssh-outbound-schematics13", - "action": "allow", - "direction": "outbound", - "source": "${access_host_ip}", - "destination": "158.175.106.64/27", - "tcp": { - "source_port_max": 22, - "source_port_min": 22 - } - }, - { - "name": "iw-ssh-inbound-schematics14", - "action": "allow", - "direction": "inbound", - "source": "158.175.138.176/28", - "destination": "${access_host_ip}", - "tcp": { - "port_max": 22, - "port_min": 22 - } - }, - { - "name": "iw-ssh-outbound-schematics14", - "action": "allow", - "direction": "outbound", - "source": "${access_host_ip}", - "destination": "158.175.138.176/28", - "tcp": { - "source_port_max": 22, - "source_port_min": 22 - } - }, - { - "name": "iw-ssh-inbound-schematics15", - "action": "allow", - "direction": "inbound", - "source": "141.125.79.160/28", - "destination": "${access_host_ip}", - "tcp": { - "port_max": 22, - "port_min": 22 - } - }, - { - "name": "iw-ssh-outbound-schematics15", - "action": "allow", - "direction": "outbound", - "source": "${access_host_ip}", - "destination": "141.125.79.160/28", - "tcp": { - "source_port_max": 22, - "source_port_min": 22 - } - }, - { - "name": "iw-ssh-inbound-schematics16", - "action": "allow", - "direction": "inbound", - "source": "141.125.142.96/27", - "destination": "${access_host_ip}", - "tcp": { - "port_max": 22, - "port_min": 22 - } - }, - { - "name": "iw-ssh-outbound-schematics16", - "action": "allow", - "direction": "outbound", - "source": "${access_host_ip}", - "destination": "141.125.142.96/27", - "tcp": { - "source_port_max": 22, - "source_port_min": 22 - } - }, - { - "name": "iw-ssh-inbound-schematics17", - "action": "allow", - "direction": "inbound", - "source": "158.176.111.64/27", - "destination": "${access_host_ip}", - "tcp": { - "port_max": 22, - "port_min": 22 - } - }, - { - "name": "iw-ssh-outbound-schematics17", - "action": "allow", - "direction": "outbound", - "source": "${access_host_ip}", - "destination": "158.176.111.64/27", - "tcp": { - "source_port_max": 22, - "source_port_min": 22 - } - }, - { - "name": "iw-ssh-inbound-schematics18", - "action": "allow", - "direction": "inbound", - "source": "158.176.134.80/28", - "destination": "${access_host_ip}", - "tcp": { - "port_max": 22, - "port_min": 22 - } - }, - { - "name": "iw-ssh-outbound-schematics18", - "action": "allow", - "direction": "outbound", - "source": "${access_host_ip}", - "destination": "158.176.134.80/28", - "tcp": { - "source_port_max": 22, - "source_port_min": 22 - } - }, - { - "name": "iw-ssh-inbound-schematics19", - "action": "allow", - "direction": "inbound", - "source": "149.81.123.64/27", - "destination": "${access_host_ip}", - "tcp": { - "port_max": 22, - "port_min": 22 - } - }, - { - "name": "iw-ssh-outbound-schematics19", - "action": "allow", - "direction": "outbound", - "source": "${access_host_ip}", - "destination": "149.81.123.64/27", - "tcp": { - "source_port_max": 22, - "source_port_min": 22 - } - }, - { - "name": "iw-ssh-inbound-schematics20", - "action": "allow", - "direction": "inbound", - "source": "149.81.135.64/28", - "destination": "${access_host_ip}", - "tcp": { - "port_max": 22, - "port_min": 22 - } - }, - { - "name": "iw-ssh-outbound-schematics20", - "action": "allow", - "direction": "outbound", - "source": "${access_host_ip}", - "destination": "149.81.135.64/28", - "tcp": { - "source_port_max": 22, - "source_port_min": 22 - } - }, - { - "name": "iw-ssh-inbound-schematics21", - "action": "allow", - "direction": "inbound", - "source": "158.177.210.176/28", - "destination": "${access_host_ip}", - "tcp": { - "port_max": 22, - "port_min": 22 - } - }, - { - "name": "iw-ssh-outbound-schematics21", - "action": "allow", - "direction": "outbound", - "source": "${access_host_ip}", - "destination": "158.177.210.176/28", - "tcp": { - "source_port_max": 22, - "source_port_min": 22 - } - }, - { - "name": "iw-ssh-inbound-schematics22", - "action": "allow", - "direction": "inbound", - "source": "158.177.216.144/28", - "destination": "${access_host_ip}", - "tcp": { - "port_max": 22, - "port_min": 22 - } - }, - { - "name": "iw-ssh-outbound-schematics22", - "action": "allow", - "direction": "outbound", - "source": "${access_host_ip}", - "destination": "158.177.216.144/28", - "tcp": { - "source_port_max": 22, - "source_port_min": 22 - } - }, - { - "name": "iw-ssh-inbound-schematics23", - "action": "allow", - "direction": "inbound", - "source": "161.156.138.80/28", - "destination": "${access_host_ip}", - "tcp": { - "port_max": 22, - "port_min": 22 - } - }, - { - "name": "iw-ssh-outbound-schematics23", - "action": "allow", - "direction": "outbound", - "source": "${access_host_ip}", - "destination": "161.156.138.80/28", - "tcp": { - "source_port_max": 22, - "source_port_min": 22 - } - }, - { - "name": "iw-ssh-inbound-schematics24", - "action": "allow", - "direction": "inbound", - "source": "159.122.111.224/27", - "destination": "${access_host_ip}", - "tcp": { - "port_max": 22, - "port_min": 22 - } - }, - { - "name": "iw-ssh-outbound-schematics24", - "action": "allow", - "direction": "outbound", - "source": "${access_host_ip}", - "destination": "159.122.111.224/27", - "tcp": { - "source_port_max": 22, - "source_port_min": 22 - } - }, - { - "name": "iw-ssh-inbound-schematics25", - "action": "allow", - "direction": "inbound", - "source": "161.156.37.160/27", - "destination": "${access_host_ip}", - "tcp": { - "port_max": 22, - "port_min": 22 - } - }, - { - "name": "iw-ssh-outbound-schematics25", - "action": "allow", - "direction": "outbound", - "source": "${access_host_ip}", - "destination": "161.156.37.160/27", - "tcp": { - "source_port_max": 22, - "source_port_min": 22 - } - }, - - { - "name": "default-inbound-deny", - "action": "deny", - "direction": "inbound", - "source": "0.0.0.0/0", - "destination": "0.0.0.0/0" - }, - { - "name": "default-outbound-deny", - "action": "deny", - "direction": "outbound", - "source": "0.0.0.0/0", - "destination": "0.0.0.0/0" - } - ] - } - %{ endif } - ] -} diff --git a/modules/import-powervs-vpc/presets/vpc_sg_rules.json.tftpl b/modules/import-powervs-vpc/presets/vpc_sg_rules.json.tftpl deleted file mode 100644 index b5614cb6..00000000 --- a/modules/import-powervs-vpc/presets/vpc_sg_rules.json.tftpl +++ /dev/null @@ -1,19 +0,0 @@ -{ - "management_sg": { - "name": "management", - "vpc_name": "management", - "rules": [ - %{ if "${access_host_ip}" != "" && "${access_host_ip}" != null } - { - "direction": "inbound", - "name": "iw-allow-ibm-tcp-22-inbound", - "source": "0.0.0.0/0", - "tcp": { - "port_max": 22, - "port_min": 22 - } - } - %{ endif } - ] - } -} diff --git a/modules/import-powervs-vpc/security-group/main.tf b/modules/import-powervs-vpc/security-group/main.tf deleted file mode 100644 index 92564e62..00000000 --- a/modules/import-powervs-vpc/security-group/main.tf +++ /dev/null @@ -1,30 +0,0 @@ -resource "ibm_is_security_group_rule" "sg_rules" { - for_each = { for rule in var.sg_rules : rule.name => rule } - group = var.sg_id - direction = each.value.direction - remote = each.value.source - - dynamic "icmp" { - for_each = contains(keys(each.value), "icmp") && each.value.icmp != null ? [1] : [] - content { - type = each.value.icmp.type - code = each.value.icmp.code - } - } - - dynamic "tcp" { - for_each = contains(keys(each.value), "tcp") && each.value.tcp != null ? [1] : [] - content { - port_min = lookup(each.value.tcp, "port_min", null) - port_max = lookup(each.value.tcp, "port_max", null) - } - } - - dynamic "udp" { - for_each = contains(keys(each.value), "udp") && each.value.udp != null ? [1] : [] - content { - port_min = lookup(each.value.udp, "port_min", null) - port_max = lookup(each.value.udp, "port_max", null) - } - } -} diff --git a/modules/import-powervs-vpc/security-group/outputs.tf b/modules/import-powervs-vpc/security-group/outputs.tf deleted file mode 100644 index e69de29b..00000000 diff --git a/modules/import-powervs-vpc/security-group/variables.tf b/modules/import-powervs-vpc/security-group/variables.tf deleted file mode 100644 index 425d8c65..00000000 --- a/modules/import-powervs-vpc/security-group/variables.tf +++ /dev/null @@ -1,25 +0,0 @@ -variable "sg_rules" { - description = "List of Security Group rules which will be created." - type = list(object({ - name = string - direction = string - source = optional(string) - tcp = optional(object({ - port_max = optional(string) - port_min = optional(string) - })) - udp = optional(object({ - port_max = optional(string) - port_min = optional(string) - })) - icmp = optional(object({ - type = optional(string) - code = optional(string) - })) - })) -} - -variable "sg_id" { - description = "An existing VPC's existing security group id to which rules will be added." - type = string -} diff --git a/modules/import-powervs-vpc/security-group/versions.tf b/modules/import-powervs-vpc/security-group/versions.tf deleted file mode 100644 index 50f2227e..00000000 --- a/modules/import-powervs-vpc/security-group/versions.tf +++ /dev/null @@ -1,13 +0,0 @@ -##################################################### -# powervs service Module -##################################################### - -terraform { - required_version = ">= 1.9" - required_providers { - ibm = { - source = "IBM-Cloud/ibm" - version = ">=1.65.1" - } - } -} diff --git a/modules/import-powervs-vpc/vpc/main.tf b/modules/import-powervs-vpc/vpc/main.tf deleted file mode 100644 index b5940917..00000000 --- a/modules/import-powervs-vpc/vpc/main.tf +++ /dev/null @@ -1,16 +0,0 @@ -data "ibm_is_instance" "vsi_ds" { - name = var.vsi_name -} - -data "ibm_is_vpc" "vpc_ds" { - identifier = data.ibm_is_instance.vsi_ds.vpc -} - -locals { - ssh_public_key_name = data.ibm_is_instance.vsi_ds.keys[0].name -} - -data "ibm_is_ssh_key" "jump_host_ssh_key_ds" { - count = length(data.ibm_is_instance.vsi_ds.keys) > 0 ? 1 : 0 - name = local.ssh_public_key_name -} diff --git a/modules/import-powervs-vpc/vpc/outputs.tf b/modules/import-powervs-vpc/vpc/outputs.tf deleted file mode 100644 index 5b2a5a88..00000000 --- a/modules/import-powervs-vpc/vpc/outputs.tf +++ /dev/null @@ -1,19 +0,0 @@ -output "vsi_ds" { - description = "The retrieved VSI data." - value = data.ibm_is_instance.vsi_ds -} - -output "vsi_primary_ip" { - description = "The VSI IP address." - value = data.ibm_is_instance.vsi_ds.primary_network_interface[0].primary_ip[0].address -} - -output "vsi_ssh_public_key" { - description = "VSI SSH Public key." - value = data.ibm_is_ssh_key.jump_host_ssh_key_ds -} - -output "vpc" { - description = "The retrieved VPC data." - value = data.ibm_is_vpc.vpc_ds -} diff --git a/modules/import-powervs-vpc/vpc/variables.tf b/modules/import-powervs-vpc/vpc/variables.tf deleted file mode 100644 index 4a8bf837..00000000 --- a/modules/import-powervs-vpc/vpc/variables.tf +++ /dev/null @@ -1,4 +0,0 @@ -variable "vsi_name" { - description = "Name of the existing VSI" - type = string -} diff --git a/modules/import-powervs-vpc/vpc/versions.tf b/modules/import-powervs-vpc/vpc/versions.tf deleted file mode 100644 index 403c2213..00000000 --- a/modules/import-powervs-vpc/vpc/versions.tf +++ /dev/null @@ -1,13 +0,0 @@ -##################################################### -# IBM Cloud PowerVS workspace Module -##################################################### - -terraform { - required_version = ">= 1.9" - required_providers { - ibm = { - source = "IBM-Cloud/ibm" - version = ">=1.65.1" - } - } -} diff --git a/modules/powervs-vpc-landing-zone/README.md b/modules/powervs-vpc-landing-zone/README.md index 79733636..ed9bde33 100644 --- a/modules/powervs-vpc-landing-zone/README.md +++ b/modules/powervs-vpc-landing-zone/README.md @@ -25,7 +25,6 @@ This module provisions the following resources in IBM Cloud: - Creates two private networks: a management network and a backup network. - Attaches the PowerVS workspace to transit gateway - Creates an SSH key. - - Optionally imports list of stock catalog images. - Optionally imports up to three custom images from Cloud Object Storage. - Finally, interconnects both VPC and PowerVS infrastructure. @@ -66,7 +65,6 @@ module "powervs-vpc-landing-zone" { powervs_resource_group_name = var.powervs_resource_group_name #(optional. default check vars) powervs_management_network = var.powervs_management_network #(optional. default check vars) powervs_backup_network = var.powervs_backup_network #(optional. default check vars) - powervs_image_names = var.powervs_image_names #(optional. default check vars) tags = var.tags #(optional. default check vars) sm_service_plan = var.sm_service_plan powervs_custom_images = var.powervs_custom_images #(optional, default null) @@ -90,8 +88,8 @@ Creates VPC Landing Zone | Performs VPC VSI OS Config | Creates PowerVS Infrastr ## Supported Reference architectures -1. [Standard variation](https://github.com/terraform-ibm-modules/terraform-ibm-powervs-infrastructure/blob/main/reference-architectures/standard/deploy-arch-ibm-pvs-inf-standard.svg) -2. [Quickstart (Standard plus VSI) variation](https://github.com/terraform-ibm-modules/terraform-ibm-powervs-infrastructure/blob/main/reference-architectures/standard-plus-vsi/deploy-arch-ibm-pvs-inf-standard-plus-vsi.svg) +1. [Standard Landscape Variation](https://github.com/terraform-ibm-modules/terraform-ibm-powervs-infrastructure/blob/main/reference-architectures/standard/deploy-arch-ibm-pvs-inf-standard.svg) +2. [Quickstart (Standard Landscape plus VSI) variation](https://github.com/terraform-ibm-modules/terraform-ibm-powervs-infrastructure/blob/main/reference-architectures/standard-plus-vsi/deploy-arch-ibm-pvs-inf-standard-plus-vsi.svg) @@ -106,15 +104,15 @@ Creates VPC Landing Zone | Performs VPC VSI OS Config | Creates PowerVS Infrastr | Name | Source | Version | |------|--------|---------| -| [client\_to\_site\_vpn](#module\_client\_to\_site\_vpn) | terraform-ibm-modules/client-to-site-vpn/ibm | 3.0.2 | +| [client\_to\_site\_vpn](#module\_client\_to\_site\_vpn) | terraform-ibm-modules/client-to-site-vpn/ibm | 3.0.4 | | [configure\_monitoring\_host](#module\_configure\_monitoring\_host) | ./submodules/ansible | n/a | | [configure\_network\_services](#module\_configure\_network\_services) | ./submodules/ansible | n/a | | [configure\_scc\_wp\_agent](#module\_configure\_scc\_wp\_agent) | ./submodules/ansible | n/a | | [landing\_zone](#module\_landing\_zone) | terraform-ibm-modules/landing-zone/ibm//patterns//vsi//module | 7.4.4 | -| [powervs\_workspace](#module\_powervs\_workspace) | terraform-ibm-modules/powervs-workspace/ibm | 2.5.0 | +| [powervs\_workspace](#module\_powervs\_workspace) | terraform-ibm-modules/powervs-workspace/ibm | 3.0.1 | | [private\_secret\_engine](#module\_private\_secret\_engine) | terraform-ibm-modules/secrets-manager-private-cert-engine/ibm | 1.3.6 | -| [scc\_wp\_instance](#module\_scc\_wp\_instance) | terraform-ibm-modules/scc-workload-protection/ibm | 1.5.8 | -| [secrets\_manager\_group](#module\_secrets\_manager\_group) | terraform-ibm-modules/secrets-manager-secret-group/ibm | 1.3.2 | +| [scc\_wp\_instance](#module\_scc\_wp\_instance) | terraform-ibm-modules/scc-workload-protection/ibm | 1.5.10 | +| [secrets\_manager\_group](#module\_secrets\_manager\_group) | terraform-ibm-modules/secrets-manager-secret-group/ibm | 1.3.4 | | [secrets\_manager\_private\_certificate](#module\_secrets\_manager\_private\_certificate) | terraform-ibm-modules/secrets-manager-private-cert/ibm | 1.3.3 | | [vpc\_file\_share\_alb](#module\_vpc\_file\_share\_alb) | ./submodules/fileshare-alb | n/a | @@ -150,7 +148,6 @@ Creates VPC Landing Zone | Performs VPC VSI OS Config | Creates PowerVS Infrastr | [powervs\_custom\_image\_cos\_configuration](#input\_powervs\_custom\_image\_cos\_configuration) | Cloud Object Storage bucket containing custom PowerVS images. bucket\_name: string, name of the COS bucket. bucket\_access: string, possible values: public, private (private requires powervs\_custom\_image\_cos\_service\_credentials). bucket\_region: string, COS bucket region |
object({
bucket_name = string
bucket_access = string
bucket_region = string
}) | {
"bucket_access": "",
"bucket_name": "",
"bucket_region": ""
} | no |
| [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\_image\_names](#input\_powervs\_image\_names) | List of Images to be imported into cloud account from catalog images. Supported values can be found [here](https://github.com/terraform-ibm-modules/terraform-ibm-powervs-workspace/blob/main/docs/catalog_images_list.md). For custom os image import configure the optional parameter 'powervs\_custom\_images'. | `list(string)` | [| no | | [powervs\_management\_network](#input\_powervs\_management\_network) | Name of the IBM Cloud PowerVS management subnet and CIDR to create. |
"IBMi-75-05-2984-1",
"IBMi-74-11-2984-1",
"7200-05-09",
"7300-03-00",
"SLES15-SP6-SAP",
"SLES15-SP6-SAP-NETWEAVER",
"RHEL9-SP4-SAP",
"RHEL9-SP4-SAP-NETWEAVER"
]
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\_zone](#input\_powervs\_zone) | IBM Cloud data center location where IBM PowerVS infrastructure will be created. | `string` | n/a | yes |
diff --git a/modules/powervs-vpc-landing-zone/client2sitevpn.tf b/modules/powervs-vpc-landing-zone/client2sitevpn.tf
index 5b4404b1..9a4fcd3e 100644
--- a/modules/powervs-vpc-landing-zone/client2sitevpn.tf
+++ b/modules/powervs-vpc-landing-zone/client2sitevpn.tf
@@ -93,7 +93,7 @@ module "private_secret_engine" {
# Create a secret group to place the certificate in
module "secrets_manager_group" {
source = "terraform-ibm-modules/secrets-manager-secret-group/ibm"
- version = "1.3.2"
+ version = "1.3.4"
providers = { ibm = ibm.ibm-sm }
count = var.client_to_site_vpn.enable ? 1 : 0
@@ -126,7 +126,7 @@ module "secrets_manager_private_certificate" {
# Create client to site VPN Server
module "client_to_site_vpn" {
source = "terraform-ibm-modules/client-to-site-vpn/ibm"
- version = "3.0.2"
+ version = "3.0.4"
providers = { ibm = ibm.ibm-is }
count = var.client_to_site_vpn.enable ? 1 : 0
diff --git a/modules/powervs-vpc-landing-zone/main.tf b/modules/powervs-vpc-landing-zone/main.tf
index e4a0563d..1f129874 100644
--- a/modules/powervs-vpc-landing-zone/main.tf
+++ b/modules/powervs-vpc-landing-zone/main.tf
@@ -44,6 +44,7 @@ resource "ibm_resource_instance" "monitoring_instance" {
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] : ""
@@ -57,7 +58,7 @@ locals {
module "scc_wp_instance" {
source = "terraform-ibm-modules/scc-workload-protection/ibm"
- version = "1.5.8"
+ version = "1.5.10"
providers = { ibm = ibm.ibm-is }
count = var.enable_scc_wp ? 1 : 0
@@ -73,6 +74,7 @@ module "scc_wp_instance" {
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.")) : "",
@@ -131,8 +133,9 @@ locals {
}
module "powervs_workspace" {
- source = "terraform-ibm-modules/powervs-workspace/ibm"
- version = "2.5.0"
+ source = "terraform-ibm-modules/powervs-workspace/ibm"
+ version = "3.0.1"
+
providers = { ibm = ibm.ibm-pi }
pi_zone = var.powervs_zone
@@ -143,7 +146,6 @@ module "powervs_workspace" {
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_image_names = var.powervs_image_names
pi_custom_image1 = local.powervs_custom_image1
pi_custom_image2 = local.powervs_custom_image2
pi_custom_image3 = local.powervs_custom_image3
@@ -260,7 +262,6 @@ module "configure_scc_wp_agent" {
src_playbook_template_name = "configure-scc-wp-agent/playbook-configure-scc-wp-agent.yml.tftpl"
dst_playbook_file_name = "${var.prefix}-playbook-configure-scc-wp-agent.yml"
playbook_template_vars = {
- SCC_WP_GUID : local.scc_wp_instance.guid,
COLLECTOR_ENDPOINT : local.scc_wp_instance.ingestion_endpoint,
API_ENDPOINT : local.scc_wp_instance.api_endpoint,
ACCESS_KEY : local.scc_wp_instance.access_key
diff --git a/modules/powervs-vpc-landing-zone/submodules/ansible/ansible_node_packages.sh b/modules/powervs-vpc-landing-zone/submodules/ansible/ansible_node_packages.sh
index 66fb356a..129ef81f 100644
--- a/modules/powervs-vpc-landing-zone/submodules/ansible/ansible_node_packages.sh
+++ b/modules/powervs-vpc-landing-zone/submodules/ansible/ansible_node_packages.sh
@@ -56,6 +56,9 @@ main::install_packages() {
main::subscription_mgr_check_process
+ ## hotfix for subscription-manager broken pipe error in next step
+ subscription-manager list --available --all
+
## enable repository for RHEL sap roles
subscription-manager repos --enable="rhel-$(rpm -E %rhel)-for-$(uname -m)-sap-solutions-rpms"
diff --git a/modules/powervs-vpc-landing-zone/submodules/ansible/templates-ansible/configure-monitoring-instance/playbook-configure-monitoring-instance.yml.tftpl b/modules/powervs-vpc-landing-zone/submodules/ansible/templates-ansible/configure-monitoring-instance/playbook-configure-monitoring-instance.yml.tftpl
index 3b2fe336..c36e403c 100644
--- a/modules/powervs-vpc-landing-zone/submodules/ansible/templates-ansible/configure-monitoring-instance/playbook-configure-monitoring-instance.yml.tftpl
+++ b/modules/powervs-vpc-landing-zone/submodules/ansible/templates-ansible/configure-monitoring-instance/playbook-configure-monitoring-instance.yml.tftpl
@@ -20,12 +20,9 @@
register: update_result
when: "'SLES' in ansible_distribution"
- - name: Reboot if updates were installed
- ansible.builtin.command: shutdown -r now
- async: 1
- poll: 0
+ - name: Reboot the system if updates were installed
+ ansible.builtin.reboot:
+ reboot_timeout: 600
+ test_command: whoami
+ when: update_result is defined and update_result.changed
ignore_errors: true
-
- - name: Wait for the system to come back online
- wait_for_connection:
- timeout: 1500
diff --git a/modules/powervs-vpc-landing-zone/submodules/ansible/templates-ansible/configure-scc-wp-agent/playbook-configure-scc-wp-agent.yml.tftpl b/modules/powervs-vpc-landing-zone/submodules/ansible/templates-ansible/configure-scc-wp-agent/playbook-configure-scc-wp-agent.yml.tftpl
index 6963363f..27b06211 100644
--- a/modules/powervs-vpc-landing-zone/submodules/ansible/templates-ansible/configure-scc-wp-agent/playbook-configure-scc-wp-agent.yml.tftpl
+++ b/modules/powervs-vpc-landing-zone/submodules/ansible/templates-ansible/configure-scc-wp-agent/playbook-configure-scc-wp-agent.yml.tftpl
@@ -8,7 +8,6 @@
- name: Install and connect SCC Workload Protection Agent
hosts: all
vars:
- wp_guid: "${SCC_WP_GUID}"
collector_endpoint: "${COLLECTOR_ENDPOINT}"
wp_api_endpoint: "${API_ENDPOINT}"
access_key: "${ACCESS_KEY}"
diff --git a/modules/powervs-vpc-landing-zone/variables.tf b/modules/powervs-vpc-landing-zone/variables.tf
index d4230d40..ddbe52d8 100644
--- a/modules/powervs-vpc-landing-zone/variables.tf
+++ b/modules/powervs-vpc-landing-zone/variables.tf
@@ -163,12 +163,6 @@ variable "powervs_backup_network" {
}
}
-variable "powervs_image_names" {
- description = "List of Images to be imported into cloud account from catalog images. Supported values can be found [here](https://github.com/terraform-ibm-modules/terraform-ibm-powervs-workspace/blob/main/docs/catalog_images_list.md). For custom os image import configure the optional parameter 'powervs_custom_images'."
- type = list(string)
- default = ["IBMi-75-05-2984-1", "IBMi-74-11-2984-1", "7200-05-09", "7300-03-00", "SLES15-SP6-SAP", "SLES15-SP6-SAP-NETWEAVER", "RHEL9-SP4-SAP", "RHEL9-SP4-SAP-NETWEAVER"]
-}
-
variable "tags" {
description = "List of tag names for the IBM Cloud PowerVS workspace"
type = list(string)
diff --git a/reference-architectures/import/deploy-arch-ibm-pvs-inf-import.md b/reference-architectures/import/deploy-arch-ibm-pvs-inf-import.md
deleted file mode 100644
index a34f6d03..00000000
--- a/reference-architectures/import/deploy-arch-ibm-pvs-inf-import.md
+++ /dev/null
@@ -1,37 +0,0 @@
----
-copyright:
- years: 2024, 2025
-lastupdated: "2025-04-30"
-keywords:
-subcollection: deployable-reference-architectures
-authors:
- - name: Arnold Beilmann
- - name: Stafania Saju
- - name: Ludwig Mueller
-production: true
-deployment-url: https://cloud.ibm.com/catalog/architecture/deploy-arch-ibm-pvs-inf-2dd486c7-b317-4aaa-907b-42671485ad96-global
-docs: https://cloud.ibm.com/docs/powervs-vpc
-image_source: https://github.com/terraform-ibm-modules/terraform-ibm-powervs-infrastructure/blob/main/reference-architectures/reference-architectures/import/deploy-arch-ibm-pvs-inf-import.svg
-use-case: ITServiceManagement
-industry: Technology
-compliance:
-content-type: reference-architecture
-version: v8.3.1
-
----
-
-{{site.data.keyword.attribute-definition-list}}
-
-# Power Virtual Server with VPC landing zone - as 'Import' deployment
-{: #deploy-arch-ibm-pvs-inf-import}
-{: toc-content-type="reference-architecture"}
-{: toc-industry="Technology"}
-{: toc-use-case="ITServiceManagement"}
-{: toc-version="v8.3.1"}
-
-This solution helps to install the deployable architecture ['Power Virtual Server for SAP HANA'](https://cloud.ibm.com/catalog/architecture/deploy-arch-ibm-pvs-sap-9aa6135e-75d5-467e-9f4a-ac2a21c069b8-global) on top of a pre-existing Power Virtual Server(PowerVS) landscape. 'Power Virtual Server for SAP HANA' automation requires a schematics workspace id for installation. The 'Import' solution creates a schematics workspace by taking pre-existing VPC and PowerVS infrastructure resource details as inputs. The ID of this schematics workspace will be the pre-requisite workspace id required by 'Power Virtual Server for SAP HANA' to create and configure the PowerVS instances for SAP on top of the existing infrastructure.
-
-## Architecture diagram
-{: #iw-architecture-diagram}
-
-{: caption="Figure 1. Power Virtual Server with VPC landing zone 'Import' variation" caption-side="bottom"}{: external download="deploy-arch-ibm-pvs-inf-import.svg"}
diff --git a/reference-architectures/import/deploy-arch-ibm-pvs-inf-import.svg b/reference-architectures/import/deploy-arch-ibm-pvs-inf-import.svg
deleted file mode 100644
index b7300b0b..00000000
--- a/reference-architectures/import/deploy-arch-ibm-pvs-inf-import.svg
+++ /dev/null
@@ -1,4 +0,0 @@
-
-
-
-
\ No newline at end of file
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 ba1ff153..24786648 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-04-30"
+lastupdated: "2025-05-06"
keywords:
subcollection: deployable-reference-architectures
authors:
@@ -15,32 +15,32 @@ image_source: https://github.com/terraform-ibm-modules/terraform-ibm-powervs-inf
use-case: ITServiceManagement
industry: Technology
content-type: reference-architecture
-version: v8.3.1
+version: v8.4.0
compliance: SAPCertified
---
{{site.data.keyword.attribute-definition-list}}
-# Power Virtual Server with VPC landing zone - 'Standard Extend Variation'
+# Power Virtual Server with VPC landing zone - 'Extend Standard Landscape Variation'
{: #deploy-arch-ibm-pvs-inf-extension}
{: toc-content-type="reference-architecture"}
{: toc-industry="Technology"}
{: toc-use-case="ITServiceManagement"}
{: toc-compliance="SAPCertified"}
-{: toc-version="v8.3.1"}
+{: toc-version="v8.4.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'.
## Architecture diagram
{: #standard-extend-architecture-diagram}
-{: caption="Figure 1. Single-zone PowerVS workspace accessible over secure landing zone" caption-side="bottom"}{: external download="deploy-arch-ibm-pvs-inf-standard-extend.svg"}
+{: caption="Figure 1. Single-zone PowerVS workspace accessible over secure landing zone" caption-side="bottom"}{: external download="deploy-arch-ibm-pvs-inf-standard-extend.svg"}
## Design requirements
{: #standard-extend-design-requirements}
-{: caption="Figure 2. Scope of the solution requirements" caption-side="bottom"}
+{: caption="Figure 2. Scope of the solution requirements" caption-side="bottom"}
IBM Cloud® Power Virtual Servers (PowerVS) is a public cloud offering that an enterprise can use to establish its own private IBM Power computing environment on shared public cloud infrastructure. PowerVS is logically isolated from all other public cloud tenants and infrastructure components, creating a private, secure place on the public cloud. This deployable architecture provides a framework to build a PowerVS offering according to the best practices and requirements from the IBM Cloud.
@@ -55,7 +55,6 @@ IBM Cloud® Power Virtual Servers (PowerVS) is a public cloud offering that an e
|* Connect PowerVS workspace with VPC services|Transit gateway| Set up a local transit gateway| |
|* Configure the network for management of all instances \n * Throughput and latency are not relevant|Management network|Configure private network with default configurations| |
|* Configure separate network for backup purposes with higher data throughput|Backup network|Configure separate private network with default configurations and attach it to both cloud connections. Networks characteristics might be adapted by the users manually (for example to improve throughput)| |
-|* Preload OS images relevant for customer workload|Preloaded OS images|Preload Stock catalog OS images.|Modify the input parameter that specifies the list of preloaded OS images.|
|* Allow optional import of custom OS images from Cloud Object Storage|Custom OS images|Import up to three images from COS into the PowerVS workspace.|Modify the optional input parameters that specify the list of custom OS images and the COS configuration and credentials .|
|* Preload a public SSH key that is injected into every OS deployment|Preloaded SSH public key|Preload customer specified SSH public key| |
{: caption="Table 2. PowerVS workspace architecture decisions" caption-side="bottom"}
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 19c31372..e01565e7 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 a8b11a6e..5023fa04 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-04-30"
+lastupdated: "2025-05-06"
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.3.1
+version: v8.4.0
compliance:
---
@@ -28,7 +28,7 @@ compliance:
{: toc-content-type="reference-architecture"}
{: toc-industry="Technology"}
{: toc-use-case="ITServiceManagement"}
-{: toc-version="v8.3.1"}
+{: toc-version="v8.4.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.
@@ -73,7 +73,6 @@ IBM Cloud® Power Virtual Servers (PowerVS) is a public cloud offering that an e
|* Connect PowerVS workspace with VPC services|Transit gateway| Set up a local transit gateway| |
|* Configure the network for management of all instances \n * Throughput and latency are not relevant|Management network|Configure private network with default configurations| |
|* Configure separate network for backup purposes with higher data throughput|Backup network|Configure separate private network with default configurations. Network characteristics might be adapted by the users manually (for example to improve throughput)| |
-|* Preload OS images relevant for customer workload|Preloaded OS images|Preload Stock catalog OS images.|Modify the input parameter that specifies the list of preloaded OS images.|
|* Preload a public SSH key that is injected into every OS deployment|Preloaded SSH public key|Preload customer specified SSH public key| |
{: caption="Table 2. PowerVS workspace architecture decisions" caption-side="bottom"}
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 a4c00383..795c13a8 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 07e791ea..f57ddee8 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-04-30"
+lastupdated: "2025-05-06"
keywords:
subcollection: deployable-reference-architectures
authors:
@@ -15,20 +15,20 @@ image_source: https://github.com/terraform-ibm-modules/terraform-ibm-powervs-inf
use-case: ITServiceManagement
industry: Technology
content-type: reference-architecture
-version: v8.3.1
+version: v8.4.0
compliance: SAPCertified
---
{{site.data.keyword.attribute-definition-list}}
-# Power Virtual Server with VPC landing zone - 'Standard Variation'
+# Power Virtual Server with VPC landing zone - 'Standard Landscape Variation'
{: #deploy-arch-ibm-pvs-inf-standard}
{: toc-content-type="reference-architecture"}
{: toc-industry="Technology"}
{: toc-use-case="ITServiceManagement"}
{: toc-compliance="SAPCertified"}
-{: toc-version="v8.3.1"}
+{: toc-version="v8.4.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.
@@ -73,7 +73,6 @@ IBM Cloud® Power Virtual Servers (PowerVS) is a public cloud offering that an e
|* Connect PowerVS workspace with VPC services|Transit gateway| Set up a local transit gateway| |
|* Configure the network for management of all instances \n * Throughput and latency are not relevant|Management network|Configure private network with default configurations| |
|* Configure separate network for backup purposes with higher data throughput|Backup network|Configure separate private network with default configurations. Network characteristics might be adapted by the users manually (for example to improve throughput)| |
-|* Preload OS images relevant for customer workload|Preloaded OS images|Preload Stock catalog OS images.|Modify the input parameter that specifies the list of preloaded OS images.|
|* Allow optional import of custom OS images from Cloud Object Storage|Custom OS images|Import up to three images from COS into the PowerVS workspace.|Modify the optional input parameters that specify the list of custom OS images and the COS configuration and credentials .|
|* Preload a public SSH key that is injected into every OS deployment|Preloaded SSH public key|Preload customer specified SSH public key| |
{: caption="Table 2. PowerVS workspace architecture decisions" caption-side="bottom"}
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 077de4c8..c8d34154 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/import/README.md b/solutions/import/README.md
deleted file mode 100755
index fc78a263..00000000
--- a/solutions/import/README.md
+++ /dev/null
@@ -1,105 +0,0 @@
-# IBM Cloud solution for Power Virtual Server with VPC landing zone Import Variation
-
-This solution helps to install the deployable architecture ['Power Virtual Server for SAP HANA'](https://cloud.ibm.com/catalog/architecture/deploy-arch-ibm-pvs-sap-9aa6135e-75d5-467e-9f4a-ac2a21c069b8-global) on top of a pre-existing Power Virtual Server(PowerVS) landscape. 'Power Virtual Server for SAP HANA' automation requires a schematics workspace id for installation. The 'Import' solution creates a schematics workspace by taking pre-existing VPC and PowerVS infrastructure resource details as inputs. The ID of this schematics workspace will be the pre-requisite workspace id required by 'Power Virtual Server for SAP HANA' to create and configure the PowerVS instances for SAP on top of the existing infrastructure.
-
-### Pre-requisites:
-The pre-existing infrastructure must meet the following conditions to use the 'Import' solution to create a schematics workspace:
-- **Virtual Private Cloud(VPC) side**
- - Existing VPC or VPCs with virtual servers instances, ACL/ACLs, and Security Groups.
- - Existing access host(jump server) which is an intel based virtual server instance that can access Power virtual server instances.
- - Existing Transit Gateway.
- - The VPC in which the jump host exists must be attached to the Transit Gateway.
- - The necessary ACLs and security group rules for VPC in which the access host(jump server) exists must allow SSH login to the Power virtual server instances which would be created using ['Power Virtual Server for SAP HANA'](https://cloud.ibm.com/catalog/architecture/deploy-arch-ibm-pvs-sap-9aa6135e-75d5-467e-9f4a-ac2a21c069b8-global) automation.
-- **Power Virtual Server Workspace side**
- - Existing Power Virtual Server Workspace with at-least two private subnets.
- - Power Virtual Server Workspace/Cloud Connections must be attached to above Transit Gateway.
- - SSH key pairs used to login to access host/jump host(intel based virtual server instance) on VPC side should match to the existing SSH key used in PowerVS Workspace.
-- **Mandatory Management Network Services**
- - Existing Proxy server ip and port required to configure the internet access required for PowerVS instances.
-- **Optional Management Network Services**
- - Existing DNS server ip for the PowerVS instances.
- - Existing NTP server ip for the PowerVS instances.
- - Existing NFS server ip and path for the PowerVS instances.
- - If the above parameters are provided, then it must be made sure IPs are reachable on Power virtual server instances which would be created using ['Power Virtual Server for SAP HANA'](https://cloud.ibm.com/catalog/architecture/deploy-arch-ibm-pvs-sap-9aa6135e-75d5-467e-9f4a-ac2a21c069b8-global) automation.
-
-**NOTE:** IBM Cloud has a quota of 100 ACL rules per ACL. The 'Import' variation will create 52 new ACL rules for providing schematics servers access to the access host(this access is required for 'Power Virtual Server for SAP HANA' automation). Please ensure the concerned ACL can take in new ACL rules without exceeding the quota of 100 so the deployment will be successful.
-
-#### Resources Created:
-1. ACL rules for IBM Cloud Schematics are created for the VPC subnets in which access host(jump server) exists.
-2. Schematics workspace required by 'Power Virtual Server for SAP HANA' to create and configure the PowerVS instances for SAP on top of the existing infrastructure.
-
-### Notes:
-
-| Variation | Available on IBM Catalog | Requires Schematics Workspace ID | Imports VPC Landing Zone | Imports VPC VSI OS Config | Imports PowerVS Infrastructure | Imports PowerVS Instance | Performs PowerVS OS Config |
-| ------------- | ------------- | ------------- | ------------- | ------------- | ------------- | ------------- | ------------- |
-| [Import](./) | :heavy_check_mark: | N/A | N/A | N/A | N/A | N/A | N/A |
-
-## Architecture diagram
-
-
-
-### Requirements
-
-| Name | Version |
-|------|---------|
-| [terraform](#requirement\_terraform) | >= 1.9 |
-| [ibm](#requirement\_ibm) | 1.78.0 |
-
-### Modules
-
-| Name | Source | Version |
-|------|--------|---------|
-| [access\_host](#module\_access\_host) | ../../modules/import-powervs-vpc/vpc | n/a |
-| [management\_sg\_rules](#module\_management\_sg\_rules) | ../../modules/import-powervs-vpc/security-group | n/a |
-| [management\_vpc\_acl\_rules](#module\_management\_vpc\_acl\_rules) | ../../modules/import-powervs-vpc/acl | n/a |
-| [powervs\_workspace\_ds](#module\_powervs\_workspace\_ds) | ../../modules/import-powervs-vpc/powervs | n/a |
-
-### Resources
-
-| Name | Type |
-|------|------|
-| [ibm_is_network_acl.management_acls_ds](https://registry.terraform.io/providers/IBM-Cloud/ibm/1.78.0/docs/data-sources/is_network_acl) | data source |
-| [ibm_is_subnet.management_subnets_ds](https://registry.terraform.io/providers/IBM-Cloud/ibm/1.78.0/docs/data-sources/is_subnet) | data source |
-| [ibm_tg_gateway.tgw_ds](https://registry.terraform.io/providers/IBM-Cloud/ibm/1.78.0/docs/data-sources/tg_gateway) | data source |
-
-### Inputs
-
-| Name | Description | Type | Default | Required |
-|------|-------------|------|---------|:--------:|
-| [IC\_SCHEMATICS\_WORKSPACE\_ID](#input\_IC\_SCHEMATICS\_WORKSPACE\_ID) | leave blank if running locally. This variable will be automatically populated if running from an IBM Cloud Schematics workspace. | `string` | `""` | no |
-| [access\_host](#input\_access\_host) | Name of the existing access host VSI and its floating ip. Acls will be added to allow schematics IPs to the corresponding VPC. | object({
vsi_name = string
floating_ip = string
}) | n/a | yes |
-| [dns\_server\_ip](#input\_dns\_server\_ip) | DNS server IP address. | `string` | `""` | no |
-| [ibmcloud\_api\_key](#input\_ibmcloud\_api\_key) | The IBM Cloud platform API key needed to deploy IAM enabled resources. | `string` | n/a | yes |
-| [nfs\_server\_ip\_path](#input\_nfs\_server\_ip\_path) | NFS server IP address and Path. If the NFS server VSI name is provided, the nfs path should not be empty and must begin with '/' character. For example: nfs\_server\_ip\_path = {"ip" = "10.20.10.4", "nfs\_path" = "/nfs"} | object({
ip = string
nfs_path = string
}) | {
"ip": "",
"nfs_path": ""
} | no |
-| [ntp\_server\_ip](#input\_ntp\_server\_ip) | NTP server IP address. | `string` | `""` | no |
-| [powervs\_backup\_network\_name](#input\_powervs\_backup\_network\_name) | Name of the existing subnet used for backup network in existing PowerVS workspace. | `string` | n/a | yes |
-| [powervs\_management\_network\_name](#input\_powervs\_management\_network\_name) | Name of the existing subnet used for management network in existing PowerVS workspace. | `string` | n/a | yes |
-| [powervs\_sshkey\_name](#input\_powervs\_sshkey\_name) | SSH public key name used for the existing PowerVS workspace. | `string` | n/a | yes |
-| [powervs\_workspace\_guid](#input\_powervs\_workspace\_guid) | GUID of the existing PowerVS workspace. | `string` | n/a | yes |
-| [powervs\_zone](#input\_powervs\_zone) | IBM Cloud data center location where IBM PowerVS workspace exists. | `string` | n/a | yes |
-| [proxy\_server\_ip\_port](#input\_proxy\_server\_ip\_port) | Existing Proxy Server IP and port. This will be required to configure internet access for PowerVS instances. | object({
ip = string
port = number
}) | n/a | yes |
-| [transit\_gateway\_name](#input\_transit\_gateway\_name) | The name of the existing transit gateway that has VPCs and PowerVS workspace connected to it. | `string` | n/a | yes |
-
-### Outputs
-
-| Name | Description |
-|------|-------------|
-| [access\_host\_or\_ip](#output\_access\_host\_or\_ip) | Access host(jump/bastion) for existing PowerVS infrastructure. |
-| [dns\_host\_or\_ip](#output\_dns\_host\_or\_ip) | DNS forwarder host for existing PowerVS infrastructure. |
-| [nfs\_host\_or\_ip\_path](#output\_nfs\_host\_or\_ip\_path) | NFS host for existing PowerVS infrastructure. |
-| [ntp\_host\_or\_ip](#output\_ntp\_host\_or\_ip) | NTP host for existing PowerVS infrastructure. |
-| [powervs\_backup\_subnet](#output\_powervs\_backup\_subnet) | Name, ID and CIDR of backup private network in existing PowerVS infrastructure. |
-| [powervs\_images](#output\_powervs\_images) | Object containing imported PowerVS image names and image ids. |
-| [powervs\_management\_subnet](#output\_powervs\_management\_subnet) | Name, ID and CIDR of management private network in existing PowerVS infrastructure. |
-| [powervs\_ssh\_public\_key](#output\_powervs\_ssh\_public\_key) | SSH public key name and value used in existing PowerVS infrastructure. |
-| [powervs\_workspace\_guid](#output\_powervs\_workspace\_guid) | PowerVS infrastructure workspace guid. The GUID of the resource instance. |
-| [powervs\_workspace\_id](#output\_powervs\_workspace\_id) | PowerVS infrastructure workspace CRN. |
-| [powervs\_workspace\_name](#output\_powervs\_workspace\_name) | PowerVS infrastructure workspace name. |
-| [powervs\_zone](#output\_powervs\_zone) | Zone of existing PowerVS infrastructure. |
-| [prefix](#output\_prefix) | The prefix that is associated with all resources. |
-| [proxy\_host\_or\_ip\_port](#output\_proxy\_host\_or\_ip\_port) | Proxy host:port for existing PowerVS infrastructure. |
-| [schematics\_workspace\_id](#output\_schematics\_workspace\_id) | ID of the IBM Cloud Schematics workspace. Returns null if not ran in Schematics. |
-| [ssh\_public\_key](#output\_ssh\_public\_key) | The string value of the ssh public key used when deploying VPC. |
-| [transit\_gateway\_id](#output\_transit\_gateway\_id) | The ID of transit gateway. |
-| [transit\_gateway\_name](#output\_transit\_gateway\_name) | The name of the transit gateway. |
-
diff --git a/solutions/import/catalogValidationValues.json.template b/solutions/import/catalogValidationValues.json.template
deleted file mode 100644
index bd4190b5..00000000
--- a/solutions/import/catalogValidationValues.json.template
+++ /dev/null
@@ -1,17 +0,0 @@
-{
- "ibmcloud_api_key": $VALIDATION_APIKEY,
- "access_host": {
- "vsi_name": "val-gha-vsi",
- "floating_ip": "149.81.6.27"
- },
- "proxy_server_ip_port": {
- "ip": "10.30.10.4",
- "port": 3128
- },
- "transit_gateway_name": "val-gha-transit-gateway",
- "powervs_zone": "eu-de-1",
- "powervs_workspace_guid": "4566c5e9-1b92-4484-8598-e0c8da943283",
- "powervs_sshkey_name": "val-ssh-key",
- "powervs_management_network_name": "mgmt_net",
- "powervs_backup_network_name": "bkp_net"
-}
diff --git a/solutions/import/locals_vpc.tf b/solutions/import/locals_vpc.tf
deleted file mode 100755
index 2493ca58..00000000
--- a/solutions/import/locals_vpc.tf
+++ /dev/null
@@ -1,35 +0,0 @@
-####################################################
-# Locals for creating ACL rules
-####################################################
-
-locals {
- acl_preset = templatefile("${path.module}/../../modules/import-powervs-vpc/presets/vpc_acl_rules.json.tftpl", { access_host_ip = module.access_host.vsi_primary_ip })
- imported_acl_preset = jsondecode(local.acl_preset)
-
- # access control list rules from presets
- management_vpc_acl_rules = flatten([local.imported_acl_preset.management_acl[0].rules[*]])
- # list of subnets from each vpc
- management_vsi_subnets = flatten([module.access_host.vsi_ds.primary_network_interface[*].subnet, module.access_host.vsi_ds.network_interfaces[*].subnet])
-}
-
-####################################################
-# Locals for creating Security Group rules
-####################################################
-
-locals {
- sg_preset = templatefile("${path.module}/../../modules/import-powervs-vpc/presets/vpc_sg_rules.json.tftpl", { access_host_ip = module.access_host.vsi_primary_ip })
- imported_sg_preset = jsondecode(local.sg_preset)
-
- # security rules from presets
- management_sg_rules = flatten([local.imported_sg_preset.management_sg.rules[*]])
- # list of security groups from each VSI
- management_sgs = distinct(flatten([module.access_host.vsi_ds.primary_network_interface[*].security_groups, module.access_host.vsi_ds.network_interfaces[*].security_groups]))
-}
-
-####################################################
-# Locals for outputs
-####################################################
-locals {
- proxy_host_ip_port = join(":", [var.proxy_server_ip_port.ip, var.proxy_server_ip_port.port])
- nfs_host_or_ip_path = var.nfs_server_ip_path.ip != "" ? join(":", [var.nfs_server_ip_path.ip, var.nfs_server_ip_path.nfs_path]) : ""
-}
diff --git a/solutions/import/main.tf b/solutions/import/main.tf
deleted file mode 100755
index c749ab68..00000000
--- a/solutions/import/main.tf
+++ /dev/null
@@ -1,64 +0,0 @@
-#################################################################################################
-# This solution creates a schematics workspace for a pre-existing VPC and PowerVS Infrastructure.
-# The schematics workspace id can be used to install the deployable architecture automations to
-# create and configure the Power LPARs for SAP.
-#################################################################################################
-
-############################################################################
-# Import Existing PowerVS Infrastructure Data
-############################################################################
-
-module "powervs_workspace_ds" {
- source = "../../modules/import-powervs-vpc/powervs"
- providers = { ibm = ibm.ibm-pi }
-
- pi_workspace_guid = var.powervs_workspace_guid
- pi_management_network_name = var.powervs_management_network_name
- pi_backup_network_name = var.powervs_backup_network_name
-}
-
-
-############################################################################
-# Import data of access host(jump host) Intel VSI
-############################################################################
-
-module "access_host" {
- source = "../../modules/import-powervs-vpc/vpc"
- vsi_name = var.access_host.vsi_name
-}
-
-data "ibm_tg_gateway" "tgw_ds" {
- name = var.transit_gateway_name
-}
-
-############################################################################
-# Create ACL and SG Rules required for schematics on Access Hosts VPC subnet
-############################################################################
-
-data "ibm_is_subnet" "management_subnets_ds" {
- for_each = toset(local.management_vsi_subnets)
-
- identifier = each.value
-}
-
-data "ibm_is_network_acl" "management_acls_ds" {
- for_each = data.ibm_is_subnet.management_subnets_ds
- network_acl = each.value.network_acl
-}
-
-module "management_vpc_acl_rules" {
- for_each = data.ibm_is_network_acl.management_acls_ds
-
- source = "../../modules/import-powervs-vpc/acl"
- ibm_is_network_acl_id = each.value.id
- acl_rules = local.management_vpc_acl_rules
- skip_deny_rules = false
-}
-
-module "management_sg_rules" {
- for_each = toset(local.management_sgs)
-
- source = "../../modules/import-powervs-vpc/security-group"
- sg_id = each.value
- sg_rules = local.management_sg_rules
-}
diff --git a/solutions/import/outputs.tf b/solutions/import/outputs.tf
deleted file mode 100755
index 2019bd47..00000000
--- a/solutions/import/outputs.tf
+++ /dev/null
@@ -1,100 +0,0 @@
-output "prefix" {
- description = "The prefix that is associated with all resources."
- value = ""
-}
-
-##############################################################
-# VPC Landing Zone Values
-##############################################################
-
-output "ssh_public_key" {
- description = "The string value of the ssh public key used when deploying VPC."
- value = module.access_host.vsi_ssh_public_key[0].public_key
- sensitive = true
-}
-
-output "transit_gateway_name" {
- description = "The name of the transit gateway."
- value = var.transit_gateway_name
-}
-
-output "transit_gateway_id" {
- description = "The ID of transit gateway."
- value = data.ibm_tg_gateway.tgw_ds.id
-}
-output "access_host_or_ip" {
- description = "Access host(jump/bastion) for existing PowerVS infrastructure."
- value = var.access_host.floating_ip
-}
-
-output "proxy_host_or_ip_port" {
- description = "Proxy host:port for existing PowerVS infrastructure."
- value = local.proxy_host_ip_port
-}
-
-output "dns_host_or_ip" {
- description = "DNS forwarder host for existing PowerVS infrastructure."
- value = var.dns_server_ip
-}
-
-output "ntp_host_or_ip" {
- description = "NTP host for existing PowerVS infrastructure."
- value = var.ntp_server_ip != "" ? var.ntp_server_ip : ""
-}
-
-output "nfs_host_or_ip_path" {
- description = "NFS host for existing PowerVS infrastructure."
- value = local.nfs_host_or_ip_path
-}
-
-##############################################################
-# PowerVS Infrastructure outputs
-##############################################################
-
-output "powervs_zone" {
- description = "Zone of existing PowerVS infrastructure."
- value = var.powervs_zone
-}
-
-output "powervs_workspace_name" {
- description = "PowerVS infrastructure workspace name."
- value = module.powervs_workspace_ds.powervs_workspace_name
-}
-
-output "powervs_workspace_id" {
- description = "PowerVS infrastructure workspace CRN."
- value = module.powervs_workspace_ds.powervs_workspace_crn
-}
-
-output "powervs_workspace_guid" {
- description = "PowerVS infrastructure workspace guid. The GUID of the resource instance."
- value = var.powervs_workspace_guid
-}
-
-output "powervs_ssh_public_key" {
- description = "SSH public key name and value used in existing PowerVS infrastructure."
- value = {
- "name" = var.powervs_sshkey_name
- "value" = module.access_host.vsi_ssh_public_key[0].public_key
- }
-}
-
-output "powervs_management_subnet" {
- description = "Name, ID and CIDR of management private network in existing PowerVS infrastructure."
- value = module.powervs_workspace_ds.powervs_management_network_subnet
-}
-
-output "powervs_backup_subnet" {
- description = "Name, ID and CIDR of backup private network in existing PowerVS infrastructure."
- value = module.powervs_workspace_ds.powervs_backup_network_subnet
-}
-
-output "powervs_images" {
- description = "Object containing imported PowerVS image names and image ids."
- value = module.powervs_workspace_ds.powervs_images
-}
-
-output "schematics_workspace_id" {
- description = "ID of the IBM Cloud Schematics workspace. Returns null if not ran in Schematics."
- value = var.IC_SCHEMATICS_WORKSPACE_ID
-}
diff --git a/solutions/import/provider.tf b/solutions/import/provider.tf
deleted file mode 100755
index 395407a8..00000000
--- a/solutions/import/provider.tf
+++ /dev/null
@@ -1,61 +0,0 @@
-locals {
- ibm_powervs_zone_region_map = {
- "syd04" = "syd"
- "syd05" = "syd"
- "sao01" = "sao"
- "sao04" = "sao"
- "tor01" = "tor"
- "mon01" = "mon"
- "eu-de-1" = "eu-de"
- "eu-de-2" = "eu-de"
- "mad02" = "mad"
- "mad04" = "mad"
- "lon04" = "lon"
- "lon06" = "lon"
- "osa21" = "osa"
- "tok04" = "tok"
- "us-south" = "us-south"
- "dal10" = "us-south"
- "dal12" = "us-south"
- "dal14" = "us-south"
- "us-east" = "us-east"
- "wdc06" = "us-east"
- "wdc07" = "us-east"
- }
-
- ibm_powervs_zone_cloud_region_map = {
- "syd04" = "au-syd"
- "syd05" = "au-syd"
- "sao01" = "br-sao"
- "sao04" = "br-sao"
- "tor01" = "ca-tor"
- "mon01" = "ca-tor"
- "eu-de-1" = "eu-de"
- "eu-de-2" = "eu-de"
- "mad02" = "eu-es"
- "mad04" = "eu-es"
- "lon04" = "eu-gb"
- "lon06" = "eu-gb"
- "osa21" = "jp-osa"
- "tok04" = "jp-tok"
- "us-south" = "us-south"
- "dal10" = "us-south"
- "dal12" = "us-south"
- "dal14" = "us-south"
- "us-east" = "us-east"
- "wdc06" = "us-east"
- "wdc07" = "us-east"
- }
-}
-
-provider "ibm" {
- region = lookup(local.ibm_powervs_zone_cloud_region_map, var.powervs_zone, null)
- ibmcloud_api_key = var.ibmcloud_api_key != null ? var.ibmcloud_api_key : null
-}
-
-provider "ibm" {
- alias = "ibm-pi"
- region = lookup(local.ibm_powervs_zone_region_map, var.powervs_zone, null)
- zone = var.powervs_zone
- ibmcloud_api_key = var.ibmcloud_api_key != null ? var.ibmcloud_api_key : null
-}
diff --git a/solutions/import/variables.tf b/solutions/import/variables.tf
deleted file mode 100755
index f750e61a..00000000
--- a/solutions/import/variables.tf
+++ /dev/null
@@ -1,106 +0,0 @@
-##############################################################
-# Parameters for VPC VSIs and Transit Gateway
-##############################################################
-
-variable "access_host" {
- description = "Name of the existing access host VSI and its floating ip. Acls will be added to allow schematics IPs to the corresponding VPC."
- type = object({
- vsi_name = string
- floating_ip = string
- })
-}
-
-variable "proxy_server_ip_port" {
- description = "Existing Proxy Server IP and port. This will be required to configure internet access for PowerVS instances."
- type = object({
- ip = string
- port = number
- })
- validation {
- condition = 0 < var.proxy_server_ip_port.port && var.proxy_server_ip_port.port <= 65535
- error_message = "The entered proxy server port is invalid. Enter a port number between 1-65535."
- }
-}
-
-variable "transit_gateway_name" {
- description = "The name of the existing transit gateway that has VPCs and PowerVS workspace connected to it."
- type = string
-}
-
-##############################################################
-# Parameters for PowerVS workspace
-##############################################################
-
-variable "powervs_zone" {
- description = "IBM Cloud data center location where IBM PowerVS workspace exists."
- type = string
-}
-
-variable "powervs_workspace_guid" {
- description = "GUID of the existing PowerVS workspace."
- type = string
-}
-
-variable "powervs_sshkey_name" {
- description = "SSH public key name used for the existing PowerVS workspace."
- type = string
-}
-
-variable "powervs_management_network_name" {
- description = "Name of the existing subnet used for management network in existing PowerVS workspace."
- type = string
-}
-
-variable "powervs_backup_network_name" {
- description = "Name of the existing subnet used for backup network in existing PowerVS workspace."
- type = string
-}
-
-variable "ibmcloud_api_key" {
- description = "The IBM Cloud platform API key needed to deploy IAM enabled resources."
- type = string
- sensitive = true
-}
-
-#####################################################
-# Optional Parameters VSI OS Management Services
-#####################################################
-
-variable "dns_server_ip" {
- description = "DNS server IP address."
- type = string
- default = ""
-}
-
-variable "ntp_server_ip" {
- description = "NTP server IP address."
- type = string
- default = ""
-}
-
-variable "nfs_server_ip_path" {
- description = "NFS server IP address and Path. If the NFS server VSI name is provided, the nfs path should not be empty and must begin with '/' character. For example: nfs_server_ip_path = {\"ip\" = \"10.20.10.4\", \"nfs_path\" = \"/nfs\"}"
- type = object({
- ip = string
- nfs_path = string
- })
- default = {
- "ip" : "",
- "nfs_path" : ""
- }
- validation {
- condition = (var.nfs_server_ip_path.ip == "") || (var.nfs_server_ip_path.ip != "" && var.nfs_server_ip_path.nfs_path != "" && startswith(var.nfs_server_ip_path.nfs_path, "/"))
- error_message = "Provided nfs path is invalid. When the NFS server VSI name is provided, the nfs path should not be empty and it must begin with '/' character."
- }
-}
-
-##############################################################
-# Schematics Output
-##############################################################
-
-# tflint-ignore: all
-variable "IC_SCHEMATICS_WORKSPACE_ID" {
- default = ""
- type = string
- description = "leave blank if running locally. This variable will be automatically populated if running from an IBM Cloud Schematics workspace."
-}
diff --git a/solutions/import/versions.tf b/solutions/import/versions.tf
deleted file mode 100755
index 85c30d82..00000000
--- a/solutions/import/versions.tf
+++ /dev/null
@@ -1,13 +0,0 @@
-##############################################################
-# powervs service Module
-##############################################################
-
-terraform {
- required_version = ">= 1.9"
- required_providers {
- ibm = {
- source = "IBM-Cloud/ibm"
- version = "1.78.0"
- }
- }
-}
diff --git a/solutions/standard-extend/README.md b/solutions/standard-extend/README.md
index a83ae50f..b62bb5eb 100644
--- a/solutions/standard-extend/README.md
+++ b/solutions/standard-extend/README.md
@@ -1,16 +1,14 @@
-# IBM Cloud Catalog Solution for Power Virtual Server with VPC Landing Zone Standard Extend Variation
+# IBM Cloud Catalog Solution for Power Virtual Server with VPC Landing Zone Extend Standard Landscape Variation
-This example extends an existing PowerVS infrastructure for deployable architectures deployed as standard variation with an additional PowerVS workspace.
+This example extends an existing PowerVS infrastructure for deployable architectures deployed as Standard Landscape Variation with an additional PowerVS workspace.
It provisions the following infrastructure on top of the deployed Full Stack solution:
- A **Power Virtual Server workspace** with the following network topology:
- Creates two private networks: a management network and a backup network
- Attaches the PowerVS workspace to transit gateway
- Creates an SSH key.
- - Optionally imports list of stock catalog images.
- Optionally imports up to three custom images from Cloud Object Storage.
-
### Notes:
- Make sure that you select a PowerVS zone that is different from the one used for the prerequisite infrastructure.
- This solution requires a schematics workspace ID as input.
@@ -18,19 +16,19 @@ It provisions the following infrastructure on top of the deployed Full Stack sol
### Before You Begin
-If you do not have a PowerVS infrastructure that is the [Standard variation](https://github.com/terraform-ibm-modules/terraform-ibm-powervs-infrastructure/tree/main/solutions/standard) create it first.
+If you do not have a PowerVS infrastructure that is the [Standard Landscape Variation](https://github.com/terraform-ibm-modules/terraform-ibm-powervs-infrastructure/tree/main/solutions/standard) create it first.
| Variation | Available on IBM Catalog | Requires Schematics Workspace ID | Creates VPC Landing Zone | Performs VPC VSI OS Config | Creates PowerVS Infrastructure | Creates PowerVS Instance | Performs PowerVS OS Config |
| ------------- | ------------- | ------------- | ------------- | ------------- | ------------- | ------------- | ------------- |
-| [Standard Extend](./) | :heavy_check_mark: | :heavy_check_mark: | N/A | N/A | :heavy_check_mark: | N/A | N/A |
+| [Extend Standard Landscape](./) | :heavy_check_mark: | :heavy_check_mark: | N/A | N/A | :heavy_check_mark: | N/A | N/A |
## Reference architecture
-[Standard Extend variation](https://github.com/terraform-ibm-modules/terraform-ibm-powervs-infrastructure/blob/main/reference-architectures/standard-extend/deploy-arch-ibm-pvs-inf-standard-extend.md)
+[Extend Standard Landscape Variation](https://github.com/terraform-ibm-modules/terraform-ibm-powervs-infrastructure/blob/main/reference-architectures/standard-extend/deploy-arch-ibm-pvs-inf-standard-extend.md)
## Architecture diagram
-
+
### Requirements
@@ -44,7 +42,7 @@ If you do not have a PowerVS infrastructure that is the [Standard variation](htt
| Name | Source | Version |
|------|--------|---------|
-| [powervs\_workspace](#module\_powervs\_workspace) | terraform-ibm-modules/powervs-workspace/ibm | 2.5.0 |
+| [powervs\_workspace](#module\_powervs\_workspace) | terraform-ibm-modules/powervs-workspace/ibm | 3.0.1 |
### Resources
@@ -63,7 +61,6 @@ If you do not have a PowerVS infrastructure that is the [Standard variation](htt
| [powervs\_custom\_image\_cos\_configuration](#input\_powervs\_custom\_image\_cos\_configuration) | Cloud Object Storage bucket containing custom PowerVS images. bucket\_name: string, name of the COS bucket. bucket\_access: string, possible values: public, private (private requires powervs\_custom\_image\_cos\_service\_credentials). bucket\_region: string, COS bucket region | object({
bucket_name = string
bucket_access = string
bucket_region = string
}) | {
"bucket_access": "",
"bucket_name": "",
"bucket_region": ""
} | no |
| [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\_image\_names](#input\_powervs\_image\_names) | List of Images to be imported into cloud account from catalog images. Supported values can be found [here](https://github.com/terraform-ibm-modules/terraform-ibm-powervs-workspace/blob/main/docs/catalog_images_list.md). For custom os image import configure the optional parameter 'powervs\_custom\_images'. | `list(string)` | [| no | | [powervs\_management\_network](#input\_powervs\_management\_network) | Name of the IBM Cloud PowerVS management subnet and CIDR to create. |
"IBMi-75-05-2984-1",
"IBMi-74-11-2984-1",
"7200-05-09",
"7300-03-00",
"SLES15-SP6-SAP",
"SLES15-SP6-SAP-NETWEAVER",
"RHEL9-SP4-SAP",
"RHEL9-SP4-SAP-NETWEAVER"
]
object({
name = string
cidr = string
}) | {
"cidr": "10.61.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\_zone](#input\_powervs\_zone) | IBM Cloud data center location where IBM PowerVS infrastructure will be created. | `string` | n/a | yes |
diff --git a/solutions/standard-extend/main.tf b/solutions/standard-extend/main.tf
index 9abd7499..4861f6f8 100644
--- a/solutions/standard-extend/main.tf
+++ b/solutions/standard-extend/main.tf
@@ -23,7 +23,7 @@ locals {
module "powervs_workspace" {
source = "terraform-ibm-modules/powervs-workspace/ibm"
- version = "2.5.0"
+ version = "3.0.1"
pi_zone = var.powervs_zone
pi_resource_group_name = var.powervs_resource_group_name
@@ -33,7 +33,6 @@ module "powervs_workspace" {
pi_private_subnet_2 = var.powervs_backup_network
pi_transit_gateway_connection = { "enable" : true, "transit_gateway_id" : local.transit_gateway_id }
pi_tags = var.tags
- pi_image_names = var.powervs_image_names
pi_custom_image1 = local.powervs_custom_image1
pi_custom_image2 = local.powervs_custom_image2
pi_custom_image3 = local.powervs_custom_image3
diff --git a/solutions/standard-extend/variables.tf b/solutions/standard-extend/variables.tf
index 7e206233..4ea5f162 100644
--- a/solutions/standard-extend/variables.tf
+++ b/solutions/standard-extend/variables.tf
@@ -48,13 +48,6 @@ variable "ibmcloud_api_key" {
#####################################################
# Optional Parameters
#####################################################
-
-variable "powervs_image_names" {
- description = "List of Images to be imported into cloud account from catalog images. Supported values can be found [here](https://github.com/terraform-ibm-modules/terraform-ibm-powervs-workspace/blob/main/docs/catalog_images_list.md). For custom os image import configure the optional parameter 'powervs_custom_images'."
- type = list(string)
- default = ["IBMi-75-05-2984-1", "IBMi-74-11-2984-1", "7200-05-09", "7300-03-00", "SLES15-SP6-SAP", "SLES15-SP6-SAP-NETWEAVER", "RHEL9-SP4-SAP", "RHEL9-SP4-SAP-NETWEAVER"]
-}
-
variable "tags" {
description = "List of tag names for the IBM Cloud PowerVS workspace"
type = list(string)
diff --git a/solutions/standard-plus-vsi/README.md b/solutions/standard-plus-vsi/README.md
index 72cbe74b..38a41143 100644
--- a/solutions/standard-plus-vsi/README.md
+++ b/solutions/standard-plus-vsi/README.md
@@ -23,8 +23,6 @@ This example sets up the following infrastructure:
- Creates two private networks: a management network and a backup network.
- Attaches the PowerVS workspace to transit gateway.
- Creates an SSH key.
- - Optionally imports list of stock catalog images.
- - Optionally imports up to three custom images from Cloud Object Storage.
- A **PowerVS Instance** with following options:
- t-shirt profile (Aix/IBMi/SAP Image)
@@ -60,28 +58,30 @@ This example sets up the following infrastructure:
### Resources
-No resources.
+| Name | Type |
+|------|------|
+| [ibm_pi_catalog_images.catalog_images_ds](https://registry.terraform.io/providers/IBM-Cloud/ibm/1.78.0/docs/data-sources/pi_catalog_images) | data source |
### Inputs
| Name | Description | Type | Default | Required |
|------|-------------|------|---------|:--------:|
| [IC\_SCHEMATICS\_WORKSPACE\_ID](#input\_IC\_SCHEMATICS\_WORKSPACE\_ID) | leave blank if running locally. This variable will be automatically populated if running from an IBM Cloud Schematics workspace | `string` | `""` | no |
-| [ansible\_vault\_password](#input\_ansible\_vault\_password) | Vault password to encrypt ansible playbooks that contain sensitive information. Required when SCC workload Protection is enabled. Password requirements: 15-100 characters and at least one uppercase letter, one lowercase letter, one number, and one special character. Allowed characters: A-Z, a-z, 0-9, !#$%&()*+-.:;<=>?@[]\_{\|}~. | `string` | `null` | no |
+| [ansible\_vault\_password](#input\_ansible\_vault\_password) | Vault password to encrypt ansible playbooks that contain sensitive information. Password requirements: 15-100 characters and at least one uppercase letter, one lowercase letter, one number, and one special character. Allowed characters: A-Z, a-z, 0-9, !#$%&()*+-.:;<=>?@[]\_{\|}~. | `string` | n/a | yes |
| [certificate\_template\_name](#input\_certificate\_template\_name) | The name of the Certificate Template to create for a private\_cert secret engine. When `var.existing_sm_instance_guid` is not null, then it has to be the existing template name that exists in the private cert engine. | `string` | `"my-template"` | no |
-| [client\_to\_site\_vpn](#input\_client\_to\_site\_vpn) | VPN configuration - the client ip pool and list of users email ids to access the environment. If enabled, then a Secret Manager instance is also provisioned with certificates generated. See optional parameters to reuse existing certificate from secrets manager instance. | object({
enable = bool
client_ip_pool = string
vpn_client_access_group_users = list(string)
}) | {
"client_ip_pool": "192.168.0.0/16",
"enable": false,
"vpn_client_access_group_users": []
} | no |
+| [client\_to\_site\_vpn](#input\_client\_to\_site\_vpn) | VPN configuration - the client ip pool and list of users email ids to access the environment. If enabled, then a Secret Manager instance is also provisioned with certificates generated. See optional parameters to reuse existing certificate from secrets manager instance. | object({
enable = bool
client_ip_pool = string
vpn_client_access_group_users = list(string)
}) | {
"client_ip_pool": "192.168.0.0/16",
"enable": true,
"vpn_client_access_group_users": []
} | no |
| [configure\_dns\_forwarder](#input\_configure\_dns\_forwarder) | Specify if DNS forwarder will be configured. This will allow you to use central DNS servers (e.g. IBM Cloud DNS servers) sitting outside of the created IBM PowerVS infrastructure. If yes, ensure 'dns\_forwarder\_config' optional variable is set properly. DNS forwarder will be installed on the network-services vsi. | `bool` | `true` | no |
| [configure\_nfs\_server](#input\_configure\_nfs\_server) | Specify if NFS server will be configured. This will allow you easily to share files between PowerVS instances (e.g., SAP installation files). [File storage share and mount target](https://cloud.ibm.com/docs/vpc?topic=vpc-file-storage-create&interface=ui) in VPC will be created.. If yes, ensure 'nfs\_server\_config' optional variable is set properly below. Default value is '200GB' which will be mounted on specified directory in network-service vsi. | `bool` | `true` | no |
| [configure\_ntp\_forwarder](#input\_configure\_ntp\_forwarder) | Specify if NTP forwarder will be configured. This will allow you to synchronize time between IBM PowerVS instances. NTP forwarder will be installed on the network-services vsi. | `bool` | `true` | no |
| [custom\_profile](#input\_custom\_profile) | Overrides t-shirt profile: Custom PowerVS instance. Specify 'sap\_profile\_id' [here](https://cloud.ibm.com/docs/sap?topic=sap-hana-iaas-offerings-profiles-power-vs) or combination of 'cores' & 'memory'. Optionally volumes can be created. | object({
sap_profile_id = string
cores = string
memory = string
server_type = string
proc_type = string
storage = object({
size = string
tier = string
})
}) | {
"cores": "",
"memory": "",
"proc_type": "",
"sap_profile_id": null,
"server_type": "",
"storage": {
"size": "",
"tier": ""
}
} | no |
| [custom\_profile\_instance\_boot\_image](#input\_custom\_profile\_instance\_boot\_image) | Override the t-shirt size specs of PowerVS Workspace instance by selecting an image name and providing valid 'custom\_profile' optional parameter. | `string` | `"none"` | no |
| [dns\_forwarder\_config](#input\_dns\_forwarder\_config) | Configuration for the DNS forwarder to a DNS service that is not reachable directly from PowerVS. | object({
dns_servers = string
}) | {
"dns_servers": "161.26.0.7; 161.26.0.8; 9.9.9.9;"
} | no |
-| [enable\_monitoring](#input\_enable\_monitoring) | Specify whether Monitoring will be enabled. This includes the creation of an IBM Cloud Monitoring Instance and an Intel Monitoring Instance to host the services. If you already have an existing monitoring instance then specify in optional parameter 'existing\_monitoring\_instance\_crn' and setting this parameter to true. | `bool` | n/a | yes |
-| [enable\_scc\_wp](#input\_enable\_scc\_wp) | Enable SCC Workload Protection and install and configure the SCC Workload Protection agent on all intel VSIs in this deployment. If set to true, then value for 'ansible\_vault\_password' in optional parameter must be set. | `bool` | n/a | yes |
+| [enable\_monitoring](#input\_enable\_monitoring) | Specify whether Monitoring will be enabled. This includes the creation of an IBM Cloud Monitoring Instance and an Intel Monitoring Instance to host the services. If you already have an existing monitoring instance then specify in optional parameter 'existing\_monitoring\_instance\_crn' and setting this parameter to true. | `bool` | `false` | no |
+| [enable\_scc\_wp](#input\_enable\_scc\_wp) | Enable SCC Workload Protection and install and configure the SCC Workload Protection agent on all intel VSIs in this deployment. If set to true, then value for 'ansible\_vault\_password' in optional parameter must be set. | `bool` | `true` | no |
| [existing\_monitoring\_instance\_crn](#input\_existing\_monitoring\_instance\_crn) | Existing CRN of IBM Cloud Monitoring Instance. If value is null, then an IBM Cloud Monitoring Instance will not be created but an intel VSI instance will be created if 'enable\_monitoring' is true. | `string` | `null` | no |
| [existing\_sm\_instance\_guid](#input\_existing\_sm\_instance\_guid) | An existing Secrets Manager GUID. The existing Secret Manager instance must have private certificate engine configured. If not provided an new instance will be provisioned. | `string` | `null` | no |
| [existing\_sm\_instance\_region](#input\_existing\_sm\_instance\_region) | Required if value is passed into `var.existing_sm_instance_guid`. | `string` | `null` | no |
-| [external\_access\_ip](#input\_external\_access\_ip) | Specify the source IP address or CIDR for login through SSH to the environment after deployment. Access to the environment will be allowed only from this IP address. Can be set to 'null' if you choose to use client to site vpn. | `string` | n/a | yes |
+| [external\_access\_ip](#input\_external\_access\_ip) | Specify the source IP address or CIDR for login through SSH to the environment after deployment. Access to the environment will be allowed only from this IP address. Can be set to 'null' if you choose to use client to site vpn. | `string` | `"0.0.0.0/0"` | no |
| [ibmcloud\_api\_key](#input\_ibmcloud\_api\_key) | The IBM Cloud platform API key needed to deploy IAM enabled resources. | `string` | n/a | yes |
| [network\_services\_vsi\_profile](#input\_network\_services\_vsi\_profile) | Compute profile configuration of the network services vsi (cpu and memory configuration). Must be one of the supported profiles. See [here](https://cloud.ibm.com/docs/vpc?topic=vpc-profiles&interface=ui). | `string` | `"cx2-2x4"` | no |
| [nfs\_server\_config](#input\_nfs\_server\_config) | Configuration for the NFS server. 'size' is in GB, 'iops' is maximum input/output operation performance bandwidth per second, 'mount\_path' defines the target mount point on os. Set 'configure\_nfs\_server' to false to ignore creating file storage share. | object({
size = number
iops = number
mount_path = string
}) | {
"iops": 600,
"mount_path": "/nfs",
"size": 200
} | no |
diff --git a/solutions/standard-plus-vsi/catalogValidationValues.json.template b/solutions/standard-plus-vsi/catalogValidationValues.json.template
index 4dec69a7..f3c8cbd6 100644
--- a/solutions/standard-plus-vsi/catalogValidationValues.json.template
+++ b/solutions/standard-plus-vsi/catalogValidationValues.json.template
@@ -1,15 +1,13 @@
{
"ibmcloud_api_key": $VALIDATION_APIKEY,
- "powervs_zone": "dal10",
+ "powervs_zone": "sao04",
"prefix": "qs-val",
"tshirt_size": {
"tshirt_size":"aix_xs",
- "image":"7300-02-02"
+ "image":"7300-03-00"
},
- "external_access_ip": "0.0.0.0/0",
"powervs_resource_group_name": "Automation",
"ssh_public_key": $SSH_PUB_KEY,
"ssh_private_key": $SSH_PRV_KEY,
- "enable_monitoring": false,
- "enable_scc_wp": false
+ "ansible_vault_password": "SecurePassw0rd!"
}
diff --git a/solutions/standard-plus-vsi/locals.tf b/solutions/standard-plus-vsi/locals.tf
index ed25ab22..c8275b27 100644
--- a/solutions/standard-plus-vsi/locals.tf
+++ b/solutions/standard-plus-vsi/locals.tf
@@ -2,9 +2,18 @@
# PowerVS Instance module
#####################################################
+data "ibm_pi_catalog_images" "catalog_images_ds" {
+ provider = ibm.ibm-pi
+ pi_cloud_instance_id = module.standard.powervs_workspace_guid
+ sap = true
+ vtl = true
+}
+
locals {
p10_unsupported_regions = ["che01", "lon04", "lon06", "mon01", "syd04", "syd05", "tor01", "us-east", "us-south"] # datacenters that don't support P10 yet
server_type = contains(local.p10_unsupported_regions, var.powervs_zone) ? "s922" : "s1022"
+ sap_profile_id = contains(local.p10_unsupported_regions, var.powervs_zone) ? "ush1-4x256" : "sh2-4x256" # sap_profile_id for P9 and P10
+
ibm_powervs_quickstart_tshirt_sizes = {
"aix_xs" = { "sap_profile_id" = null, "server_type" = local.server_type, "proc_type" = "shared", "cores" = "1", "memory" = "32", "storage" = "100", "tier" = "tier3", "image" = var.tshirt_size.image }
"aix_s" = { "sap_profile_id" = null, "server_type" = local.server_type, "proc_type" = "shared", "cores" = "4", "memory" = "128", "storage" = "500", "tier" = "tier3", "image" = var.tshirt_size.image }
@@ -14,8 +23,8 @@ locals {
"ibm_i_s" = { "sap_profile_id" = null, "server_type" = local.server_type, "proc_type" = "shared", "cores" = "1", "memory" = "32", "storage" = "500", "tier" = "tier3", "image" = var.tshirt_size.image }
"ibm_i_m" = { "sap_profile_id" = null, "server_type" = local.server_type, "proc_type" = "shared", "cores" = "2", "memory" = "64", "storage" = "1000", "tier" = "tier3", "image" = var.tshirt_size.image }
"ibm_i_l" = { "sap_profile_id" = null, "server_type" = local.server_type, "proc_type" = "shared", "cores" = "4", "memory" = "132", "storage" = "2000", "tier" = "tier3", "image" = var.tshirt_size.image }
- "sap_dev_rhel" = { "sap_profile_id" = "ush1-4x128", "server_type" = null, "proc_type" = null, "storage" = "750", "tier" = "tier1", "image" = var.tshirt_size.image }
- "sap_dev_sles" = { "sap_profile_id" = "ush1-4x128", "server_type" = null, "proc_type" = null, "storage" = "750", "tier" = "tier1", "image" = var.tshirt_size.image }
+ "sap_dev_rhel" = { "sap_profile_id" = local.sap_profile_id, "server_type" = null, "proc_type" = null, "storage" = "750", "tier" = "tier1", "image" = var.tshirt_size.image }
+ "sap_dev_sles" = { "sap_profile_id" = local.sap_profile_id, "server_type" = null, "proc_type" = null, "storage" = "750", "tier" = "tier1", "image" = var.tshirt_size.image }
"custom" = { "sap_profile_id" = var.custom_profile.sap_profile_id, "server_type" = var.custom_profile.server_type, "proc_type" = var.custom_profile.proc_type, "cores" = var.custom_profile.cores, "memory" = var.custom_profile.memory, "storage" = var.custom_profile.storage.size, "tier" = var.custom_profile.storage.tier, "image" = var.custom_profile_instance_boot_image }
}
@@ -39,6 +48,7 @@ locals {
"SLES15-SP6-SAP",
"SLES15-SP6-SAP-NETWEAVER",
]
+
qs_tshirt_choice = lookup(local.ibm_powervs_quickstart_tshirt_sizes, var.tshirt_size.tshirt_size, null)
valid_boot_image_provided = local.qs_tshirt_choice.image != "none" ? true : false
@@ -58,12 +68,13 @@ locals {
# tflint-ignore: terraform_unused_declarations
valid_custom_profile_msg_chk = regex("^${local.valid_custom_profile_msg}$", (local.custom_profile_enabled ? local.valid_custom_profile_provided ? local.valid_custom_profile_msg : "" : local.valid_custom_profile_msg))
- ##################################
- # PowerVS Instance Locals
- ##################################
+ catalog_images = {
+ for stock_image in data.ibm_pi_catalog_images.catalog_images_ds.images :
+ stock_image.name => stock_image.image_id
+ }
pi_instance = {
- pi_image_id = lookup(module.standard.powervs_images, local.qs_tshirt_choice.image, null)
+ pi_image_id = lookup(local.catalog_images, local.qs_tshirt_choice.image, null)
pi_networks = [module.standard.powervs_management_subnet, module.standard.powervs_backup_subnet]
pi_instance_name = "${var.prefix}-pi-qs"
pi_sap_profile_id = local.sap_system_creation_enabled ? local.qs_tshirt_choice.sap_profile_id : null
@@ -73,5 +84,4 @@ locals {
pi_cpu_proc_type = local.sap_system_creation_enabled ? null : local.qs_tshirt_choice.proc_type
pi_storage_config = local.qs_tshirt_choice.storage != "" && local.qs_tshirt_choice.tier != "" ? [{ name = "data", size = local.qs_tshirt_choice.storage, count = "1", tier = local.qs_tshirt_choice.tier, mount = "/data" }] : null
}
-
}
diff --git a/solutions/standard-plus-vsi/main.tf b/solutions/standard-plus-vsi/main.tf
index 76aeea05..c7729a44 100644
--- a/solutions/standard-plus-vsi/main.tf
+++ b/solutions/standard-plus-vsi/main.tf
@@ -22,7 +22,6 @@ module "standard" {
powervs_resource_group_name = var.powervs_resource_group_name
powervs_management_network = var.powervs_management_network
powervs_backup_network = var.powervs_backup_network
- powervs_image_names = [local.qs_tshirt_choice.image]
tags = var.tags
sm_service_plan = var.sm_service_plan
existing_sm_instance_guid = var.existing_sm_instance_guid
diff --git a/solutions/standard-plus-vsi/variables.tf b/solutions/standard-plus-vsi/variables.tf
index cf2f2850..f4773084 100644
--- a/solutions/standard-plus-vsi/variables.tf
+++ b/solutions/standard-plus-vsi/variables.tf
@@ -21,26 +21,6 @@ variable "tshirt_size" {
}
}
-variable "external_access_ip" {
- description = "Specify the source IP address or CIDR for login through SSH to the environment after deployment. Access to the environment will be allowed only from this IP address. Can be set to 'null' if you choose to use client to site vpn."
- type = string
-}
-
-variable "client_to_site_vpn" {
- description = "VPN configuration - the client ip pool and list of users email ids to access the environment. If enabled, then a Secret Manager instance is also provisioned with certificates generated. See optional parameters to reuse existing certificate from secrets manager instance."
- type = object({
- enable = bool
- client_ip_pool = string
- vpn_client_access_group_users = list(string)
- })
-
- default = {
- "enable" : false,
- "client_ip_pool" : "192.168.0.0/16",
- "vpn_client_access_group_users" : []
- }
-}
-
variable "ssh_public_key" {
description = "Public SSH Key for VSI creation. Must be an RSA key with a key size of either 2048 bits or 4096 bits (recommended). Must be a valid SSH key that does not already exist in the deployment region."
type = string
@@ -58,32 +38,16 @@ variable "ibmcloud_api_key" {
sensitive = true
}
-variable "enable_monitoring" {
- description = "Specify whether Monitoring will be enabled. This includes the creation of an IBM Cloud Monitoring Instance and an Intel Monitoring Instance to host the services. If you already have an existing monitoring instance then specify in optional parameter 'existing_monitoring_instance_crn' and setting this parameter to true."
- type = bool
-}
-
-variable "enable_scc_wp" {
- description = "Enable SCC Workload Protection and install and configure the SCC Workload Protection agent on all intel VSIs in this deployment. If set to true, then value for 'ansible_vault_password' in optional parameter must be set."
- type = bool
+variable "ansible_vault_password" {
+ description = "Vault password to encrypt ansible playbooks that contain sensitive information. Password requirements: 15-100 characters and at least one uppercase letter, one lowercase letter, one number, and one special character. Allowed characters: A-Z, a-z, 0-9, !#$%&()*+-.:;<=>?@[]_{|}~."
+ type = string
+ sensitive = true
}
#####################################################
-# Optional Parameters
+# Optional Parameters PowerVS Instance
#####################################################
-variable "vpc_intel_images" {
- description = "Stock OS image names for creating VPC landing zone VSI instances: RHEL (management and network services) and SLES (monitoring)."
- type = object({
- rhel_image = string
- sles_image = string
- })
- default = {
- "rhel_image" : "ibm-redhat-9-4-amd64-sap-applications-5"
- "sles_image" : "ibm-sles-15-6-amd64-sap-applications-3"
- }
-}
-
variable "custom_profile_instance_boot_image" {
description = "Override the t-shirt size specs of PowerVS Workspace instance by selecting an image name and providing valid 'custom_profile' optional parameter."
type = string
@@ -122,18 +86,75 @@ variable "custom_profile" {
}
#####################################################
-# Optional Parameter Network Services VSI Profile
+# Optional Parameters PowerVS Workspace
+#####################################################
+
+variable "powervs_management_network" {
+ description = "Name of the IBM Cloud PowerVS management subnet and CIDR to create."
+ type = object({
+ name = string
+ cidr = string
+ })
+
+ default = {
+ "name" : "mgmt_net",
+ "cidr" : "10.51.0.0/24"
+ }
+}
+
+variable "powervs_backup_network" {
+ description = "Name of the IBM Cloud PowerVS backup network and CIDR to create."
+ type = object({
+ name = string
+ cidr = string
+ })
+
+ default = {
+ "name" : "bkp_net",
+ "cidr" : "10.52.0.0/24"
+ }
+}
+
+variable "powervs_resource_group_name" {
+ description = "Existing IBM Cloud resource group name."
+ type = string
+ default = "Default"
+}
+
+variable "tags" {
+ description = "List of tag names for the IBM Cloud PowerVS workspace"
+ type = list(string)
+ default = []
+}
+
+#####################################################
+# Optional Parameters for intel VSI
#####################################################
+variable "vpc_intel_images" {
+ description = "Stock OS image names for creating VPC landing zone VSI instances: RHEL (management and network services) and SLES (monitoring)."
+ type = object({
+ rhel_image = string
+ sles_image = string
+ })
+ default = {
+ "rhel_image" : "ibm-redhat-9-4-amd64-sap-applications-5"
+ "sles_image" : "ibm-sles-15-6-amd64-sap-applications-3"
+ }
+}
+
variable "network_services_vsi_profile" {
description = "Compute profile configuration of the network services vsi (cpu and memory configuration). Must be one of the supported profiles. See [here](https://cloud.ibm.com/docs/vpc?topic=vpc-profiles&interface=ui)."
type = string
default = "cx2-2x4"
}
-#####################################################
-# Optional Parameters VSI OS Management Services
-#####################################################
+variable "external_access_ip" {
+ description = "Specify the source IP address or CIDR for login through SSH to the environment after deployment. Access to the environment will be allowed only from this IP address. Can be set to 'null' if you choose to use client to site vpn."
+ type = string
+ default = "0.0.0.0/0"
+}
+
variable "configure_dns_forwarder" {
description = "Specify if DNS forwarder will be configured. This will allow you to use central DNS servers (e.g. IBM Cloud DNS servers) sitting outside of the created IBM PowerVS infrastructure. If yes, ensure 'dns_forwarder_config' optional variable is set properly. DNS forwarder will be installed on the network-services vsi."
@@ -179,52 +200,48 @@ variable "nfs_server_config" {
}
}
+
#####################################################
-# Optional Parameters PowerVS Workspace
+# Optional Parameters Monitoring and SCC WP Instance
#####################################################
-variable "powervs_management_network" {
- description = "Name of the IBM Cloud PowerVS management subnet and CIDR to create."
- type = object({
- name = string
- cidr = string
- })
+variable "enable_scc_wp" {
+ description = "Enable SCC Workload Protection and install and configure the SCC Workload Protection agent on all intel VSIs in this deployment. If set to true, then value for 'ansible_vault_password' in optional parameter must be set."
+ type = bool
+ default = true
+}
- default = {
- "name" : "mgmt_net",
- "cidr" : "10.51.0.0/24"
- }
+variable "enable_monitoring" {
+ description = "Specify whether Monitoring will be enabled. This includes the creation of an IBM Cloud Monitoring Instance and an Intel Monitoring Instance to host the services. If you already have an existing monitoring instance then specify in optional parameter 'existing_monitoring_instance_crn' and setting this parameter to true."
+ type = bool
+ default = false
}
-variable "powervs_backup_network" {
- description = "Name of the IBM Cloud PowerVS backup network and CIDR to create."
+variable "existing_monitoring_instance_crn" {
+ description = "Existing CRN of IBM Cloud Monitoring Instance. If value is null, then an IBM Cloud Monitoring Instance will not be created but an intel VSI instance will be created if 'enable_monitoring' is true. "
+ type = string
+ default = null
+}
+
+###########################################################
+# Optional Parameters Secret Manager for client to site VPN
+###########################################################
+
+variable "client_to_site_vpn" {
+ description = "VPN configuration - the client ip pool and list of users email ids to access the environment. If enabled, then a Secret Manager instance is also provisioned with certificates generated. See optional parameters to reuse existing certificate from secrets manager instance."
type = object({
- name = string
- cidr = string
+ enable = bool
+ client_ip_pool = string
+ vpn_client_access_group_users = list(string)
})
default = {
- "name" : "bkp_net",
- "cidr" : "10.52.0.0/24"
+ "enable" : true,
+ "client_ip_pool" : "192.168.0.0/16",
+ "vpn_client_access_group_users" : []
}
}
-variable "powervs_resource_group_name" {
- description = "Existing IBM Cloud resource group name."
- type = string
- default = "Default"
-}
-
-variable "tags" {
- description = "List of tag names for the IBM Cloud PowerVS workspace"
- type = list(string)
- default = []
-}
-
-#####################################################
-# Optional Parameters Secret Manager
-#####################################################
-
variable "sm_service_plan" {
type = string
description = "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."
@@ -249,27 +266,6 @@ variable "certificate_template_name" {
default = "my-template"
}
-#################################################
-# Optional Parameters Monitoring Instance
-#################################################
-
-variable "existing_monitoring_instance_crn" {
- description = "Existing CRN of IBM Cloud Monitoring Instance. If value is null, then an IBM Cloud Monitoring Instance will not be created but an intel VSI instance will be created if 'enable_monitoring' is true. "
- type = string
- default = null
-}
-
-#################################################
-# Optional Parameters SCC Workload Protection
-#################################################
-
-variable "ansible_vault_password" {
- description = "Vault password to encrypt ansible playbooks that contain sensitive information. Required when SCC workload Protection is enabled. Password requirements: 15-100 characters and at least one uppercase letter, one lowercase letter, one number, and one special character. Allowed characters: A-Z, a-z, 0-9, !#$%&()*+-.:;<=>?@[]_{|}~."
- type = string
- sensitive = true
- default = null
-}
-
#############################################################################
# Schematics Output
#############################################################################
diff --git a/solutions/standard/README.md b/solutions/standard/README.md
index 8a026683..667dcdf6 100644
--- a/solutions/standard/README.md
+++ b/solutions/standard/README.md
@@ -1,4 +1,4 @@
-# IBM Cloud Solution for Power Virtual Server with VPC Landing Zone Standard Variation
+# IBM Cloud Solution for Power Virtual Server with VPC Landing Zone Standard Landscape Variation
This example sets up the following infrastructure:
- A **VPC Infrastructure** with the following components:
@@ -23,7 +23,6 @@ This example sets up the following infrastructure:
- Creates two private networks: a management network and a backup network.
- Attaches the PowerVS workspace to transit gateway.
- Creates an SSH key.
- - Optionally imports list of stock catalog images.
- Optionally imports up to three custom images from Cloud Object Storage.
### Notes:
@@ -36,11 +35,11 @@ This example sets up the following infrastructure:
## Reference architecture
-[Standard variation](https://github.com/terraform-ibm-modules/terraform-ibm-powervs-infrastructure/blob/main/reference-architectures/standard/deploy-arch-ibm-pvs-inf-standard.md)
+[Standard Landscape Variation](https://github.com/terraform-ibm-modules/terraform-ibm-powervs-infrastructure/blob/main/reference-architectures/standard/deploy-arch-ibm-pvs-inf-standard.md)
## Architecture diagram
-
+
### Requirements
@@ -67,13 +66,13 @@ No resources.
| [IC\_SCHEMATICS\_WORKSPACE\_ID](#input\_IC\_SCHEMATICS\_WORKSPACE\_ID) | leave blank if running locally. This variable will be automatically populated if running from an IBM Cloud Schematics workspace. | `string` | `""` | no |
| [ansible\_vault\_password](#input\_ansible\_vault\_password) | Vault password to encrypt ansible playbooks that contain sensitive information. Required when SCC workload Protection is enabled. Password requirements: 15-100 characters and at least one uppercase letter, one lowercase letter, one number, and one special character. Allowed characters: A-Z, a-z, 0-9, !#$%&()*+-.:;<=>?@[]\_{\|}~. | `string` | `null` | no |
| [certificate\_template\_name](#input\_certificate\_template\_name) | The name of the Certificate Template to create for a private\_cert secret engine. When `var.existing_sm_instance_guid` is not null, then it has to be the existing template name that exists in the private cert engine. | `string` | `"my-template"` | no |
-| [client\_to\_site\_vpn](#input\_client\_to\_site\_vpn) | VPN configuration - the client ip pool and list of users email ids to access the environment. If enabled, then a Secret Manager instance is also provisioned with certificates generated. See optional parameters to reuse existing certificate from secrets manager instance. | object({
enable = bool
client_ip_pool = string
vpn_client_access_group_users = list(string)
}) | {
"client_ip_pool": "192.168.0.0/16",
"enable": true,
"vpn_client_access_group_users": []
} | no |
+| [client\_to\_site\_vpn](#input\_client\_to\_site\_vpn) | VPN configuration - the client ip pool and list of users email ids to access the environment. If enabled, then a Secret Manager instance is also provisioned with certificates generated. See optional parameters to reuse existing certificate from secrets manager instance. | object({
enable = bool
client_ip_pool = string
vpn_client_access_group_users = list(string)
}) | {
"client_ip_pool": "192.168.0.0/16",
"enable": false,
"vpn_client_access_group_users": []
} | no |
| [configure\_dns\_forwarder](#input\_configure\_dns\_forwarder) | Specify if DNS forwarder will be configured. This will allow you to use central DNS servers (e.g. IBM Cloud DNS servers) sitting outside of the created IBM PowerVS infrastructure. If yes, ensure 'dns\_forwarder\_config' optional variable is set properly. DNS forwarder will be installed on the network-services vsi. | `bool` | `true` | no |
| [configure\_nfs\_server](#input\_configure\_nfs\_server) | Specify if NFS server will be configured. This will allow you easily to share files between PowerVS instances (e.g., SAP installation files). [File storage share and mount target](https://cloud.ibm.com/docs/vpc?topic=vpc-file-storage-create&interface=ui) in VPC will be created.. If yes, ensure 'nfs\_server\_config' optional variable is set properly below. Default value is '200GB' which will be mounted on specified directory in network-service vsi. | `bool` | `true` | no |
| [configure\_ntp\_forwarder](#input\_configure\_ntp\_forwarder) | Specify if NTP forwarder will be configured. This will allow you to synchronize time between IBM PowerVS instances. NTP forwarder will be installed on the network-services vsi. | `bool` | `true` | no |
| [dns\_forwarder\_config](#input\_dns\_forwarder\_config) | Configuration for the DNS forwarder to a DNS service that is not reachable directly from PowerVS. | object({
dns_servers = string
}) | {
"dns_servers": "161.26.0.7; 161.26.0.8; 9.9.9.9;"
} | no |
-| [enable\_monitoring](#input\_enable\_monitoring) | Specify whether Monitoring will be enabled. This includes the creation of an IBM Cloud Monitoring Instance and an Intel Monitoring Instance to host the services. If you already have an existing monitoring instance then specify in optional parameter 'existing\_monitoring\_instance\_crn' and setting this parameter to true. | `bool` | n/a | yes |
-| [enable\_scc\_wp](#input\_enable\_scc\_wp) | Enable SCC Workload Protection and install and configure the SCC Workload Protection agent on all intel VSIs in this deployment. If set to true, then value for 'ansible\_vault\_password' in optional parameter must be set. | `bool` | n/a | yes |
+| [enable\_monitoring](#input\_enable\_monitoring) | Specify whether Monitoring will be enabled. This includes the creation of an IBM Cloud Monitoring Instance and an Intel Monitoring Instance to host the services. If you already have an existing monitoring instance then specify in optional parameter 'existing\_monitoring\_instance\_crn' and setting this parameter to true. | `bool` | `false` | no |
+| [enable\_scc\_wp](#input\_enable\_scc\_wp) | Enable SCC Workload Protection and install and configure the SCC Workload Protection agent on all intel VSIs in this deployment. If set to true, then value for 'ansible\_vault\_password' in optional parameter must be set. | `bool` | `false` | no |
| [existing\_monitoring\_instance\_crn](#input\_existing\_monitoring\_instance\_crn) | Existing CRN of IBM Cloud Monitoring Instance. If value is null, then an IBM Cloud Monitoring Instance will not be created but an intel VSI instance will be created if 'enable\_monitoring' is true. | `string` | `null` | no |
| [existing\_sm\_instance\_guid](#input\_existing\_sm\_instance\_guid) | An existing Secrets Manager GUID. The existing Secret Manager instance must have private certificate engine configured. If not provided an new instance will be provisioned. | `string` | `null` | no |
| [existing\_sm\_instance\_region](#input\_existing\_sm\_instance\_region) | Required if value is passed into `var.existing_sm_instance_guid`. | `string` | `null` | no |
@@ -85,7 +84,6 @@ No resources.
| [powervs\_custom\_image\_cos\_configuration](#input\_powervs\_custom\_image\_cos\_configuration) | Cloud Object Storage bucket containing custom PowerVS images. bucket\_name: string, name of the COS bucket. bucket\_access: string, possible values: public, private (private requires powervs\_custom\_image\_cos\_service\_credentials). bucket\_region: string, COS bucket region. | object({
bucket_name = string
bucket_access = string
bucket_region = string
}) | {
"bucket_access": "",
"bucket_name": "",
"bucket_region": ""
} | no |
| [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\_image\_names](#input\_powervs\_image\_names) | List of Images to be imported into cloud account from catalog images. Supported values can be found [here](https://github.com/terraform-ibm-modules/terraform-ibm-powervs-workspace/blob/main/docs/catalog_images_list.md). For custom os image import configure the optional parameter 'powervs\_custom\_images'. | `list(string)` | [| no | | [powervs\_management\_network](#input\_powervs\_management\_network) | Name of the IBM Cloud PowerVS management subnet and CIDR to create. |
"IBMi-75-05-2984-1",
"IBMi-74-11-2984-1",
"7200-05-09",
"7300-03-00",
"SLES15-SP6-SAP",
"SLES15-SP6-SAP-NETWEAVER",
"RHEL9-SP4-SAP",
"RHEL9-SP4-SAP-NETWEAVER"
]
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\_zone](#input\_powervs\_zone) | IBM Cloud data center location where IBM PowerVS infrastructure will be created. | `string` | n/a | yes |
diff --git a/solutions/standard/catalogValidationValues.json.template b/solutions/standard/catalogValidationValues.json.template
index 77db53a4..1f5e8bb6 100644
--- a/solutions/standard/catalogValidationValues.json.template
+++ b/solutions/standard/catalogValidationValues.json.template
@@ -1,11 +1,9 @@
{
- "ibmcloud_api_key": $VALIDATION_APIKEY,
- "powervs_zone": "eu-de-1",
- "powervs_resource_group_name": "Automation",
"prefix": $PREFIX,
+ "powervs_resource_group_name": "Automation",
+ "powervs_zone": "eu-de-1",
"external_access_ip": "0.0.0.0/0",
"ssh_public_key": $SSH_PUB_KEY,
"ssh_private_key": $SSH_PRV_KEY,
- "enable_monitoring": false,
- "enable_scc_wp": false
+ "ibmcloud_api_key": $VALIDATION_APIKEY
}
diff --git a/solutions/standard/main.tf b/solutions/standard/main.tf
index 5cdf1261..3665c51b 100644
--- a/solutions/standard/main.tf
+++ b/solutions/standard/main.tf
@@ -23,7 +23,6 @@ module "standard" {
powervs_resource_group_name = var.powervs_resource_group_name
powervs_management_network = var.powervs_management_network
powervs_backup_network = var.powervs_backup_network
- powervs_image_names = var.powervs_image_names
tags = var.tags
powervs_custom_images = var.powervs_custom_images
powervs_custom_image_cos_configuration = var.powervs_custom_image_cos_configuration
diff --git a/solutions/standard/variables.tf b/solutions/standard/variables.tf
index c5c3c2d4..edc58dca 100644
--- a/solutions/standard/variables.tf
+++ b/solutions/standard/variables.tf
@@ -1,5 +1,5 @@
-variable "powervs_zone" {
- description = "IBM Cloud data center location where IBM PowerVS infrastructure will be created."
+variable "prefix" {
+ description = "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."
type = string
}
@@ -8,8 +8,8 @@ variable "powervs_resource_group_name" {
type = string
}
-variable "prefix" {
- description = "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."
+variable "powervs_zone" {
+ description = "IBM Cloud data center location where IBM PowerVS infrastructure will be created."
type = string
}
@@ -18,21 +18,6 @@ variable "external_access_ip" {
type = string
}
-variable "client_to_site_vpn" {
- description = "VPN configuration - the client ip pool and list of users email ids to access the environment. If enabled, then a Secret Manager instance is also provisioned with certificates generated. See optional parameters to reuse existing certificate from secrets manager instance."
- type = object({
- enable = bool
- client_ip_pool = string
- vpn_client_access_group_users = list(string)
- })
-
- default = {
- "enable" : true,
- "client_ip_pool" : "192.168.0.0/16",
- "vpn_client_access_group_users" : []
- }
-}
-
variable "ssh_public_key" {
description = "Public SSH Key for VSI creation. Must be an RSA key with a key size of either 2048 bits or 4096 bits (recommended). Must be a valid SSH key that does not already exist in the deployment region."
type = string
@@ -50,100 +35,6 @@ variable "ibmcloud_api_key" {
sensitive = true
}
-variable "enable_monitoring" {
- description = "Specify whether Monitoring will be enabled. This includes the creation of an IBM Cloud Monitoring Instance and an Intel Monitoring Instance to host the services. If you already have an existing monitoring instance then specify in optional parameter 'existing_monitoring_instance_crn' and setting this parameter to true."
- type = bool
-}
-
-variable "enable_scc_wp" {
- description = "Enable SCC Workload Protection and install and configure the SCC Workload Protection agent on all intel VSIs in this deployment. If set to true, then value for 'ansible_vault_password' in optional parameter must be set."
- type = bool
-}
-
-#####################################################
-# Optional Parameters IBM Cloud Services
-#####################################################
-
-variable "transit_gateway_global" {
- description = "Connect to the networks outside the associated region."
- type = bool
- default = false
-}
-
-#####################################################
-# Optional Parameter VPC VSIs
-#####################################################
-
-variable "vpc_intel_images" {
- description = "Stock OS image names for creating VPC landing zone VSI instances: RHEL (management and network services) and SLES (monitoring)."
- type = object({
- rhel_image = string
- sles_image = string
- })
- default = {
- "rhel_image" : "ibm-redhat-9-4-amd64-sap-applications-5"
- "sles_image" : "ibm-sles-15-6-amd64-sap-applications-3"
- }
-}
-
-#####################################################
-# Optional Parameter Network Services VSI Profile
-#####################################################
-
-variable "network_services_vsi_profile" {
- description = "Compute profile configuration of the network services vsi (cpu and memory configuration). Must be one of the supported profiles. See [here](https://cloud.ibm.com/docs/vpc?topic=vpc-profiles&interface=ui)."
- type = string
- default = "cx2-2x4"
-}
-
-#####################################################
-# Optional Parameters VSI OS Management Services
-#####################################################
-
-variable "configure_dns_forwarder" {
- description = "Specify if DNS forwarder will be configured. This will allow you to use central DNS servers (e.g. IBM Cloud DNS servers) sitting outside of the created IBM PowerVS infrastructure. If yes, ensure 'dns_forwarder_config' optional variable is set properly. DNS forwarder will be installed on the network-services vsi."
- type = bool
- default = true
-}
-
-variable "configure_ntp_forwarder" {
- description = "Specify if NTP forwarder will be configured. This will allow you to synchronize time between IBM PowerVS instances. NTP forwarder will be installed on the network-services vsi."
- type = bool
- default = true
-}
-
-variable "configure_nfs_server" {
- description = "Specify if NFS server will be configured. This will allow you easily to share files between PowerVS instances (e.g., SAP installation files). [File storage share and mount target](https://cloud.ibm.com/docs/vpc?topic=vpc-file-storage-create&interface=ui) in VPC will be created.. If yes, ensure 'nfs_server_config' optional variable is set properly below. Default value is '200GB' which will be mounted on specified directory in network-service vsi."
- type = bool
- default = true
-}
-
-variable "dns_forwarder_config" {
- description = "Configuration for the DNS forwarder to a DNS service that is not reachable directly from PowerVS."
- type = object({
- dns_servers = string
- })
-
- default = {
- "dns_servers" : "161.26.0.7; 161.26.0.8; 9.9.9.9;"
- }
-}
-
-variable "nfs_server_config" {
- description = "Configuration for the NFS server. 'size' is in GB, 'iops' is maximum input/output operation performance bandwidth per second, 'mount_path' defines the target mount point on os. Set 'configure_nfs_server' to false to ignore creating file storage share."
- type = object({
- size = number
- iops = number
- mount_path = string
- })
-
- default = {
- "size" : 200,
- "iops" : 600,
- "mount_path" : "/nfs"
- }
-}
-
#####################################################
# Optional Parameters PowerVS Workspace
#####################################################
@@ -174,12 +65,6 @@ variable "powervs_backup_network" {
}
}
-variable "powervs_image_names" {
- description = "List of Images to be imported into cloud account from catalog images. Supported values can be found [here](https://github.com/terraform-ibm-modules/terraform-ibm-powervs-workspace/blob/main/docs/catalog_images_list.md). For custom os image import configure the optional parameter 'powervs_custom_images'."
- type = list(string)
- default = ["IBMi-75-05-2984-1", "IBMi-74-11-2984-1", "7200-05-09", "7300-03-00", "SLES15-SP6-SAP", "SLES15-SP6-SAP-NETWEAVER", "RHEL9-SP4-SAP", "RHEL9-SP4-SAP-NETWEAVER"]
-}
-
variable "tags" {
description = "List of tag names for the IBM Cloud PowerVS workspace."
type = list(string)
@@ -251,56 +136,164 @@ variable "powervs_custom_image_cos_service_credentials" {
default = null
}
+#####################################################
+# Optional Parameter Transit gateway
+#####################################################
+
+variable "transit_gateway_global" {
+ description = "Connect to the networks outside the associated region."
+ type = bool
+ default = false
+}
#####################################################
-# Optional Parameters Secret Manager
+# Optional Parameter Network Services VSI Profile
#####################################################
-variable "sm_service_plan" {
- type = string
- description = "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."
- default = "standard"
+variable "vpc_intel_images" {
+ description = "Stock OS image names for creating VPC landing zone VSI instances: RHEL (management and network services) and SLES (monitoring)."
+ type = object({
+ rhel_image = string
+ sles_image = string
+ })
+ default = {
+ "rhel_image" : "ibm-redhat-9-4-amd64-sap-applications-5"
+ "sles_image" : "ibm-sles-15-6-amd64-sap-applications-3"
+ }
}
-variable "existing_sm_instance_guid" {
+variable "network_services_vsi_profile" {
+ description = "Compute profile configuration of the network services vsi (cpu and memory configuration). Must be one of the supported profiles. See [here](https://cloud.ibm.com/docs/vpc?topic=vpc-profiles&interface=ui)."
type = string
- description = "An existing Secrets Manager GUID. The existing Secret Manager instance must have private certificate engine configured. If not provided an new instance will be provisioned."
- default = null
+ default = "cx2-2x4"
}
-variable "existing_sm_instance_region" {
- type = string
- description = "Required if value is passed into `var.existing_sm_instance_guid`."
- default = null
+#####################################################
+# Optional Parameters VSI OS Management Services
+#####################################################
+
+variable "configure_dns_forwarder" {
+ description = "Specify if DNS forwarder will be configured. This will allow you to use central DNS servers (e.g. IBM Cloud DNS servers) sitting outside of the created IBM PowerVS infrastructure. If yes, ensure 'dns_forwarder_config' optional variable is set properly. DNS forwarder will be installed on the network-services vsi."
+ type = bool
+ default = true
}
-variable "certificate_template_name" {
+variable "configure_ntp_forwarder" {
+ description = "Specify if NTP forwarder will be configured. This will allow you to synchronize time between IBM PowerVS instances. NTP forwarder will be installed on the network-services vsi."
+ type = bool
+ default = true
+}
+
+variable "configure_nfs_server" {
+ description = "Specify if NFS server will be configured. This will allow you easily to share files between PowerVS instances (e.g., SAP installation files). [File storage share and mount target](https://cloud.ibm.com/docs/vpc?topic=vpc-file-storage-create&interface=ui) in VPC will be created.. If yes, ensure 'nfs_server_config' optional variable is set properly below. Default value is '200GB' which will be mounted on specified directory in network-service vsi."
+ type = bool
+ default = true
+}
+
+variable "dns_forwarder_config" {
+ description = "Configuration for the DNS forwarder to a DNS service that is not reachable directly from PowerVS."
+ type = object({
+ dns_servers = string
+ })
+
+ default = {
+ "dns_servers" : "161.26.0.7; 161.26.0.8; 9.9.9.9;"
+ }
+}
+
+variable "nfs_server_config" {
+ description = "Configuration for the NFS server. 'size' is in GB, 'iops' is maximum input/output operation performance bandwidth per second, 'mount_path' defines the target mount point on os. Set 'configure_nfs_server' to false to ignore creating file storage share."
+ type = object({
+ size = number
+ iops = number
+ mount_path = string
+ })
+
+ default = {
+ "size" : 200,
+ "iops" : 600,
+ "mount_path" : "/nfs"
+ }
+}
+
+#################################################
+# Optional Parameters SCC Workload Protection
+#################################################
+
+variable "enable_scc_wp" {
+ description = "Enable SCC Workload Protection and install and configure the SCC Workload Protection agent on all intel VSIs in this deployment. If set to true, then value for 'ansible_vault_password' in optional parameter must be set."
+ type = bool
+ default = false
+}
+
+variable "ansible_vault_password" {
+ description = "Vault password to encrypt ansible playbooks that contain sensitive information. Required when SCC workload Protection is enabled. Password requirements: 15-100 characters and at least one uppercase letter, one lowercase letter, one number, and one special character. Allowed characters: A-Z, a-z, 0-9, !#$%&()*+-.:;<=>?@[]_{|}~."
type = string
- description = "The name of the Certificate Template to create for a private_cert secret engine. When `var.existing_sm_instance_guid` is not null, then it has to be the existing template name that exists in the private cert engine."
- default = "my-template"
+ sensitive = true
+ default = null
}
#################################################
# Optional Parameters Monitoring Instance
#################################################
+variable "enable_monitoring" {
+ description = "Specify whether Monitoring will be enabled. This includes the creation of an IBM Cloud Monitoring Instance and an Intel Monitoring Instance to host the services. If you already have an existing monitoring instance then specify in optional parameter 'existing_monitoring_instance_crn' and setting this parameter to true."
+ type = bool
+ default = false
+}
+
variable "existing_monitoring_instance_crn" {
description = "Existing CRN of IBM Cloud Monitoring Instance. If value is null, then an IBM Cloud Monitoring Instance will not be created but an intel VSI instance will be created if 'enable_monitoring' is true."
type = string
default = null
}
-#################################################
-# Optional Parameters SCC Workload Protection
-#################################################
-variable "ansible_vault_password" {
- description = "Vault password to encrypt ansible playbooks that contain sensitive information. Required when SCC workload Protection is enabled. Password requirements: 15-100 characters and at least one uppercase letter, one lowercase letter, one number, and one special character. Allowed characters: A-Z, a-z, 0-9, !#$%&()*+-.:;<=>?@[]_{|}~."
+
+#####################################################
+# Optional Parameters Secret Manager
+#####################################################
+
+variable "client_to_site_vpn" {
+ description = "VPN configuration - the client ip pool and list of users email ids to access the environment. If enabled, then a Secret Manager instance is also provisioned with certificates generated. See optional parameters to reuse existing certificate from secrets manager instance."
+ type = object({
+ enable = bool
+ client_ip_pool = string
+ vpn_client_access_group_users = list(string)
+ })
+
+ default = {
+ "enable" : false,
+ "client_ip_pool" : "192.168.0.0/16",
+ "vpn_client_access_group_users" : []
+ }
+}
+
+variable "sm_service_plan" {
type = string
- sensitive = true
+ description = "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."
+ default = "standard"
+}
+
+variable "existing_sm_instance_guid" {
+ type = string
+ description = "An existing Secrets Manager GUID. The existing Secret Manager instance must have private certificate engine configured. If not provided an new instance will be provisioned."
+ default = null
+}
+
+variable "existing_sm_instance_region" {
+ type = string
+ description = "Required if value is passed into `var.existing_sm_instance_guid`."
default = null
}
+variable "certificate_template_name" {
+ type = string
+ description = "The name of the Certificate Template to create for a private_cert secret engine. When `var.existing_sm_instance_guid` is not null, then it has to be the existing template name that exists in the private cert engine."
+ default = "my-template"
+}
+
#############################################################################
# Schematics Output
#############################################################################
diff --git a/solutions/standard/versions.tf b/solutions/standard/versions.tf
index 61a92d3d..34d2f3f8 100644
--- a/solutions/standard/versions.tf
+++ b/solutions/standard/versions.tf
@@ -1,5 +1,5 @@
#####################################################
-# PowerVS Standard solution
+# PowerVS standard landscape solution
#####################################################
terraform {
diff --git a/tests/go.mod b/tests/go.mod
index 17799793..bab4a1c0 100644
--- a/tests/go.mod
+++ b/tests/go.mod
@@ -7,7 +7,7 @@ toolchain go1.24.2
require (
github.com/gruntwork-io/terratest v0.48.2
github.com/stretchr/testify v1.10.0
- github.com/terraform-ibm-modules/ibmcloud-terratest-wrapper v1.49.1
+ github.com/terraform-ibm-modules/ibmcloud-terratest-wrapper v1.49.3
)
require (
@@ -16,7 +16,7 @@ require (
github.com/IBM-Cloud/power-go-client v1.11.0 // indirect
github.com/IBM/cloud-databases-go-sdk v0.7.1 // indirect
github.com/IBM/go-sdk-core/v5 v5.19.1 // indirect
- github.com/IBM/platform-services-go-sdk v0.79.1 // indirect
+ github.com/IBM/platform-services-go-sdk v0.80.0 // indirect
github.com/IBM/project-go-sdk v0.3.6 // indirect
github.com/IBM/schematics-go-sdk v0.4.0 // indirect
github.com/IBM/vpc-go-sdk v1.0.2 // indirect
diff --git a/tests/go.sum b/tests/go.sum
index 3cddc416..5b07052c 100644
--- a/tests/go.sum
+++ b/tests/go.sum
@@ -9,8 +9,8 @@ github.com/IBM/cloud-databases-go-sdk v0.7.1/go.mod h1:JYucI1PdwqbAd8XGdDAchxzxR
github.com/IBM/go-sdk-core/v5 v5.9.2/go.mod h1:YlOwV9LeuclmT/qi/LAK2AsobbAP42veV0j68/rlZsE=
github.com/IBM/go-sdk-core/v5 v5.19.1 h1:sleVks1O4XjgF4YEGvyDh6PZbP6iZhlTPeDkQc8nWDs=
github.com/IBM/go-sdk-core/v5 v5.19.1/go.mod h1:Q3BYO6iDA2zweQPDGbNTtqft5tDcEpm6RTuqMlPcvbw=
-github.com/IBM/platform-services-go-sdk v0.79.1 h1:jPeo+ZJBxg7lkaNyfydqqagGYQRi5tSBNV1Y4sAdKfA=
-github.com/IBM/platform-services-go-sdk v0.79.1/go.mod h1:XOowH+JnIih3FA7uilLVM/9VH7XgCmJ4T/i6eZi7gkw=
+github.com/IBM/platform-services-go-sdk v0.80.0 h1:oNZkkviTwnA2wRRHEUQWRnUENjjdORi5x/fPhqEzfuQ=
+github.com/IBM/platform-services-go-sdk v0.80.0/go.mod h1:XOowH+JnIih3FA7uilLVM/9VH7XgCmJ4T/i6eZi7gkw=
github.com/IBM/project-go-sdk v0.3.6 h1:DRiANKnAePevFsIKSvR89SUaMa2xsd7YKK71Ka1eqKI=
github.com/IBM/project-go-sdk v0.3.6/go.mod h1:FOJM9ihQV3EEAY6YigcWiTNfVCThtdY8bLC/nhQHFvo=
github.com/IBM/schematics-go-sdk v0.4.0 h1:x01f/tPquYJYLQzJLGuxWfCbV/EdSMXRikOceNy/JLM=
@@ -295,8 +295,8 @@ github.com/stretchr/testify v1.8.0/go.mod h1:yNjHg4UonilssWZ8iaSj1OCr/vHnekPRkoO
github.com/stretchr/testify v1.8.2/go.mod h1:w2LPCIKwWwSfY2zedu0+kehJoqGctiVI29o6fzry7u4=
github.com/stretchr/testify v1.10.0 h1:Xv5erBjTwe/5IxqUQTdXv5kgmIvbHo3QQyRwhJsOfJA=
github.com/stretchr/testify v1.10.0/go.mod h1:r2ic/lqez/lEtzL7wO/rwa5dbSLXVDPFyf8C91i36aY=
-github.com/terraform-ibm-modules/ibmcloud-terratest-wrapper v1.49.1 h1:J8fwwxD3dgKY+9L1nHX7c3f/Gp95BhM519QKKZVyUxE=
-github.com/terraform-ibm-modules/ibmcloud-terratest-wrapper v1.49.1/go.mod h1:e5KlG5DmtHF426J1bSQBgETeW/N4hqsjPUn+9ei/1+k=
+github.com/terraform-ibm-modules/ibmcloud-terratest-wrapper v1.49.3 h1:oa7bvHLxyX81cx6JCGLZhAVf8V5saPIhGpxYjLrd0T0=
+github.com/terraform-ibm-modules/ibmcloud-terratest-wrapper v1.49.3/go.mod h1:D8DpjMe3kwvIpNFJRaAOh+qXQo87dztHV9qlL/s4bC8=
github.com/tidwall/pretty v1.0.0/go.mod h1:XNkn88O1ChpSDQmQeStsy+sBenx6DDtFZJxhVysOjyk=
github.com/tmccombs/hcl2json v0.6.4 h1:/FWnzS9JCuyZ4MNwrG4vMrFrzRgsWEOVi+1AyYUVLGw=
github.com/tmccombs/hcl2json v0.6.4/go.mod h1:+ppKlIW3H5nsAsZddXPy2iMyvld3SHxyjswOZhavRDk=
diff --git a/tests/pr_test.go b/tests/pr_test.go
index bbbe1228..694bbc7b 100644
--- a/tests/pr_test.go
+++ b/tests/pr_test.go
@@ -60,6 +60,11 @@ func setupOptionsStandardSolution(t *testing.T, prefix string, powervs_zone stri
Prefix: prefix,
ResourceGroup: resourceGroup,
Region: powervs_zone,
+ ImplicitDestroy: []string{
+ "module.standard.module.powervs_workspace.ibm_resource_instance.pi_workspace",
+ "module.standard.module.powervs_workspace.ibm_pi_network.private_subnet_1[0]",
+ "module.standard.module.powervs_workspace.ibm_pi_network.private_subnet_2[0]",
+ },
})
options.TerraformVars = map[string]interface{}{
@@ -67,6 +72,11 @@ func setupOptionsStandardSolution(t *testing.T, prefix string, powervs_zone stri
"powervs_resource_group_name": options.ResourceGroup,
"external_access_ip": "0.0.0.0/0",
"powervs_zone": options.Region,
+ "client_to_site_vpn": map[string]interface{}{
+ "enable": true,
+ "client_ip_pool": "192.168.0.0/16",
+ "vpn_client_access_group_users": []string{},
+ },
"existing_sm_instance_guid": permanentResources["secretsManagerGuid"],
"existing_sm_instance_region": permanentResources["secretsManagerRegion"],
"certificate_template_name": permanentResources["privateCertTemplateName"],
@@ -81,7 +91,7 @@ func setupOptionsStandardSolution(t *testing.T, prefix string, powervs_zone stri
func TestRunBranchStandardExample(t *testing.T) {
t.Parallel()
- options := setupOptionsStandardSolution(t, "pvs-i-b", "lon06")
+ options := setupOptionsStandardSolution(t, "pvs-i-b", "sao04")
output, err := options.RunTestConsistency()
assert.Nil(t, err, "This should not have errored")