. SAP HANA profile to use. Must be one of the supported profiles. See [here](https://cloud.ibm.com/docs/sap?topic=sap-hana-iaas-offerings-profiles-power-vs). File system sizes are automatically calculated. Override automatic calculation by setting values in optional 'pi_hana_instance_custom_storage_config' parameter. 'additional_storage_config' additional file systems to be created and attached to PowerVS instance for SAP HANA. 'size' is in GB. 'count' specify over how many storage volumes the file system will be striped. 'tier' specifies the storage tier in PowerVS workspace. 'mount' specifies the target mount point on OS."
- type = object({
- name = string
- sap_profile_id = string
- additional_storage_config = list(object({
- name = string
- size = string
- count = string
- tier = string
- mount = string
- pool = optional(string)
- }))
- })
- default = {
- name = "hana"
- sap_profile_id = "sh2-4x256"
- additional_storage_config = [{
- "name" : "usrsap",
- "size" : "50",
- "count" : "1",
- "tier" : "tier3",
- "mount" : "/usr/sap"
- }]
- }
-}
-
-variable "powervs_hana_instance_custom_storage_config" {
- description = "Custom File systems to be created and attached to PowerVS instance for SAP HANA. 'size' is in GB. 'count' specify over how many storage volumes the file system will be striped. 'tier' specifies the storage tier in PowerVS workspace. 'mount' specifies the target mount point on OS."
- type = list(object({
- name = string
- size = string
- count = string
- tier = string
- mount = string
- pool = optional(string)
- }))
- default = [{
- "name" : "",
- "size" : "",
- "count" : "",
- "tier" : "",
- "mount" : ""
- }]
-}
-
-variable "powervs_netweaver_instance" {
- description = "'instance_count' is number of SAP NetWeaver instances that should be created. 'size' is in GB. 'count' specify over how many storage volumes the file system will be striped. 'tier' specifies the storage tier in PowerVS workspace. 'mount' specifies the target mount point on OS. "
- type = object({
- instance_count = number
- name = string
- processors = string
- memory = string
- proc_type = string
- storage_config = list(object({
- name = string
- size = string
- count = string
- tier = string
- mount = string
- pool = optional(string)
- }))
- })
- default = {
- instance_count = 1
- name = "nw"
- processors = "3"
- memory = "32"
- proc_type = "shared"
- storage_config = [{
- "name" : "usrsap",
- "size" : "50",
- "count" : "1",
- "tier" : "tier3",
- "mount" : "/usr/sap"
- }]
- }
-}
-
-variable "sap_domain" {
- description = "SAP domain to be set for entire landscape."
- type = string
- default = "sap.com"
-}
diff --git a/solutions/e2e/version.tf b/solutions/e2e/version.tf
deleted file mode 100644
index 2530869b..00000000
--- a/solutions/e2e/version.tf
+++ /dev/null
@@ -1,18 +0,0 @@
-terraform {
- required_version = ">= 1.9.0"
- required_providers {
- ibm = {
- source = "IBM-Cloud/ibm"
- version = "1.82.1"
- }
- time = {
- source = "hashicorp/time"
- version = "0.13.1"
- }
-
- restapi = {
- source = "Mastercard/restapi"
- version = "2.0.1"
- }
- }
-}
diff --git a/solutions/ibm-catalog/sap-ready-to-go/README.md b/solutions/ibm-catalog/sap-ready-to-go/README.md
index b7ced29a..20d031bf 100644
--- a/solutions/ibm-catalog/sap-ready-to-go/README.md
+++ b/solutions/ibm-catalog/sap-ready-to-go/README.md
@@ -3,11 +3,35 @@
# Summary
## Summary Outcome:
- SAP-tuned HANA and NetWeaver configuration to IBM PowerVS hosts
+ Creates a Power Virtual Server environment with a VPC landing zone — a solution that simultaneously provisions a secure PowerVS workspace and deploys SAP HANA and NetWeaver configurations.
## Summary Tasks
-- Creates a new private subnet for SAP communication for the entire landscape.
+- A **VPC Infrastructure** with the following components:
+ - One VSI for management (jump/bastion)
+ - One VSI for network-services configured as squid proxy, NTP and DNS servers(using Ansible Galaxy collection roles [ibm.power_linux_sap collection](https://galaxy.ansible.com/ui/repo/published/ibm/power_linux_sap/). This VSI also acts as central ansible execution node.
+ - Optional VSI for Monitoring host
+ - Optional [Client to site VPN server](https://cloud.ibm.com/docs/vpc?topic=vpc-vpn-client-to-site-overview)
+ - Optional [File storage share](https://cloud.ibm.com/docs/vpc?topic=vpc-file-storage-create&interface=ui)
+ - Optional [Network load balancer](https://cloud.ibm.com/docs/vpc?group=network-load-balancer)
+ - Optional [IBM Cloud Security and Compliance Center Workload Protection](https://cloud.ibm.com/docs/workload-protection) and SCC Workload Protection agent configuration on the VSIs in the deployment
+ - IBM Cloud Object storage(COS) Virtual Private endpoint gateway(VPE)
+ - IBM Cloud Object storage(COS) Instance and buckets
+ - VPC flow logs
+ - KMS keys
+ - Activity tracker
+ - Optional Secrets Manager Instance Instance with private certificate.
+
+- A local or global **transit gateway**
+- An optional IBM Cloud Monitoring Instance
+
+- A **Power Virtual Server** workspace with the following network topology:
+ - Creates a new private subnet for SAP communication for the entire landscape.
+ - Attaches the PowerVS workspace to transit gateway.
+ - Creates an SSH key.
+ - Optionally imports up to three custom images from Cloud Object Storage.
+
+
- Creates and configures one PowerVS instance for SAP HANA based on best practices.
- Creates and configures multiple PowerVS instances for SAP NetWeaver based on best practices.
- Optionally let's the user choose a byol or custom os image for the HANA and Netweaver PowerVS instances and activate it with user provided os registration credentials.
@@ -19,9 +43,6 @@
- Post-instance provisioning, Ansible Galaxy collection roles from [IBM](https://galaxy.ansible.com/ui/repo/published/ibm/power_linux_sap/) are executed: `power_linux_sap`.
- Tested with RHEL8.4,/8.6/8.8/9.2, SLES15-SP3/SP5 images.
-## Before you begin
-- **This solution requires a schematics workspace ID as input.**
-- If you do not have a [Power Virtual Server with VPC landing zone deployment](https://cloud.ibm.com/catalog/architecture/deploy-arch-ibm-pvs-inf-2dd486c7-b317-4aaa-907b-42671485ad96-global?catalog_query=aHR0cHM6Ly9jbG91ZC5pYm0uY29tL2NhdGFsb2c%2Fc2VhcmNoPXBvd2VyI3NlYXJjaF9yZXN1bHRz) that is the full stack solution for a PowerVS Workspace with Secure Landing Zone, create it first.
## Notes
- **Does not install any SAP software or solutions.**
@@ -29,9 +50,9 @@
- Custom storage configuration by providing custom volume size, **iops**(tier0, tier1, tier3, tier5k), counts and mount points is supported.
-| Variation | Available on IBM Catalog | Requires Schematics Workspace ID | Creates PowerVS with VPC landing zone | Creates PowerVS HANA Instance | Creates PowerVS NW Instances | Performs PowerVS OS Config | Performs PowerVS SAP Tuning | Install SAP software |
-|:---------------------------------------------------------------------------:|:------------------------:|:--------------------------------:|:-------------------------------------:|:-----------------------------:|:----------------------------:|:--------------------------:|:---------------------------:|:--------------------:|
-| [IBM Catalog sap-ready-to-go](./) | :heavy_check_mark: | :heavy_check_mark: | N/A | 1 | 0 to N | :heavy_check_mark: | :heavy_check_mark: | N/A |
+| Variation | Available on IBM Catalog | Creates PowerVS with VPC landing zone | Creates PowerVS HANA Instance | Creates PowerVS NW Instances | Performs PowerVS OS Config | Performs PowerVS SAP Tuning | Install SAP software |
+|:---------------------------------------------------------------------------:|:--------------------------------:|:-------------------------------------:|:-----------------------------:|:----------------------------:|:--------------------------:|:---------------------------:|:--------------------:|
+| [IBM Catalog sap-ready-to-go](./) | :heavy_check_mark: | :heavy_check_mark: | 1 | 0 to N | :heavy_check_mark: | :heavy_check_mark: | N/A |
## Architecture Diagram
@@ -44,49 +65,62 @@
| Name | Version |
|------|---------|
| [terraform](#requirement\_terraform) | >= 1.9.0 |
-| [ibm](#requirement\_ibm) | 1.82.1 |
+| [ibm](#requirement\_ibm) | 1.83.3 |
+| [restapi](#requirement\_restapi) | 2.0.1 |
### Modules
| Name | Source | Version |
|------|--------|---------|
| [sap\_system](#module\_sap\_system) | ../../../modules/pi-sap-system-type1 | n/a |
+| [standard](#module\_standard) | terraform-ibm-modules/powervs-infrastructure/ibm//modules/powervs-vpc-landing-zone | 10.0.0 |
### Resources
| Name | Type |
|------|------|
-| [ibm_pi_catalog_images.catalog_images_ds](https://registry.terraform.io/providers/IBM-Cloud/ibm/1.82.1/docs/data-sources/pi_catalog_images) | data source |
-| [ibm_pi_image.custom_images](https://registry.terraform.io/providers/IBM-Cloud/ibm/1.82.1/docs/data-sources/pi_image) | data source |
-| [ibm_schematics_output.schematics_output](https://registry.terraform.io/providers/IBM-Cloud/ibm/1.82.1/docs/data-sources/schematics_output) | data source |
-| [ibm_schematics_workspace.schematics_workspace](https://registry.terraform.io/providers/IBM-Cloud/ibm/1.82.1/docs/data-sources/schematics_workspace) | data source |
+| [ibm_iam_auth_token.auth_token](https://registry.terraform.io/providers/IBM-Cloud/ibm/1.83.3/docs/data-sources/iam_auth_token) | data source |
+| [ibm_pi_catalog_images.catalog_images_ds](https://registry.terraform.io/providers/IBM-Cloud/ibm/1.83.3/docs/data-sources/pi_catalog_images) | data source |
+| [ibm_pi_image.custom_images](https://registry.terraform.io/providers/IBM-Cloud/ibm/1.83.3/docs/data-sources/pi_image) | data source |
### Inputs
| Name | Description | Type | Default | Required |
|------|-------------|------|---------|:--------:|
-| [ansible\_vault\_password](#input\_ansible\_vault\_password) | Vault password to encrypt ansible playbooks that contain sensitive information. Required with customer provided linux subscription (pi\_os\_registration) or when SCC workload protection instance 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. 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` | `""` | 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 an existing 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 |
+| [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'. | `bool` | n/a | yes |
+| [enable\_scc\_wp](#input\_enable\_scc\_wp) | Set to true to enable SCC Workload Protection and install and configure the SCC Workload Protection agent on all VSIs and PowerVS instances in this deployment. | `bool` | n/a | yes |
+| [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. If not provided a 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 IP address or CIDR to login through SSH to the environment after deployment. Access to this environment will be allowed only from this IP address. | `string` | n/a | yes |
| [ibmcloud\_api\_key](#input\_ibmcloud\_api\_key) | IBM Cloud platform API key needed to deploy IAM enabled resources. | `string` | n/a | yes |
-| [nfs\_directory](#input\_nfs\_directory) | Target directory on which the file storage share from VPC will be mounted. | `string` | `"/nfs"` | 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 |
| [os\_image\_distro](#input\_os\_image\_distro) | Image distribution to use for all instances(HANA, NetWeaver). OS release versions may be specified in 'powervs\_sap\_default\_images' optional parameters below. | `string` | n/a | yes |
+| [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\_default\_sap\_images](#input\_powervs\_default\_sap\_images) | Default SUSE and Red Hat Linux Full Linux subscription images to use for PowerVS SAP HANA and SAP NetWeaver instances. If you're using a byol or a custom RHEL/SLES image, additionally specify the optional values for 'powervs\_os\_registration\_username', 'powervs\_os\_registration\_password' and 'ansible\_vault\_password' | object({
sles_hana_image = string
sles_nw_image = string
rhel_hana_image = string
rhel_nw_image = string
}) | {
"rhel_hana_image": "RHEL9-SP4-SAP",
"rhel_nw_image": "RHEL9-SP4-SAP-NETWEAVER",
"sles_hana_image": "SLES15-SP6-SAP",
"sles_nw_image": "SLES15-SP6-SAP-NETWEAVER"
} | no |
| [powervs\_hana\_instance\_additional\_storage\_config](#input\_powervs\_hana\_instance\_additional\_storage\_config) | Additional File systems to be created and attached to PowerVS SAP HANA instance. 'size' is in GB. 'count' specify over how many storage volumes the file system will be striped. 'tier' specifies the storage tier in PowerVS workspace. 'mount' specifies the target mount point on OS. | list(object({
name = string
size = string
count = string
tier = string
mount = string
})) | [
{
"count": "1",
"mount": "/usr/sap",
"name": "usrsap",
"size": "50",
"tier": "tier3"
}
]
| no |
| [powervs\_hana\_instance\_custom\_storage\_config](#input\_powervs\_hana\_instance\_custom\_storage\_config) | Custom file systems to be created and attached to PowerVS SAP HANA instance. 'size' is in GB. 'count' specify over how many storage volumes the file system will be striped. 'tier' specifies the storage tier in PowerVS workspace. 'mount' specifies the target mount point on OS. | list(object({
name = string
size = string
count = string
tier = string
mount = string
pool = optional(string)
})) | [
{
"count": "",
"mount": "",
"name": "",
"size": "",
"tier": ""
}
]
| no |
-| [powervs\_hana\_instance\_name](#input\_powervs\_hana\_instance\_name) | PowerVS SAP HANA instance hostname (non FQDN). Will get the form of -. Max length of final hostname must be <= 13 characters. | `string` | `"hana"` | no |
| [powervs\_hana\_instance\_sap\_profile\_id](#input\_powervs\_hana\_instance\_sap\_profile\_id) | PowerVS SAP HANA instance profile to use. Must be one of the supported profiles. See [here](https://cloud.ibm.com/docs/sap?topic=sap-hana-iaas-offerings-profiles-power-vs). File system sizes are automatically calculated. Override automatic calculation by setting values in optional parameter 'powervs\_hana\_instance\_custom\_storage\_config'. | `string` | `"sh2-4x256"` | no |
| [powervs\_netweaver\_cpu\_number](#input\_powervs\_netweaver\_cpu\_number) | Number of CPUs for each PowerVS SAP NetWeaver instance. | `string` | `"3"` | no |
| [powervs\_netweaver\_instance\_count](#input\_powervs\_netweaver\_instance\_count) | Number of PowerVS SAP NetWeaver instances that should be created. 'powervs\_netweaver\_instance\_count' cannot exceed 10. | `number` | `1` | no |
-| [powervs\_netweaver\_instance\_name](#input\_powervs\_netweaver\_instance\_name) | PowerVS SAP NetWeaver instance hostname (non FQDN). Will get the form of --. Max length of final hostname must be <= 13 characters. | `string` | `"nw"` | no |
| [powervs\_netweaver\_instance\_storage\_config](#input\_powervs\_netweaver\_instance\_storage\_config) | File systems to be created and attached to PowerVS SAP NetWeaver instance. 'size' is in GB. 'count' specifies over how many storage volumes the file system will be striped. 'tier' specifies the storage tier in PowerVS workspace. 'mount' specifies the target mount point on OS. | list(object({
name = string
size = string
count = string
tier = string
mount = string
pool = optional(string)
})) | [
{
"count": "1",
"mount": "/usr/sap",
"name": "usrsap",
"size": "50",
"tier": "tier3"
}
]
| no |
| [powervs\_netweaver\_memory\_size](#input\_powervs\_netweaver\_memory\_size) | Memory size for each PowerVS SAP NetWeaver instance. | `string` | `"32"` | no |
| [powervs\_os\_registration\_password](#input\_powervs\_os\_registration\_password) | If you're using a byol or a custom RHEL/SLES image for SAP HANA and Netweaver you need to provide your OS registration credentials here. Leave empty if you're using an IBM provided subscription (FLS). | `string` | `""` | no |
| [powervs\_os\_registration\_username](#input\_powervs\_os\_registration\_username) | If you're using a byol or a custom RHEL/SLES image for SAP HANA and Netweaver you need to provide your OS registration credentials here. Leave empty if you're using an IBM provided subscription (FLS). | `string` | `""` | no |
-| [powervs\_sap\_network\_cidr](#input\_powervs\_sap\_network\_cidr) | Network range for dedicated SAP network. Used for communication between SAP Application servers with SAP HANA Database. E.g., '10.53.0.0/24' | `string` | `"10.53.0.0/24"` | no |
-| [powervs\_zone](#input\_powervs\_zone) | IBM Cloud data center location corresponding to the location used in 'Power Virtual Server with VPC landing zone' pre-requisite deployment. | `string` | n/a | yes |
-| [prefix](#input\_prefix) | Unique prefix for resources to be created (e.g., SAP system name). Must be an alphanumeric string with maximum length of 6 characters. | `string` | n/a | yes |
-| [prerequisite\_workspace\_id](#input\_prerequisite\_workspace\_id) | IBM Cloud Schematics workspace ID of an existing 'Power Virtual Server with VPC landing zone' catalog solution. If you do not yet have an existing deployment, click [here](https://cloud.ibm.com/catalog/architecture/deploy-arch-ibm-pvs-inf-2dd486c7-b317-4aaa-907b-42671485ad96-global?) to create one. | `string` | n/a | yes |
+| [powervs\_resource\_group\_name](#input\_powervs\_resource\_group\_name) | Existing IBM Cloud resource group name. | `string` | n/a | yes |
+| [powervs\_sap\_network\_cidr](#input\_powervs\_sap\_network\_cidr) | Network range for dedicated SAP network. Used for communication between SAP Application servers with SAP HANA Database. E.g., '10.51.0.0/24' | `string` | `"10.51.0.0/24"` | no |
+| [powervs\_zone](#input\_powervs\_zone) | IBM Cloud data center location where IBM PowerVS infrastructure will be created. | `string` | n/a | yes |
+| [prefix](#input\_prefix) | Unique prefix for resources to be created (e.g., SAP system name). Must be an alphanumeric string with maximum length of 8 characters. | `string` | n/a | yes |
| [sap\_domain](#input\_sap\_domain) | SAP network domain name. | `string` | `"sap.com"` | no |
+| [sm\_service\_plan](#input\_sm\_service\_plan) | The service/pricing plan to use when provisioning a new Secrets Manager instance. Allowed values: `standard` and `trial`. Only used if `existing_sm_instance_guid` is set to null. | `string` | `"standard"` | no |
| [ssh\_private\_key](#input\_ssh\_private\_key) | Private SSH key (RSA format) used to login to IBM PowerVS instances. Should match to uploaded public SSH key referenced by 'ssh\_public\_key' which was created previously. The key is temporarily stored and deleted. For more information about SSH keys, see [SSH keys](https://cloud.ibm.com/docs/vpc?topic=vpc-ssh-keys). | `string` | n/a | yes |
+| [ssh\_public\_key](#input\_ssh\_public\_key) | 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. | `string` | n/a | yes |
+| [tags](#input\_tags) | List of tag names for the IBM Cloud PowerVS workspace | `list(string)` | `[]` | no |
+| [vpc\_intel\_images](#input\_vpc\_intel\_images) | Stock OS image names for creating VPC landing zone VSI instances: RHEL (management and network services) and SLES (monitoring). | object({
rhel_image = string
sles_image = string
}) | {
"rhel_image": "ibm-redhat-9-6-amd64-sap-applications-1",
"sles_image": "ibm-sles-15-7-amd64-sap-applications-1"
} | no |
### Outputs
diff --git a/solutions/ibm-catalog/sap-ready-to-go/catalogValidationValues.json.template b/solutions/ibm-catalog/sap-ready-to-go/catalogValidationValues.json.template
new file mode 100644
index 00000000..158bab5c
--- /dev/null
+++ b/solutions/ibm-catalog/sap-ready-to-go/catalogValidationValues.json.template
@@ -0,0 +1,13 @@
+{
+ "prefix": "sap",
+ "powervs_zone": "us-south",
+ "powervs_resource_group_name": "Default",
+ "external_access_ip": "0.0.0.0/0",
+ "os_image_distro": "RHEL",
+ "ssh_public_key": $SSH_PUB_KEY,
+ "ssh_private_key": $SSH_PRV_KEY,
+ "ibmcloud_api_key": $VALIDATION_APIKEY,
+ "enable_monitoring": false,
+ "enable_scc_wp": true,
+ "ansible_vault_password" : "SecurePassw0rd!"
+}
diff --git a/solutions/ibm-catalog/sap-ready-to-go/locals_schematics_data.tf b/solutions/ibm-catalog/sap-ready-to-go/images.tf
similarity index 51%
rename from solutions/ibm-catalog/sap-ready-to-go/locals_schematics_data.tf
rename to solutions/ibm-catalog/sap-ready-to-go/images.tf
index 689e1b8c..345fc7a2 100644
--- a/solutions/ibm-catalog/sap-ready-to-go/locals_schematics_data.tf
+++ b/solutions/ibm-catalog/sap-ready-to-go/images.tf
@@ -1,49 +1,10 @@
-############################################################
-# Get Values from PowerVS with VPC Landing Zone Workspace
-############################################################
-
-locals {
- location = regex("^[a-z/-]+", var.prerequisite_workspace_id)
-}
-
-data "ibm_schematics_workspace" "schematics_workspace" {
- workspace_id = var.prerequisite_workspace_id
- location = local.location
-}
-
-data "ibm_schematics_output" "schematics_output" {
- workspace_id = var.prerequisite_workspace_id
- location = local.location
- template_id = data.ibm_schematics_workspace.schematics_workspace.runtime_data[0].id
-}
-
locals {
- powervs_infrastructure = jsondecode(data.ibm_schematics_output.schematics_output.output_json)
-
- powervs_workspace_guid = local.powervs_infrastructure[0].powervs_workspace_guid.value
- powervs_sshkey_name = local.powervs_infrastructure[0].powervs_ssh_public_key.value.name
- powervs_custom_images = local.powervs_infrastructure[0].powervs_images.value
- powervs_networks = [local.powervs_infrastructure[0].powervs_management_subnet.value, local.powervs_infrastructure[0].powervs_backup_subnet.value]
- access_host_or_ip = local.powervs_infrastructure[0].access_host_or_ip.value
- proxy_host_or_ip_port = local.powervs_infrastructure[0].proxy_host_or_ip_port.value
- dns_host_or_ip = local.powervs_infrastructure[0].dns_host_or_ip.value
- ntp_host_or_ip = local.powervs_infrastructure[0].ntp_host_or_ip.value
- nfs_host_or_ip_path = local.powervs_infrastructure[0].nfs_host_or_ip_path.value
- ansible_host_or_ip = local.powervs_infrastructure[0].ansible_host_or_ip.value
- network_services_config = local.powervs_infrastructure[0].network_services_config.value
- scc_wp_instance = local.powervs_infrastructure[0].scc_wp_instance.value
-}
-
-############################################################
-# Verify OS image type
-############################################################
-
-locals {
- # Determine selected OS image names based on distro
+ powervs_custom_images = module.standard.powervs_images
selected_hana_image = var.os_image_distro == "SLES" ? var.powervs_default_sap_images.sles_hana_image : var.powervs_default_sap_images.rhel_hana_image
selected_netweaver_image = var.os_image_distro == "SLES" ? var.powervs_default_sap_images.sles_nw_image : var.powervs_default_sap_images.rhel_nw_image
fls_image_types = ["stock-sap-fls", "stock-sap-netweaver-fls"]
+
use_custom_images = (
length(local.powervs_custom_images) > 0 &&
alltrue([
@@ -53,27 +14,25 @@ locals {
)
])
)
-
}
# Stock image data (only if not using custom)
data "ibm_pi_catalog_images" "catalog_images_ds" {
- count = local.use_custom_images ? 0 : 1
-
- pi_cloud_instance_id = local.powervs_workspace_guid
+ count = local.use_custom_images ? 0 : 1
+ provider = ibm.ibm-pi
+ pi_cloud_instance_id = module.standard.powervs_workspace_guid
sap = true
}
# Custom image data (only if using custom)
data "ibm_pi_image" "custom_images" {
- count = local.use_custom_images ? 2 : 0
-
+ count = local.use_custom_images ? 2 : 0
+ provider = ibm.ibm-pi
pi_image_name = element([local.selected_hana_image, local.selected_netweaver_image], count.index)
- pi_cloud_instance_id = local.powervs_workspace_guid
+ pi_cloud_instance_id = module.standard.powervs_workspace_guid
}
locals {
- # Determine image types
hana_image_type = local.use_custom_images ? data.ibm_pi_image.custom_images[0].image_type : one([
for img in data.ibm_pi_catalog_images.catalog_images_ds[0].images :
img.image_type if img.name == local.selected_hana_image
@@ -104,6 +63,7 @@ locals {
# Validation messages
images_mixed_msg = "You've selected an fls image and a byol image for hana and netweaver. Using byol on one and fls on another is currently not supported."
+
# tflint-ignore: terraform_unused_declarations
validate_images_mixed = regex("^${local.images_mixed_msg}$", (local.images_mixed ? "" : local.images_mixed_msg))
@@ -114,22 +74,4 @@ locals {
byol_and_fls_msg = "FLS images and user provided linux subscription detected. Can't use both at the same time."
# tflint-ignore: terraform_unused_declarations
validate_byol_and_fls = regex("^${local.byol_and_fls_msg}$", (local.byol_and_fls ? "" : local.byol_and_fls_msg))
-
-
-}
-locals {
- powervs_instance_init_linux = {
- enable = true
- bastion_host_ip = local.access_host_or_ip
- ansible_host_or_ip = local.ansible_host_or_ip
- ssh_private_key = var.ssh_private_key
- custom_os_registration = local.use_fls ? null : { "username" : var.powervs_os_registration_username, "password" : var.powervs_os_registration_password }
- }
-
- powervs_network_services_config = {
- squid = { enable = true, squid_server_ip_port = local.proxy_host_or_ip_port, no_proxy_hosts = "161.0.0.0/8,10.0.0.0/8" }
- nfs = { enable = local.nfs_host_or_ip_path != "" ? true : false, nfs_server_path = local.nfs_host_or_ip_path, nfs_client_path = var.nfs_directory, opts = local.network_services_config.nfs.opts, fstype = local.network_services_config.nfs.fstype }
- dns = { enable = local.dns_host_or_ip != "" ? true : false, dns_server_ip = local.dns_host_or_ip }
- ntp = { enable = local.ntp_host_or_ip != "" ? true : false, ntp_server_ip = local.ntp_host_or_ip }
- }
}
diff --git a/solutions/ibm-catalog/sap-ready-to-go/locals.tf b/solutions/ibm-catalog/sap-ready-to-go/locals.tf
new file mode 100644
index 00000000..fed80cb0
--- /dev/null
+++ b/solutions/ibm-catalog/sap-ready-to-go/locals.tf
@@ -0,0 +1,52 @@
+locals {
+ powervs_hana_instance = {
+ name = "hana"
+ image_id = local.hana_image_id
+ sap_profile_id = var.powervs_hana_instance_sap_profile_id
+ additional_storage_config = var.powervs_hana_instance_additional_storage_config
+ }
+
+ powervs_netweaver_instance = {
+ instance_count = var.powervs_netweaver_instance_count
+ name = "nw"
+ image_id = local.netweaver_image_id
+ processors = var.powervs_netweaver_cpu_number
+ memory = var.powervs_netweaver_memory_size
+ proc_type = "shared"
+ storage_config = var.powervs_netweaver_instance_storage_config
+ }
+
+ powervs_instance_init_linux = {
+ enable = true
+ bastion_host_ip = module.standard.access_host_or_ip
+ ansible_host_or_ip = module.standard.ansible_host_or_ip
+ ssh_private_key = var.ssh_private_key
+ custom_os_registration = local.use_fls ? null : {
+ "username" : var.powervs_os_registration_username,
+ "password" : var.powervs_os_registration_password
+ }
+ }
+
+ powervs_network_services_config = {
+ squid = {
+ enable = true
+ squid_server_ip_port = module.standard.proxy_host_or_ip_port
+ no_proxy_hosts = "161.0.0.0/8,10.0.0.0/8"
+ }
+ nfs = {
+ enable = true
+ nfs_server_path = module.standard.nfs_host_or_ip_path
+ nfs_client_path = var.nfs_server_config.mount_path
+ opts = module.standard.network_services_config.nfs.opts
+ fstype = module.standard.network_services_config.nfs.fstype
+ }
+ dns = {
+ enable = true
+ dns_server_ip = module.standard.dns_host_or_ip
+ }
+ ntp = {
+ enable = module.standard.ntp_host_or_ip != "" ? true : false
+ ntp_server_ip = module.standard.ntp_host_or_ip
+ }
+ }
+}
diff --git a/solutions/ibm-catalog/sap-ready-to-go/main.tf b/solutions/ibm-catalog/sap-ready-to-go/main.tf
index 8e0fe203..005e6946 100644
--- a/solutions/ibm-catalog/sap-ready-to-go/main.tf
+++ b/solutions/ibm-catalog/sap-ready-to-go/main.tf
@@ -1,36 +1,84 @@
-#####################################################
-# Deploy SAP system
-# 1 HANA instance
-# 0:N NetWeaver Instance
-#####################################################
+#######################################################
+# Power Virtual Server with VPC landing zone module
+# VPC landing zone
+# PowerVS Workspace
+#######################################################
+
locals {
- powervs_hana_instance = {
- name = var.powervs_hana_instance_name
- image_id = local.hana_image_id
- sap_profile_id = var.powervs_hana_instance_sap_profile_id
- additional_storage_config = var.powervs_hana_instance_additional_storage_config
- }
+ powervs_management_network = { name = "${var.prefix}-sap-net", cidr = var.powervs_sap_network_cidr }
+ powervs_server_routes = concat(
+ [
+ {
+ route_name = local.powervs_management_network.name
+ destination = local.powervs_management_network.cidr
+ action = "deliver"
+ }
+ ]
+ )
+
+ client_to_site_vpn = merge(
+ var.client_to_site_vpn,
+ { powervs_server_routes = local.powervs_server_routes }
+ )
+}
- powervs_netweaver_instance = {
- instance_count = var.powervs_netweaver_instance_count
- name = var.powervs_netweaver_instance_name
- image_id = local.netweaver_image_id
- processors = var.powervs_netweaver_cpu_number
- memory = var.powervs_netweaver_memory_size
- proc_type = "shared"
- storage_config = var.powervs_netweaver_instance_storage_config
+module "standard" {
+ source = "terraform-ibm-modules/powervs-infrastructure/ibm//modules/powervs-vpc-landing-zone"
+ version = "10.0.0"
+
+ providers = {
+ ibm.ibm-is = ibm.ibm-is
+ ibm.ibm-pi = ibm.ibm-pi
+ ibm.ibm-sm = ibm.ibm-sm
}
+
+ powervs_zone = var.powervs_zone
+ powervs_resource_group_name = var.powervs_resource_group_name
+ prefix = var.prefix
+ external_access_ip = var.external_access_ip
+ vpc_intel_images = var.vpc_intel_images
+ ssh_public_key = var.ssh_public_key
+ ssh_private_key = var.ssh_private_key
+ powervs_management_network = local.powervs_management_network
+ powervs_backup_network = null
+ configure_dns_forwarder = true
+ configure_ntp_forwarder = true
+ configure_nfs_server = true
+ nfs_server_config = var.nfs_server_config
+ dns_forwarder_config = { "dns_servers" : "161.26.0.7; 161.26.0.8; 9.9.9.9;" }
+ tags = var.tags
+ powervs_custom_images = var.powervs_custom_images
+ powervs_custom_image_cos_configuration = var.powervs_custom_image_cos_configuration
+ powervs_custom_image_cos_service_credentials = var.powervs_custom_image_cos_service_credentials
+ client_to_site_vpn = local.client_to_site_vpn
+ sm_service_plan = var.sm_service_plan
+ existing_sm_instance_guid = var.existing_sm_instance_guid
+ existing_sm_instance_region = var.existing_sm_instance_region
+ enable_monitoring = var.enable_monitoring
+ existing_monitoring_instance_crn = var.existing_monitoring_instance_crn
+ enable_scc_wp = var.enable_scc_wp
+ ansible_vault_password = var.ansible_vault_password
}
+
+#######################################################
+# Power Virtual Server SAP ready-to-go
+# Deploy SAP system
+# 1 HANA instance
+# 0:N NetWeaver Instance
+# SAP instance Init
+#######################################################
+
module "sap_system" {
- source = "../../../modules/pi-sap-system-type1"
+ source = "../../../modules/pi-sap-system-type1"
+ providers = { ibm = ibm.ibm-pi }
+ depends_on = [module.standard]
prefix = var.prefix
- pi_workspace_guid = local.powervs_workspace_guid
+ pi_workspace_guid = module.standard.powervs_workspace_guid
pi_region = var.powervs_zone
- pi_ssh_public_key_name = local.powervs_sshkey_name
- pi_networks = local.powervs_networks
- pi_sap_network_cidr = var.powervs_sap_network_cidr
+ pi_ssh_public_key_name = module.standard.powervs_ssh_public_key.name
+ pi_networks = [module.standard.powervs_management_subnet]
pi_hana_instance = local.powervs_hana_instance
pi_hana_instance_custom_storage_config = var.powervs_hana_instance_custom_storage_config
pi_netweaver_instance = local.powervs_netweaver_instance
@@ -38,5 +86,4 @@ module "sap_system" {
sap_network_services_config = local.powervs_network_services_config
sap_domain = var.sap_domain
ansible_vault_password = var.ansible_vault_password
- scc_wp_instance = local.scc_wp_instance
}
diff --git a/solutions/ibm-catalog/sap-ready-to-go/outputs.tf b/solutions/ibm-catalog/sap-ready-to-go/outputs.tf
index b4766c8f..b8b16a24 100644
--- a/solutions/ibm-catalog/sap-ready-to-go/outputs.tf
+++ b/solutions/ibm-catalog/sap-ready-to-go/outputs.tf
@@ -1,11 +1,11 @@
output "infrastructure_data" {
description = "PowerVS infrastructure details."
- value = { for k, v in local.powervs_infrastructure[0] : k => v.value }
+ value = { for k, v in module.standard : k => v }
}
output "access_host_or_ip" {
description = "Public IP of Provided Bastion/JumpServer Host."
- value = local.access_host_or_ip
+ value = module.standard.access_host_or_ip
}
output "powervs_hana_instance_ips" {
diff --git a/solutions/ibm-catalog/sap-ready-to-go/provider.tf b/solutions/ibm-catalog/sap-ready-to-go/provider.tf
index 911ae2be..4cfe25c0 100644
--- a/solutions/ibm-catalog/sap-ready-to-go/provider.tf
+++ b/solutions/ibm-catalog/sap-ready-to-go/provider.tf
@@ -22,10 +22,62 @@ locals {
"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"
+ }
}
+# There are discrepancies between the region inputs on the powervs terraform resource, and the vpc ("is") resources
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
}
+
+provider "ibm" {
+ alias = "ibm-is"
+ region = lookup(local.ibm_powervs_zone_cloud_region_map, var.powervs_zone, null)
+ zone = var.powervs_zone
+ ibmcloud_api_key = var.ibmcloud_api_key != null ? var.ibmcloud_api_key : null
+}
+
+provider "ibm" {
+ alias = "ibm-sm"
+ region = lookup(local.ibm_powervs_zone_cloud_region_map, var.powervs_zone, null)
+ zone = var.powervs_zone
+ ibmcloud_api_key = var.ibmcloud_api_key != null ? var.ibmcloud_api_key : null
+}
+
+data "ibm_iam_auth_token" "auth_token" {
+ provider = ibm.ibm-is
+}
+
+provider "restapi" {
+ uri = "https://resource-controller.cloud.ibm.com"
+ headers = {
+ Authorization = data.ibm_iam_auth_token.auth_token.iam_access_token
+ }
+ write_returns_object = true
+}
diff --git a/solutions/ibm-catalog/sap-ready-to-go/variables.tf b/solutions/ibm-catalog/sap-ready-to-go/variables.tf
index d1a335d2..8e83bf20 100644
--- a/solutions/ibm-catalog/sap-ready-to-go/variables.tf
+++ b/solutions/ibm-catalog/sap-ready-to-go/variables.tf
@@ -4,29 +4,34 @@ variable "ibmcloud_api_key" {
sensitive = true
}
-variable "prerequisite_workspace_id" {
- description = "IBM Cloud Schematics workspace ID of an existing 'Power Virtual Server with VPC landing zone' catalog solution. If you do not yet have an existing deployment, click [here](https://cloud.ibm.com/catalog/architecture/deploy-arch-ibm-pvs-inf-2dd486c7-b317-4aaa-907b-42671485ad96-global?) to create one."
+variable "powervs_zone" {
+ description = "IBM Cloud data center location where IBM PowerVS infrastructure will be created."
type = string
}
-variable "powervs_zone" {
- description = "IBM Cloud data center location corresponding to the location used in 'Power Virtual Server with VPC landing zone' pre-requisite deployment."
+variable "powervs_resource_group_name" {
+ description = "Existing IBM Cloud resource group name."
type = string
}
variable "prefix" {
- description = "Unique prefix for resources to be created (e.g., SAP system name). Must be an alphanumeric string with maximum length of 6 characters."
+ description = "Unique prefix for resources to be created (e.g., SAP system name). Must be an alphanumeric string with maximum length of 8 characters."
type = string
validation {
- condition = length(var.prefix) <= 6 && can(regex("^[A-Za-z0-9]+$", var.prefix))
- error_message = "Prefix must be an alphanumeric string with maximum length of 6 characters."
+ condition = (
+ var.prefix != null &&
+ var.prefix != "" &&
+ length(var.prefix) <= 8 &&
+ can(regex("^[a-z0-9-]+$", var.prefix))
+ )
+ error_message = "Prefix must be up to 8 characters long and may include lowercase letters, numbers, and hyphens only."
}
}
variable "powervs_sap_network_cidr" {
- description = "Network range for dedicated SAP network. Used for communication between SAP Application servers with SAP HANA Database. E.g., '10.53.0.0/24'"
+ description = "Network range for dedicated SAP network. Used for communication between SAP Application servers with SAP HANA Database. E.g., '10.51.0.0/24'"
type = string
- default = "10.53.0.0/24"
+ default = "10.51.0.0/24"
}
variable "os_image_distro" {
@@ -39,16 +44,16 @@ variable "os_image_distro" {
}
}
+variable "external_access_ip" {
+ description = "Specify the IP address or CIDR to login through SSH to the environment after deployment. Access to this environment will be allowed only from this IP address."
+ type = string
+}
+
+
#####################################################
# PowerVS HANA Instance parameters
#####################################################
-variable "powervs_hana_instance_name" {
- description = "PowerVS SAP HANA instance hostname (non FQDN). Will get the form of -. Max length of final hostname must be <= 13 characters."
- type = string
- default = "hana"
-}
-
variable "powervs_hana_instance_sap_profile_id" {
description = "PowerVS SAP HANA instance profile to use. Must be one of the supported profiles. See [here](https://cloud.ibm.com/docs/sap?topic=sap-hana-iaas-offerings-profiles-power-vs). File system sizes are automatically calculated. Override automatic calculation by setting values in optional parameter 'powervs_hana_instance_custom_storage_config'."
type = string
@@ -103,12 +108,6 @@ variable "powervs_netweaver_instance_count" {
default = 1
}
-variable "powervs_netweaver_instance_name" {
- description = "PowerVS SAP NetWeaver instance hostname (non FQDN). Will get the form of --. Max length of final hostname must be <= 13 characters."
- type = string
- default = "nw"
-}
-
variable "powervs_netweaver_cpu_number" {
description = "Number of CPUs for each PowerVS SAP NetWeaver instance."
type = string
@@ -146,6 +145,11 @@ variable "powervs_netweaver_instance_storage_config" {
# OS parameters
#####################################################
+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
+}
+
variable "ssh_private_key" {
description = "Private SSH key (RSA format) used to login to IBM PowerVS instances. Should match to uploaded public SSH key referenced by 'ssh_public_key' which was created previously. The key is temporarily stored and deleted. For more information about SSH keys, see [SSH keys](https://cloud.ibm.com/docs/vpc?topic=vpc-ssh-keys)."
type = string
@@ -158,15 +162,35 @@ variable "sap_domain" {
default = "sap.com"
}
-variable "nfs_directory" {
- description = "Target directory on which the file storage share from VPC will be mounted."
- type = string
- default = "/nfs"
+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"
+ }
}
#####################################################
# Parameters for Image
#####################################################
+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-6-amd64-sap-applications-1"
+ "sles_image" : "ibm-sles-15-7-amd64-sap-applications-1"
+ }
+}
variable "powervs_default_sap_images" {
description = "Default SUSE and Red Hat Linux Full Linux subscription images to use for PowerVS SAP HANA and SAP NetWeaver instances. If you're using a byol or a custom RHEL/SLES image, additionally specify the optional values for 'powervs_os_registration_username', 'powervs_os_registration_password' and 'ansible_vault_password'"
@@ -184,13 +208,6 @@ variable "powervs_default_sap_images" {
}
}
-variable "ansible_vault_password" {
- description = "Vault password to encrypt ansible playbooks that contain sensitive information. Required with customer provided linux subscription (pi_os_registration) or when SCC workload protection instance 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
-}
-
variable "powervs_os_registration_username" {
description = "If you're using a byol or a custom RHEL/SLES image for SAP HANA and Netweaver you need to provide your OS registration credentials here. Leave empty if you're using an IBM provided subscription (FLS)."
type = string
@@ -203,3 +220,144 @@ variable "powervs_os_registration_password" {
sensitive = true
default = ""
}
+
+variable "powervs_custom_images" {
+ description = "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."
+ type = 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)
+ })
+ })
+ default = {
+ "powervs_custom_image1" : {
+ "image_name" : "",
+ "file_name" : "",
+ "storage_tier" : "",
+ "sap_type" : null
+ },
+ "powervs_custom_image2" : {
+ "image_name" : "",
+ "file_name" : "",
+ "storage_tier" : "",
+ "sap_type" : null
+ },
+ "powervs_custom_image3" : {
+ "image_name" : "",
+ "file_name" : "",
+ "storage_tier" : "",
+ "sap_type" : null
+ }
+ }
+}
+
+variable "powervs_custom_image_cos_configuration" {
+ description = "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"
+ type = object({
+ bucket_name = string
+ bucket_access = string
+ bucket_region = string
+ })
+ default = {
+ "bucket_name" : "",
+ "bucket_access" : "",
+ "bucket_region" : ""
+ }
+}
+
+variable "powervs_custom_image_cos_service_credentials" {
+ description = "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."
+ type = string
+ sensitive = true
+ default = null
+}
+
+
+#####################################################
+# Optional Parameters VPN and Secrets 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 an existing 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 "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 "existing_sm_instance_guid" {
+ type = string
+ description = "An existing Secrets Manager GUID. If not provided a 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
+
+}
+
+#####################################################
+# Parameters Monitoring
+#####################################################
+
+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'."
+ type = bool
+}
+
+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
+}
+
+#################################################
+# Parameters SCC Workload Protection
+#################################################
+
+variable "enable_scc_wp" {
+ description = "Set to true to enable SCC Workload Protection and install and configure the SCC Workload Protection agent on all VSIs and PowerVS instances in this deployment."
+ type = bool
+}
+
+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 = ""
+}
+
+variable "tags" {
+ description = "List of tag names for the IBM Cloud PowerVS workspace"
+ type = list(string)
+ default = []
+}
diff --git a/solutions/ibm-catalog/sap-ready-to-go/version.tf b/solutions/ibm-catalog/sap-ready-to-go/version.tf
index 47aaa294..d753a02a 100644
--- a/solutions/ibm-catalog/sap-ready-to-go/version.tf
+++ b/solutions/ibm-catalog/sap-ready-to-go/version.tf
@@ -7,7 +7,11 @@ terraform {
required_providers {
ibm = {
source = "IBM-Cloud/ibm"
- version = "1.82.1"
+ version = "1.83.3"
+ }
+ restapi = {
+ source = "Mastercard/restapi"
+ version = "2.0.1"
}
}
}
diff --git a/solutions/ibm-catalog/sap-s4hana-bw4hana/README.md b/solutions/ibm-catalog/sap-s4hana-bw4hana/README.md
deleted file mode 100644
index 8fc10101..00000000
--- a/solutions/ibm-catalog/sap-s4hana-bw4hana/README.md
+++ /dev/null
@@ -1,201 +0,0 @@
-# IBM Cloud Catalog - Power Virtual Server for SAP HANA : 'SAP S/4HANA or SAP BW/4HANA'
-
-# Summary
-
-## Summary Outcome:
- SAP S/4HANA or SAP BW/4HANA installation configuration to IBM PowerVS hosts.
-
-| Variation | Available on IBM Catalog | Requires Schematics Workspace ID | Creates PowerVS with VPC landing zone | Creates PowerVS HANA Instance | Creates PowerVS NW Instances | Performs PowerVS OS Config | Performs PowerVS SAP Tuning | Install SAP software |
-|:---------------------------------------------------------------------------:|:------------------------:|:--------------------------------:|:-------------------------------------:|:-----------------------------:|:----------------------------:|:--------------------------:|:---------------------------:|:--------------------:|
-| [IBM catalog SAP S/4HANA or BW/4HANA variation]( ./) | :heavy_check_mark: | :heavy_check_mark: | N/A | 1 | 1 | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: |
-
-## Architecture Diagram
-
-
-## Overview
-1. [Summary Tasks](#summary-tasks)
-2. [Before you begin](#before-you-begin)
-3. [Notes](#notes)
-4. [Prerequisites](#prerequisites)
-5. [Post Deployment](#post-deployment)
-6. [Storage setup](#storage-setup)
-7. [Ansible roles used](#ansible-roles-used)
-
-- Creates a new private subnet for SAP communication for the entire landscape.
-- Creates and configures one PowerVS instance for SAP HANA based on best practices for HANA database.
-- Creates and configures one PowerVS instance for SAP NetWeaver based on best practices, hosting the PAS and ASCS instances.
-- Optionally let's the user choose a byol or custom os image for the HANA and Netweaver PowerVS instances and activate it with user provided os registration credentials.
-- Creates and configures one optional PowerVS instance for sharing SAP files between other system instances.
-- Connects all created PowerVS instances to a proxy server specified by IP address or hostname.
-- Optionally connects all created PowerVS instances to an NTP server and DNS forwarder specified by IP address or hostname.
-- Optionally configures a shared NFS directory on all created PowerVS instances.
-- Optionally configures the monitoring host to collect relevant information from the Database and application servers and send it to the IBM Cloud® Monitoring Instance
-- Optionally installs Sysdig agent and configures connection to [IBM Cloud Security and Compliance Center Workload Protection](https://cloud.ibm.com/docs/workload-protection)
-- Supports installation of **S/4HANA2023, S/4HANA2022, S/4HANA2021, S/4HANA2020, BW/4HANA2021**.
-- Supports installation using **Maintenance Planner** as well.
-- Optionally installs and configures SAP Monitoring host and dashboard, if monitoring instance was deployed as part of [Power Virtual Server with VPC landing zone deployment](https://cloud.ibm.com/catalog/architecture/deploy-arch-ibm-pvs-inf-2dd486c7-b317-4aaa-907b-42671485ad96-global?catalog_query=aHR0cHM6Ly9jbG91ZC5pYm0uY29tL2NhdGFsb2c%2Fc2VhcmNoPXBvd2VyI3NlYXJjaF9yZXN1bHRz).
-
-
-## Before you begin
-1. **It is required to have an existing IBM Cloud Object Storage (COS) instance**. Within the instance, an Object Storage Bucket containing the **SAP Software installation media files is required in the correct folder structure as defined** [here](#2-sap-binaries-required-for-installation-and-folder-structure-in-ibm-cloud-object-storage-bucket).
-
-2. **This solution requires a schematics workspace id as an input.**
-- If you do not have a [Power Virtual Server with VPC landing zone deployment](https://cloud.ibm.com/catalog/architecture/deploy-arch-ibm-pvs-inf-2dd486c7-b317-4aaa-907b-42671485ad96-global?catalog_query=aHR0cHM6Ly9jbG91ZC5pYm0uY29tL2NhdGFsb2c%2Fc2VhcmNoPXBvd2VyI3NlYXJjaF9yZXN1bHRz) that is the full stack solution for a PowerVS Workspace with Secure Landing Zone, create it first.
-
-
-## Notes
-- Filesystem sizes for HANA data and HANA log are **calculated automatically** based on the **memory size**.
-- Custom storage configuration by providing custom volume size, **iops**(tier0, tier1, tier3, tier5k), counts and mount points is supported.
-
-## Prerequisites
-
-### 1. IBM Cloud Object Storage service credentials
-1. Recommended to have a COS instance in the same region where the S/4HANA or BW/4HANA deployment is planned, as copying the files onto the LPAR will be faster.
-2. The 'ibmcloud_cos_service_credentials' variable requires a value in JSON format. This can be obtained using the instructions [here](https://cloud.ibm.com/docs/cloud-object-storage?topic=cloud-object-storage-service-credentials)
-
-### 2. SAP binaries required for installation and folder structure in IBM Cloud Object Storage bucket
-1. All binaries for SAP HANA database and SAP Solution (S/4HANA or BW/4HANA) must be uploaded to the IBM Cloud Object Storage Instance bucket in IBM Cloud before starting this deployment.
-2. For example the binaries required for SAP S/4HANA 2023 and SAP BW/4HANA 2021 are listed [here](./docs/s4hana23_bw4hana21_binaries.md).
-3. Example folder structure :
-```
-S4HANA_2023
-|
-|_HANA_DB
-| |_all IMDB* Files and SAPCAR files (all files similar to listed in point 2 above example file)
-|
-|_S4HANA_2023
-| |_all files similar to listed in point 2 above example file
-| |maintenance planner stack xml file (optional)
-|_Monitoring <---(optional)
- |_SAPCAR_x86_64
- |_IMDB_SAP_CLIENT_x86_64.SAR
-```
-**Do not mix the SAP HANA DB binaries, the S/4HANA or BW/4HANA solution binaries and Monitoring binaries otherwise the ansible playbook execution will fail.**
-
-4. If you have a **maintenance planner stack XML** file, place it under the **same folder as S4HANA_2023** and not under the HANA DB directory. Applies to all other versions as well. Mention only the name of this file in **'cos_swpm_mp_stack_file_name'**. Leave it **empty** if you do not have this stack XML file.
-
-5. The **'ibmcloud_cos_configuration'** variable must be set correctly based on the folder structure created.
-
- `cos_region`: region of IBM Cloud Object Storage instance bucket. Example: **eu-gb**
-
- `cos_bucket_name`: cos bucket name
-
- `cos_hana_software_path`: folder path to SAP HANA db binaries from the root of the bucket. Example from point 3, the value would be: **"s4hana2023/HANA_DB"**
-
- `cos_solution_software_path`: folder path to SAP S/4HANA binaries from the root of the bucket. Example from point 3, the value would be: **"s4hana2023/S4HANA_2023"**
-
- `cos_monitoring_software_path`: folder path to **x86_64** SAPCAR and IMDB_CLIENT binaries from the root of the bucket. Example from point 3, the value would be: **"s4hana2023/Monitoring"**
-
- `cos_swpm_mp_stack_file_name`: Stack XML file name. Value must be set to empty `''` if not available. If value is provided, then this file **must be present** in the same path as `'cos_solution_software_path'`.
-
-
-## Post Deployment
-1. All the installation logs and Ansible playbook files will be under the directory `/root/terraform_files/`.
-2. The **ansible vault password** will be used to encrypt the Ansible playbook file created during deployment. This playbook file will be placed under `/root/terraform_files/sap-hana-install.yml` on the **HANA instance** and `/root/terraform_files/sap-swpm-install-vars.yml` on the **NetWeaver Instance**.
-3. This file can be decrypted using the same value passed to variable **'ansible_vault_password'** during deployment. Use the command `ansible-vault decrypt /root/terraform_files/sap-swpm-install-vars.yml` and enter the password when prompted.
-
-## Storage setup
-
-### 1. HANA Instance:
-**Default values:**
-```
-/hana/shared (size auto calculated based on memory)
-/hana/data (size auto calculated based on memory)
-/hana/log (size auto calculated based on memory)
-/usr/sap 50GB
-```
-
-*Note: Supports custom storage configuration using provided optional variables.*
-
-### 2. Netweaver Instance:
-**Default values:**
-```
-/usr/sap 50GB
-/sapmnt 300GB
-```
-
-*Note: Supports custom storage configuration using provided optional variables.*
-
-
-## Ansible roles used
-1. **[RHEL System Roles](https://access.redhat.com/articles/4488731):** `sap_hana_install, sap_swpm, sap_general_preconfigure, sap_hana_preconfigure, sap_netweaver_preconfigure`
-2. **[IBM Role](https://galaxy.ansible.com/ui/repo/published/ibm/power_linux_sap/):** `power_linux_sap`
-
-
-
-### Requirements
-
-| Name | Version |
-|------|---------|
-| [terraform](#requirement\_terraform) | >= 1.9.0 |
-| [ibm](#requirement\_ibm) | 1.82.1 |
-
-### Modules
-
-| Name | Source | Version |
-|------|--------|---------|
-| [ansible\_monitoring\_sap\_install\_solution](#module\_ansible\_monitoring\_sap\_install\_solution) | ../../../modules/ansible | n/a |
-| [ansible\_sap\_install\_hana](#module\_ansible\_sap\_install\_hana) | ../../../modules/ansible | n/a |
-| [ansible\_sap\_install\_solution](#module\_ansible\_sap\_install\_solution) | ../../../modules/ansible | n/a |
-| [ibmcloud\_cos\_download\_hana\_binaries](#module\_ibmcloud\_cos\_download\_hana\_binaries) | ../../../modules/ibmcloud-cos | n/a |
-| [ibmcloud\_cos\_download\_monitoring\_binaries](#module\_ibmcloud\_cos\_download\_monitoring\_binaries) | ../../../modules/ibmcloud-cos | n/a |
-| [ibmcloud\_cos\_download\_netweaver\_binaries](#module\_ibmcloud\_cos\_download\_netweaver\_binaries) | ../../../modules/ibmcloud-cos | n/a |
-| [sap\_system](#module\_sap\_system) | ../../../modules/pi-sap-system-type1 | n/a |
-
-### Resources
-
-| Name | Type |
-|------|------|
-| [ibm_pi_catalog_images.catalog_images_ds](https://registry.terraform.io/providers/IBM-Cloud/ibm/1.82.1/docs/data-sources/pi_catalog_images) | data source |
-| [ibm_pi_image.custom_images](https://registry.terraform.io/providers/IBM-Cloud/ibm/1.82.1/docs/data-sources/pi_image) | data source |
-| [ibm_schematics_output.schematics_output](https://registry.terraform.io/providers/IBM-Cloud/ibm/1.82.1/docs/data-sources/schematics_output) | data source |
-| [ibm_schematics_workspace.schematics_workspace](https://registry.terraform.io/providers/IBM-Cloud/ibm/1.82.1/docs/data-sources/schematics_workspace) | data source |
-
-### Inputs
-
-| Name | Description | Type | Default | Required |
-|------|-------------|------|---------|:--------:|
-| [ansible\_vault\_password](#input\_ansible\_vault\_password) | Vault password to encrypt SAP installation parameters in the OS. 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 |
-| [ibmcloud\_api\_key](#input\_ibmcloud\_api\_key) | IBM Cloud platform API key needed to deploy IAM enabled resources. | `string` | n/a | yes |
-| [ibmcloud\_cos\_configuration](#input\_ibmcloud\_cos\_configuration) | Cloud Object Storage instance containing SAP installation files that will be downloaded to NFS share. 'cos\_hana\_software\_path' must contain only binaries required for HANA DB installation. 'cos\_solution\_software\_path' must contain only binaries required for S/4HANA or BW/4HANA installation and must not contain any IMDB files. 'cos\_monitoring\_software\_path' is optional and must contain x86\_64 SAPCAR and SAP HANA client binaries required for configuring monitoring instance. The binaries required for installation can be found [here](https://github.com/terraform-ibm-modules/terraform-ibm-powervs-sap/blob/main/solutions/ibm-catalog/sap-s4hana-bw4hana/docs/s4hana23_bw4hana21_binaries.md) If you have an optional stack xml file (maintenance planner), place it under the 'cos\_solution\_software\_path' directory. Avoid inserting '/' at the beginning for 'cos\_hana\_software\_path', 'cos\_solution\_software\_path' and 'cos\_monitoring\_software\_path'. | object({
cos_region = string
cos_bucket_name = string
cos_hana_software_path = string
cos_solution_software_path = string
cos_monitoring_software_path = optional(string)
cos_swpm_mp_stack_file_name = string
}) | {
"cos_bucket_name": "powervs-automation",
"cos_hana_software_path": "HANA_DB/rev87",
"cos_monitoring_software_path": "HANA_CLIENT/x86_64",
"cos_region": "eu-geo",
"cos_solution_software_path": "S4HANA_2023",
"cos_swpm_mp_stack_file_name": ""
} | no |
-| [ibmcloud\_cos\_service\_credentials](#input\_ibmcloud\_cos\_service\_credentials) | IBM Cloud Object Storage instance service credentials to access the bucket in the instance.[json example of service credential](https://cloud.ibm.com/docs/cloud-object-storage?topic=cloud-object-storage-service-credentials) | `string` | n/a | yes |
-| [powervs\_default\_sap\_images](#input\_powervs\_default\_sap\_images) | Default Red Hat Linux Full Linux subscription images to use for PowerVS SAP HANA and SAP NetWeaver instances. If you're using a byol or a custom RHEL image, additionally specify the optional values for 'powervs\_os\_registration\_username', 'powervs\_os\_registration\_password' and 'ansible\_vault\_password' | object({
rhel_hana_image = string
rhel_nw_image = string
}) | {
"rhel_hana_image": "RHEL9-SP4-SAP",
"rhel_nw_image": "RHEL9-SP4-SAP-NETWEAVER"
} | no |
-| [powervs\_hana\_instance\_additional\_storage\_config](#input\_powervs\_hana\_instance\_additional\_storage\_config) | Additional File systems to be created and attached to PowerVS SAP HANA instance. 'size' is in GB. 'count' specify over how many storage volumes the file system will be striped. 'tier' specifies the storage tier in PowerVS workspace. 'mount' specifies the target mount point on OS. | list(object({
name = string
size = string
count = string
tier = string
mount = string
})) | [
{
"count": "1",
"mount": "/usr/sap",
"name": "usrsap",
"size": "50",
"tier": "tier3"
}
]
| no |
-| [powervs\_hana\_instance\_custom\_storage\_config](#input\_powervs\_hana\_instance\_custom\_storage\_config) | Custom file systems to be created and attached to PowerVS SAP HANA instance. 'size' is in GB. 'count' specify over how many storage volumes the file system will be striped. 'tier' specifies the storage tier in PowerVS workspace. 'mount' specifies the target mount point on OS. | list(object({
name = string
size = string
count = string
tier = string
mount = string
pool = optional(string)
})) | [
{
"count": "",
"mount": "",
"name": "",
"size": "",
"tier": ""
}
]
| no |
-| [powervs\_hana\_instance\_name](#input\_powervs\_hana\_instance\_name) | PowerVS SAP HANA instance hostname (non FQDN). Will get the form of -. Max length of final hostname must be <= 13 characters. | `string` | `"hana"` | no |
-| [powervs\_hana\_instance\_sap\_profile\_id](#input\_powervs\_hana\_instance\_sap\_profile\_id) | PowerVS SAP HANA instance profile to use. Must be one of the supported profiles. See [here](https://cloud.ibm.com/docs/sap?topic=sap-hana-iaas-offerings-profiles-power-vs). File system sizes are automatically calculated. Override automatic calculation by setting values in optional parameter 'powervs\_hana\_instance\_custom\_storage\_config'. | `string` | `"sh2-4x256"` | no |
-| [powervs\_netweaver\_cpu\_number](#input\_powervs\_netweaver\_cpu\_number) | Number of CPUs for PowerVS SAP NetWeaver instance. | `string` | `"3"` | no |
-| [powervs\_netweaver\_instance\_name](#input\_powervs\_netweaver\_instance\_name) | PowerVS SAP NetWeaver instance hostname (non FQDN). Will get the form of --. Max length of final hostname must be <= 13 characters. | `string` | `"nw"` | no |
-| [powervs\_netweaver\_instance\_storage\_config](#input\_powervs\_netweaver\_instance\_storage\_config) | File systems to be created and attached to PowerVS SAP NetWeaver instance. 'size' is in GB. 'count' specifies over how many storage volumes the file system will be striped. 'tier' specifies the storage tier in PowerVS workspace. 'mount' specifies the target mount point on OS. | list(object({
name = string
size = string
count = string
tier = string
mount = string
pool = optional(string)
})) | [
{
"count": "1",
"mount": "/usr/sap",
"name": "usrsap",
"size": "50",
"tier": "tier3"
}
]
| no |
-| [powervs\_netweaver\_memory\_size](#input\_powervs\_netweaver\_memory\_size) | Memory size for PowerVS SAP NetWeaver instance. | `string` | `"32"` | no |
-| [powervs\_os\_registration\_password](#input\_powervs\_os\_registration\_password) | If you're using a byol or a custom RHEL image for SAP HANA and Netweaver you need to provide your OS registration credentials here. Leave empty if you're using an IBM provided subscription (FLS). | `string` | `""` | no |
-| [powervs\_os\_registration\_username](#input\_powervs\_os\_registration\_username) | If you're using a byol or a custom RHEL image for SAP HANA and Netweaver you need to provide your OS registration credentials here. Leave empty if you're using an IBM provided subscription (FLS). | `string` | `""` | no |
-| [powervs\_sap\_network\_cidr](#input\_powervs\_sap\_network\_cidr) | Network range for dedicated SAP network. Used for communication between SAP Application servers with SAP HANA Database. E.g., '10.53.0.0/24' | `string` | `"10.53.0.0/24"` | no |
-| [powervs\_zone](#input\_powervs\_zone) | IBM Cloud data center location corresponding to the location used in 'Power Virtual Server with VPC landing zone' pre-requisite deployment. | `string` | n/a | yes |
-| [prefix](#input\_prefix) | Unique prefix for resources to be created (e.g., SAP system name). Must be an alphanumeric string with maximum length of 6 characters. | `string` | n/a | yes |
-| [prerequisite\_workspace\_id](#input\_prerequisite\_workspace\_id) | IBM Cloud Schematics workspace ID of an existing 'Power Virtual Server with VPC landing zone' catalog solution. If you do not yet have an existing deployment, click [here](https://cloud.ibm.com/catalog/architecture/deploy-arch-ibm-pvs-inf-2dd486c7-b317-4aaa-907b-42671485ad96-global?) to create one. | `string` | n/a | yes |
-| [sap\_domain](#input\_sap\_domain) | SAP network domain name. | `string` | `"sap.com"` | no |
-| [sap\_hana\_master\_password](#input\_sap\_hana\_master\_password) | SAP HANA master password. | `string` | n/a | yes |
-| [sap\_hana\_vars](#input\_sap\_hana\_vars) | SAP HANA SID and instance number. | object({
sap_hana_install_sid = string
sap_hana_install_number = string
}) | {
"sap_hana_install_number": "02",
"sap_hana_install_sid": "HDB"
} | no |
-| [sap\_monitoring\_vars](#input\_sap\_monitoring\_vars) | Configuration details for SAP monitoring dashboard. Takes effect only when a monitoring instance was deployed as part of Power Virtual Server with VPC landing zone deployment. If 'config\_override' is true, an existing configuration will be overwritten, 'sap\_monitoring\_nr' Two-digit incremental number starting with 01 up to 99. This is not a existing SAP ID, but a pure virtual number and 'sap\_monitoring\_solution\_name' is a virtual arbitrary short name to recognize SAP System. | object({
config_override = bool
sap_monitoring_nr = string
sap_monitoring_solution_name = string
}) | {
"config_override": false,
"sap_monitoring_nr": "01",
"sap_monitoring_solution_name": ""
} | no |
-| [sap\_solution](#input\_sap\_solution) | SAP Solution to be installed on Power Virtual Server. | `string` | n/a | yes |
-| [sap\_solution\_vars](#input\_sap\_solution\_vars) | SAP SID, ASCS and PAS instance numbers and service/protectedwebmethods parameters. | object({
sap_swpm_sid = string
sap_swpm_ascs_instance_nr = string
sap_swpm_pas_instance_nr = string
sap_swpm_service_protectedwebmethods = string
}) | {
"sap_swpm_ascs_instance_nr": "00",
"sap_swpm_pas_instance_nr": "01",
"sap_swpm_service_protectedwebmethods": "SDEFAULT -GetQueueStatistic -ABAPGetWPTable -EnqGetStatistic -GetProcessList -GetEnvironment -BAPGetSystemWPTable",
"sap_swpm_sid": "S4H"
} | no |
-| [sap\_swpm\_master\_password](#input\_sap\_swpm\_master\_password) | SAP SWPM master password. | `string` | n/a | yes |
-| [software\_download\_directory](#input\_software\_download\_directory) | Software installation binaries will be downloaded to this directory. | `string` | `"/software"` | no |
-| [ssh\_private\_key](#input\_ssh\_private\_key) | Private SSH key (RSA format) used to login to IBM PowerVS instances. Should match to uploaded public SSH key referenced by 'ssh\_public\_key' which was created previously. The key is temporarily stored and deleted. For more information about SSH keys, see [SSH keys](https://cloud.ibm.com/docs/vpc?topic=vpc-ssh-keys). | `string` | n/a | yes |
-
-### Outputs
-
-| Name | Description |
-|------|-------------|
-| [access\_host\_or\_ip](#output\_access\_host\_or\_ip) | Public IP of Provided Bastion/JumpServer Host. |
-| [infrastructure\_data](#output\_infrastructure\_data) | PowerVS infrastructure details. |
-| [powervs\_hana\_instance\_ips](#output\_powervs\_hana\_instance\_ips) | All private IPS of HANA instance. |
-| [powervs\_hana\_instance\_management\_ip](#output\_powervs\_hana\_instance\_management\_ip) | Management IP of HANA Instance. |
-| [powervs\_lpars\_data](#output\_powervs\_lpars\_data) | All private IPS of PowerVS instances and Jump IP to access the host. |
-| [powervs\_netweaver\_instance\_ips](#output\_powervs\_netweaver\_instance\_ips) | All private IPs of NetWeaver instance. |
-| [powervs\_netweaver\_instance\_management\_ip](#output\_powervs\_netweaver\_instance\_management\_ip) | Management IP of NetWeaver instance. |
-| [sap\_hana\_vars](#output\_sap\_hana\_vars) | SAP HANA system details. |
-| [sap\_monitoring\_vars](#output\_sap\_monitoring\_vars) | SAP Monitoring Instance details. |
-| [sap\_solution\_vars](#output\_sap\_solution\_vars) | SAP NetWeaver system details. |
-
diff --git a/solutions/ibm-catalog/sap-s4hana-bw4hana/docs/s4hana23_bw4hana21_binaries.md b/solutions/ibm-catalog/sap-s4hana-bw4hana/docs/s4hana23_bw4hana21_binaries.md
deleted file mode 100644
index f5aaf7b2..00000000
--- a/solutions/ibm-catalog/sap-s4hana-bw4hana/docs/s4hana23_bw4hana21_binaries.md
+++ /dev/null
@@ -1,47 +0,0 @@
-| SAP HANA rev78 Binaries |
-|-----------------------------------|
-| IMDB_AFL20_078_0-80002045.SAR |
-| IMDB_CLIENT20_020_23-80002095.SAR |
-| IMDB_LCAPPS_2078_0-80002183.SAR |
-| IMDB_SERVER20_078_0-80002046.SAR |
-| SAPCAR_1115-70006238.EXE |
-
-
-| S/4HANA 2023 Binaries |
-|-------------------------------------------------------------|
-| IMDB_CLIENT20_020_23-80002095.SAR |
-| KD75888.SAR (Required when using stack xml file) |
-| R3trans_85-70007832.SAR |
-| S4CORE108_INST_EXPORT_1.zip .. S4CORE108_INST_EXPORT_30.zip |
-| S4HANAOP108_ERP_LANG_EN.SAR |
-| SAPCAR_1115-70006238.EXE |
-| SAPEXEDB_51-70007831.SAR |
-| SAPEXE_51-70007832.SAR |
-| SAPHOSTAGENT64_64-80004831.SAR |
-| SUM20SP20_0-80002470.SAR |
-| SWPM20SP18_0-80003426.SAR |
-| igsexe_4-70005446.sar |
-| igshelper_17-10010245.sar |
-
-
-| BW/4HANA Binaries 2021 |
-|--------------------------------------------------------------|
-| BW4HANA300_INST_EXPORT_1.zip .. BW4HANA300_INST_EXPORT_8.zip |
-| IMDB_CLIENT20_015_19-80002095.SAR |
-| KD75685.SAR(Required when using stack xml file) |
-| BW4HANA300_NW_LANG_EN.SAR |
-| R3trans_121-70006667.SAR |
-| SAPCAR_1115-70006238.EXE |
-| SAPEXEDB_100-70006666.SAR |
-| SAPEXE_100-70006667.SAR |
-| SAPHOSTAGENT60_60-80004831.SAR |
-| SUM20SP17_1-80002470.SAR |
-| SWPM20SP15_1-80003426.SAR |
-| igsexe_3-70005446.sar |
-| igshelper_17-10010245.sar |
-
-
-| SAP x86_64 binaries for monitoring host|
-|-----------------------------------|
-| IMDB_CLIENT20_020_23-80002082.SAR |
-| SAPCAR_1300-70007716.EXE |
diff --git a/solutions/ibm-catalog/sap-s4hana-bw4hana/locals_schematics_data.tf b/solutions/ibm-catalog/sap-s4hana-bw4hana/locals_schematics_data.tf
deleted file mode 100644
index 1a77df23..00000000
--- a/solutions/ibm-catalog/sap-s4hana-bw4hana/locals_schematics_data.tf
+++ /dev/null
@@ -1,132 +0,0 @@
-############################################################
-# Get Values from PowerVS with VPC Landing Zone Workspace
-############################################################
-
-locals {
- location = regex("^[a-z/-]+", var.prerequisite_workspace_id)
-}
-
-data "ibm_schematics_workspace" "schematics_workspace" {
- workspace_id = var.prerequisite_workspace_id
- location = local.location
-}
-
-data "ibm_schematics_output" "schematics_output" {
- workspace_id = var.prerequisite_workspace_id
- location = local.location
- template_id = data.ibm_schematics_workspace.schematics_workspace.runtime_data[0].id
-}
-
-locals {
- powervs_infrastructure = jsondecode(data.ibm_schematics_output.schematics_output.output_json)
- powervs_workspace_guid = local.powervs_infrastructure[0].powervs_workspace_guid.value
- powervs_sshkey_name = local.powervs_infrastructure[0].powervs_ssh_public_key.value.name
- powervs_custom_images = local.powervs_infrastructure[0].powervs_images.value
- powervs_networks = [local.powervs_infrastructure[0].powervs_management_subnet.value, local.powervs_infrastructure[0].powervs_backup_subnet.value]
- access_host_or_ip = local.powervs_infrastructure[0].access_host_or_ip.value
- proxy_host_or_ip_port = local.powervs_infrastructure[0].proxy_host_or_ip_port.value
- dns_host_or_ip = local.powervs_infrastructure[0].dns_host_or_ip.value
- ntp_host_or_ip = local.powervs_infrastructure[0].ntp_host_or_ip.value
- nfs_host_or_ip_path = local.powervs_infrastructure[0].nfs_host_or_ip_path.value
- ansible_host_or_ip = local.powervs_infrastructure[0].ansible_host_or_ip.value
- network_services_config = local.powervs_infrastructure[0].network_services_config.value
- monitoring_instance = local.powervs_infrastructure[0].monitoring_instance.value
- scc_wp_instance = local.powervs_infrastructure[0].scc_wp_instance.value
-}
-
-############################################################
-# Verify OS image type
-############################################################
-locals {
- selected_hana_image = var.powervs_default_sap_images.rhel_hana_image
- selected_netweaver_image = var.powervs_default_sap_images.rhel_nw_image
- fls_image_types = ["stock-sap-fls", "stock-sap-netweaver-fls"]
- use_custom_images = (
- length(local.powervs_custom_images) > 0 &&
- alltrue([
- for name in [local.selected_hana_image, local.selected_netweaver_image] : (
- contains(keys(local.powervs_custom_images), name) ?
- local.powervs_custom_images[name].image_vendor == "SAP" : false
- )
- ])
- )
-
-}
-
-# Stock image data (only if not using custom)
-data "ibm_pi_catalog_images" "catalog_images_ds" {
- count = local.use_custom_images ? 0 : 1
-
- pi_cloud_instance_id = local.powervs_workspace_guid
- sap = true
-}
-
-# Custom image data (only if using custom)
-data "ibm_pi_image" "custom_images" {
- count = local.use_custom_images ? 2 : 0
-
- pi_image_name = element([local.selected_hana_image, local.selected_netweaver_image], count.index)
- pi_cloud_instance_id = local.powervs_workspace_guid
-}
-
-locals {
- # Determine image types
- hana_image_type = local.use_custom_images ? data.ibm_pi_image.custom_images[0].image_type : one([
- for img in data.ibm_pi_catalog_images.catalog_images_ds[0].images :
- img.image_type if img.name == local.selected_hana_image
- ])
-
- netweaver_image_type = local.use_custom_images ? data.ibm_pi_image.custom_images[1].image_type : one([
- for img in data.ibm_pi_catalog_images.catalog_images_ds[0].images :
- img.image_type if img.name == local.selected_netweaver_image
- ])
-
- hana_image_id = local.use_custom_images ? lookup(local.powervs_custom_images, local.selected_hana_image, null) : one([
- for img in data.ibm_pi_catalog_images.catalog_images_ds[0].images :
- img.image_id if img.name == local.selected_hana_image
- ])
-
- netweaver_image_id = local.use_custom_images ? lookup(local.powervs_custom_images, local.selected_netweaver_image, null) : one([
- for img in data.ibm_pi_catalog_images.catalog_images_ds[0].images :
- img.image_id if img.name == local.selected_netweaver_image
- ])
-
- hana_is_fls = contains(local.fls_image_types, local.hana_image_type)
- netweaver_is_fls = contains(local.fls_image_types, local.netweaver_image_type)
- images_mixed = local.hana_is_fls != local.netweaver_is_fls
- use_fls = local.hana_is_fls && local.netweaver_is_fls
- has_byol_creds = length(var.powervs_os_registration_username) > 0 && length(var.powervs_os_registration_password) > 0
- byol_and_fls = local.use_fls && local.has_byol_creds
- missing_byol_creds = !local.use_fls && !local.has_byol_creds
-
- # Validation messages
- images_mixed_msg = "You've selected an fls image and a byol image for hana and netweaver. Using byol on one and fls on another is currently not supported."
- # tflint-ignore: terraform_unused_declarations
- validate_images_mixed = regex("^${local.images_mixed_msg}$", (local.images_mixed ? "" : local.images_mixed_msg))
-
- missing_byol_msg = "Missing byol credentials for activation of linux subscription."
- # tflint-ignore: terraform_unused_declarations
- validate_byol_provided = regex("^${local.missing_byol_msg}$", (local.missing_byol_creds ? "" : local.missing_byol_msg))
-
- byol_and_fls_msg = "FLS images and user provided linux subscription detected. Can't use both at the same time."
- # tflint-ignore: terraform_unused_declarations
- validate_byol_and_fls = regex("^${local.byol_and_fls_msg}$", (local.byol_and_fls ? "" : local.byol_and_fls_msg))
-
-}
-
-locals {
- powervs_instance_init_linux = {
- enable = true
- bastion_host_ip = local.access_host_or_ip
- ansible_host_or_ip = local.ansible_host_or_ip
- ssh_private_key = var.ssh_private_key
- custom_os_registration = local.use_fls ? null : { "username" : var.powervs_os_registration_username, "password" : var.powervs_os_registration_password }
- }
-
- powervs_network_services_config = {
- squid = { enable = true, squid_server_ip_port = local.proxy_host_or_ip_port, no_proxy_hosts = "161.0.0.0/8,10.0.0.0/8" }
- nfs = { enable = local.nfs_host_or_ip_path != "" ? true : false, nfs_server_path = local.nfs_host_or_ip_path, nfs_client_path = var.software_download_directory, opts = local.network_services_config.nfs.opts, fstype = local.network_services_config.nfs.fstype }
- dns = { enable = local.dns_host_or_ip != "" ? true : false, dns_server_ip = local.dns_host_or_ip }
- ntp = { enable = local.ntp_host_or_ip != "" ? true : false, ntp_server_ip = local.ntp_host_or_ip }
- }
-}
diff --git a/solutions/ibm-catalog/sap-s4hana-bw4hana/main.tf b/solutions/ibm-catalog/sap-s4hana-bw4hana/main.tf
deleted file mode 100644
index 2b6e316d..00000000
--- a/solutions/ibm-catalog/sap-s4hana-bw4hana/main.tf
+++ /dev/null
@@ -1,277 +0,0 @@
-######################################################
-# Deploy SAP S/4HANA or SAP BW/4HANA
-# 1 HANA instance
-# 1 NetWeaver Instance
-######################################################
-
-locals {
- powervs_hana_instance = {
- name = var.powervs_hana_instance_name
- image_id = local.hana_image_id
- sap_profile_id = var.powervs_hana_instance_sap_profile_id
- additional_storage_config = var.powervs_hana_instance_additional_storage_config
- }
-
- powervs_netweaver_instance = {
- instance_count = 1
- name = var.powervs_netweaver_instance_name
- image_id = local.netweaver_image_id
- processors = var.powervs_netweaver_cpu_number
- memory = var.powervs_netweaver_memory_size
- proc_type = "shared"
- storage_config = var.powervs_netweaver_instance_storage_config
- }
-}
-
-module "sap_system" {
- source = "../../../modules/pi-sap-system-type1"
-
- prefix = var.prefix
- pi_workspace_guid = local.powervs_workspace_guid
- pi_region = var.powervs_zone
- pi_ssh_public_key_name = local.powervs_sshkey_name
- pi_networks = local.powervs_networks
- pi_sap_network_cidr = var.powervs_sap_network_cidr
- pi_hana_instance = local.powervs_hana_instance
- pi_hana_instance_custom_storage_config = var.powervs_hana_instance_custom_storage_config
- pi_netweaver_instance = local.powervs_netweaver_instance
- pi_instance_init_linux = local.powervs_instance_init_linux
- sap_network_services_config = local.powervs_network_services_config
- sap_domain = var.sap_domain
- ansible_vault_password = var.ansible_vault_password
- scc_wp_instance = local.scc_wp_instance
-}
-
-
-######################################################
-# COS Service credentials
-# Download HANA binaries and SAP Solution binaries
-# from IBM Cloud Object Storage(COS) to Ansible host
-# host NFS mount point
-######################################################
-
-locals {
- cos_service_credentials = jsondecode(var.ibmcloud_cos_service_credentials)
- cos_apikey = local.cos_service_credentials.apikey
- cos_resource_instance_id = local.cos_service_credentials.resource_instance_id
-}
-
-locals {
-
- ibmcloud_cos_hana_configuration = {
- cos_apikey = local.cos_apikey
- cos_region = var.ibmcloud_cos_configuration.cos_region
- cos_resource_instance_id = local.cos_resource_instance_id
- cos_bucket_name = var.ibmcloud_cos_configuration.cos_bucket_name
- cos_dir_name = var.ibmcloud_cos_configuration.cos_hana_software_path
- download_dir_path = local.network_services_config.nfs.nfs_client_path
- }
-
- ibmcloud_cos_solution_configuration = {
- cos_apikey = local.cos_apikey
- cos_region = var.ibmcloud_cos_configuration.cos_region
- cos_resource_instance_id = local.cos_resource_instance_id
- cos_bucket_name = var.ibmcloud_cos_configuration.cos_bucket_name
- cos_dir_name = var.ibmcloud_cos_configuration.cos_solution_software_path
- download_dir_path = local.network_services_config.nfs.nfs_client_path
- }
-
- ibmcloud_cos_monitoring_configuration = {
- cos_apikey = local.cos_apikey
- cos_region = var.ibmcloud_cos_configuration.cos_region
- cos_resource_instance_id = local.cos_resource_instance_id
- cos_bucket_name = var.ibmcloud_cos_configuration.cos_bucket_name
- cos_dir_name = var.ibmcloud_cos_configuration.cos_monitoring_software_path
- download_dir_path = local.network_services_config.nfs.nfs_client_path
- }
-}
-
-module "ibmcloud_cos_download_hana_binaries" {
- source = "../../../modules/ibmcloud-cos"
- count = local.powervs_network_services_config.nfs.enable ? 1 : 0
-
- access_host_or_ip = local.access_host_or_ip
- target_server_ip = local.ansible_host_or_ip
- ssh_private_key = var.ssh_private_key
- ibmcloud_cos_configuration = local.ibmcloud_cos_hana_configuration
-}
-
-module "ibmcloud_cos_download_netweaver_binaries" {
- source = "../../../modules/ibmcloud-cos"
- depends_on = [module.ibmcloud_cos_download_hana_binaries]
- count = local.powervs_network_services_config.nfs.enable ? 1 : 0
-
- access_host_or_ip = local.access_host_or_ip
- target_server_ip = local.ansible_host_or_ip
- ssh_private_key = var.ssh_private_key
- ibmcloud_cos_configuration = local.ibmcloud_cos_solution_configuration
-}
-
-module "ibmcloud_cos_download_monitoring_binaries" {
- source = "../../../modules/ibmcloud-cos"
- depends_on = [module.ibmcloud_cos_download_netweaver_binaries]
- count = local.monitoring_instance.enable ? 1 : 0
-
- access_host_or_ip = local.access_host_or_ip
- target_server_ip = local.ansible_host_or_ip
- ssh_private_key = var.ssh_private_key
- ibmcloud_cos_configuration = local.ibmcloud_cos_monitoring_configuration
-}
-
-#####################################################
-# Ansible vars validation
-#####################################################
-
-locals {
- instance_nr_validation = length([var.sap_hana_vars.sap_hana_install_number, var.sap_solution_vars.sap_swpm_ascs_instance_nr, var.sap_solution_vars.sap_swpm_pas_instance_nr]) == length(distinct([var.sap_hana_vars.sap_hana_install_number, var.sap_solution_vars.sap_swpm_ascs_instance_nr, var.sap_solution_vars.sap_swpm_pas_instance_nr]))
- instance_nr_validation_msg = "HANA sap_hana_install_number , ASCS sap_swpm_ascs_instance_nr and PAS sap_swpm_pas_instance_nr instance numbers must not be same"
- # tflint-ignore: terraform_unused_declarations
- instance_nr_validation_chk = regex("^${local.instance_nr_validation_msg}$", (local.instance_nr_validation ? local.instance_nr_validation_msg : ""))
-}
-
-
-#####################################################
-# Ansible Install HANA DB
-#####################################################
-
-locals {
- ansible_sap_hana_playbook_vars = merge(var.sap_hana_vars,
- {
- sap_hana_install_software_directory = "${var.software_download_directory}/${var.ibmcloud_cos_configuration.cos_hana_software_path}",
- sap_hana_install_master_password = var.sap_hana_master_password
- }
- )
-}
-
-module "ansible_sap_install_hana" {
-
- source = "../../../modules/ansible"
- depends_on = [module.ibmcloud_cos_download_hana_binaries, module.sap_system]
- count = local.powervs_network_services_config.nfs.enable ? 1 : 0
- bastion_host_ip = local.access_host_or_ip
- ansible_host_or_ip = local.ansible_host_or_ip
- ssh_private_key = var.ssh_private_key
- configure_ansible_host = false
- ansible_vault_password = var.ansible_vault_password
-
- src_script_template_name = "hanadb/install_hana.sh.tftpl"
- dst_script_file_name = "${var.prefix}-${var.powervs_hana_instance_name}_install_hana.sh"
-
- src_playbook_template_name = "hanadb/playbook-sap-hana-install.yml.tftpl"
- dst_playbook_file_name = "${var.prefix}-${var.powervs_hana_instance_name}-playbook-sap-hana-install.yml"
- playbook_template_vars = local.ansible_sap_hana_playbook_vars
-
- src_inventory_template_name = "pi-instance-inventory.tftpl"
- dst_inventory_file_name = "${var.prefix}-${var.powervs_hana_instance_name}-instance-inventory"
- inventory_template_vars = { "pi_instance_management_ip" : module.sap_system.pi_hana_instance_management_ip }
-}
-
-####################################################
-# Ansible Install NetWeaver solution
-#####################################################
-
-locals {
- product_catalog_map = {
- "s4hana-2020" = "NW_ABAP_OneHost:S4HANA2020.CORE.HDB.ABAP"
- "s4hana-2021" = "NW_ABAP_OneHost:S4HANA2021.CORE.HDB.ABAP"
- "s4hana-2022" = "NW_ABAP_OneHost:S4HANA2022.CORE.HDB.ABAP"
- "s4hana-2023" = "NW_ABAP_OneHost:S4HANA2023.CORE.HDB.ABAP"
- "bw4hana-2021" = "NW_ABAP_OneHost:BW4HANA2021.CORE.HDB.ABAP"
- }
-
- ansible_sap_solution_playbook_vars = merge(var.sap_solution_vars,
- {
- sap_swpm_product_catalog_id = lookup(local.product_catalog_map, var.sap_solution, null)
- sap_install_media_detect_directory = "${var.software_download_directory}/${var.ibmcloud_cos_configuration.cos_solution_software_path}"
- sap_swpm_mp_stack_file_name = var.ibmcloud_cos_configuration.cos_swpm_mp_stack_file_name
- sap_swpm_master_password = var.sap_swpm_master_password
- sap_swpm_ascs_instance_hostname = "${var.prefix}-${var.powervs_netweaver_instance_name}-1"
- sap_domain = var.sap_domain
- sap_swpm_db_host = "${var.prefix}-${var.powervs_hana_instance_name}"
- sap_swpm_db_ip = module.sap_system.pi_hana_instance_sap_ip
- sap_swpm_db_sid = var.sap_hana_vars.sap_hana_install_sid
- sap_swpm_db_instance_nr = var.sap_hana_vars.sap_hana_install_number
- sap_swpm_db_master_password = var.sap_hana_master_password
- }
- )
-}
-
-module "ansible_sap_install_solution" {
-
- source = "../../../modules/ansible"
- depends_on = [module.ibmcloud_cos_download_netweaver_binaries, module.ansible_sap_install_hana]
- count = local.powervs_network_services_config.nfs.enable ? 1 : 0
-
- bastion_host_ip = local.access_host_or_ip
- ansible_host_or_ip = local.ansible_host_or_ip
- ssh_private_key = var.ssh_private_key
- configure_ansible_host = false
- ansible_vault_password = var.ansible_vault_password
-
- src_script_template_name = "s4hanab4hana-solution/install_swpm.sh.tftpl"
- dst_script_file_name = "${var.prefix}-${var.powervs_netweaver_instance_name}_install_swpm.sh"
-
- src_playbook_template_name = "s4hanab4hana-solution/playbook-sap-swpm-install.yml.tftpl"
- dst_playbook_file_name = "${var.prefix}-${var.powervs_netweaver_instance_name}-playbook-sap-swpm-install.yml"
- playbook_template_vars = local.ansible_sap_solution_playbook_vars
-
- src_inventory_template_name = "pi-instance-inventory.tftpl"
- dst_inventory_file_name = "${var.prefix}-${var.powervs_netweaver_instance_name}-instance-inventory"
- inventory_template_vars = { "pi_instance_management_ip" : module.sap_system.pi_netweaver_instance_management_ips }
-}
-
-####################################################
-# Ansible Install Monitoring SAP solution
-#####################################################
-
-locals {
-
- ansible_monitoring_solution_playbook_vars = merge(var.sap_monitoring_vars,
- {
- sap_monitoring_action = "add"
- sap_tools_directory = "${local.network_services_config.nfs.nfs_client_path}/${var.ibmcloud_cos_configuration.cos_monitoring_software_path}"
- sap_hana_ip = module.sap_system.pi_hana_instance_management_ip
- sap_hana_http_port = "5${var.sap_hana_vars.sap_hana_install_number}13"
- sap_hana_sql_systemdb_port = "3${var.sap_hana_vars.sap_hana_install_number}13"
- sap_hana_sql_systemdb_user = "system"
- sap_hana_sql_systemdb_password = var.sap_hana_master_password
- sap_ascs_ip = module.sap_system.pi_netweaver_instance_management_ips
- sap_ascs_http_port = "5${var.sap_solution_vars.sap_swpm_ascs_instance_nr}13"
- sap_app_server = jsonencode([
- {
- sap_app_server_nr = "01"
- ip = module.sap_system.pi_netweaver_instance_management_ips
- port = "5${var.sap_solution_vars.sap_swpm_pas_instance_nr}13"
- }]
- )
- ibmcloud_monitoring_instance_url = "https://ingest.prws.private.${local.monitoring_instance.location}.monitoring.cloud.ibm.com/prometheus/remote/write"
- ibmcloud_monitoring_request_credential_url = "https://${local.monitoring_instance.location}.monitoring.cloud.ibm.com/api/token"
- ibmcloud_monitoring_instance_guid = local.monitoring_instance.guid
- }
- )
-}
-
-
-module "ansible_monitoring_sap_install_solution" {
-
- source = "../../../modules/ansible"
- depends_on = [module.ibmcloud_cos_download_monitoring_binaries, module.ansible_sap_install_hana, module.ansible_sap_install_solution]
- count = local.monitoring_instance.enable ? 1 : 0
-
- bastion_host_ip = local.access_host_or_ip
- ansible_host_or_ip = local.ansible_host_or_ip
- ssh_private_key = var.ssh_private_key
- ansible_vault_password = var.ansible_vault_password
- configure_ansible_host = false
- ibmcloud_api_key = var.ibmcloud_api_key
-
- src_script_template_name = "configure-monitoring-sap/ansible_configure_monitoring.sh.tftpl"
- dst_script_file_name = "${var.prefix}-configure_monitoring.sh"
-
- src_playbook_template_name = "configure-monitoring-sap/playbook-configure-monitoring-sap.yml.tftpl"
- dst_playbook_file_name = "${var.prefix}-playbook-configure-monitoring-sap.yml"
- playbook_template_vars = local.ansible_monitoring_solution_playbook_vars
- src_inventory_template_name = "monitoring-inventory.tftpl"
- dst_inventory_file_name = "${var.prefix}-monitoring-instance-inventory"
- inventory_template_vars = { "monitoring_host_ip" : local.monitoring_instance.monitoring_host_ip }
-}
diff --git a/solutions/ibm-catalog/sap-s4hana-bw4hana/outputs.tf b/solutions/ibm-catalog/sap-s4hana-bw4hana/outputs.tf
deleted file mode 100644
index 3e46236d..00000000
--- a/solutions/ibm-catalog/sap-s4hana-bw4hana/outputs.tf
+++ /dev/null
@@ -1,49 +0,0 @@
-output "infrastructure_data" {
- description = "PowerVS infrastructure details."
- value = { for k, v in local.powervs_infrastructure[0] : k => v.value }
-}
-
-output "access_host_or_ip" {
- description = "Public IP of Provided Bastion/JumpServer Host."
- value = local.access_host_or_ip
-}
-
-output "powervs_hana_instance_ips" {
- description = "All private IPS of HANA instance."
- value = module.sap_system.pi_hana_instance_ips
-}
-
-output "powervs_hana_instance_management_ip" {
- description = "Management IP of HANA Instance."
- value = module.sap_system.pi_hana_instance_management_ip
-}
-
-output "powervs_netweaver_instance_ips" {
- description = "All private IPs of NetWeaver instance."
- value = module.sap_system.pi_netweaver_instance_ips
-}
-
-output "powervs_netweaver_instance_management_ip" {
- description = "Management IP of NetWeaver instance."
- value = module.sap_system.pi_netweaver_instance_management_ips
-}
-
-output "powervs_lpars_data" {
- description = "All private IPS of PowerVS instances and Jump IP to access the host."
- value = module.sap_system.pi_lpars_data
-}
-
-output "sap_hana_vars" {
- description = "SAP HANA system details."
- value = var.sap_hana_vars
-}
-
-output "sap_solution_vars" {
- description = "SAP NetWeaver system details."
- value = var.sap_solution_vars
-}
-
-output "sap_monitoring_vars" {
- description = "SAP Monitoring Instance details."
- value = merge(var.sap_monitoring_vars, local.powervs_infrastructure[0].monitoring_instance.value)
-}
diff --git a/solutions/ibm-catalog/sap-s4hana-bw4hana/provider.tf b/solutions/ibm-catalog/sap-s4hana-bw4hana/provider.tf
deleted file mode 100644
index 911ae2be..00000000
--- a/solutions/ibm-catalog/sap-s4hana-bw4hana/provider.tf
+++ /dev/null
@@ -1,31 +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"
- }
-}
-
-provider "ibm" {
- 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/ibm-catalog/sap-s4hana-bw4hana/variables.tf b/solutions/ibm-catalog/sap-s4hana-bw4hana/variables.tf
deleted file mode 100644
index 36f3fffe..00000000
--- a/solutions/ibm-catalog/sap-s4hana-bw4hana/variables.tf
+++ /dev/null
@@ -1,310 +0,0 @@
-variable "ibmcloud_api_key" {
- description = "IBM Cloud platform API key needed to deploy IAM enabled resources."
- type = string
- sensitive = true
-}
-
-variable "prerequisite_workspace_id" {
- description = "IBM Cloud Schematics workspace ID of an existing 'Power Virtual Server with VPC landing zone' catalog solution. If you do not yet have an existing deployment, click [here](https://cloud.ibm.com/catalog/architecture/deploy-arch-ibm-pvs-inf-2dd486c7-b317-4aaa-907b-42671485ad96-global?) to create one."
- type = string
-}
-
-variable "powervs_zone" {
- description = "IBM Cloud data center location corresponding to the location used in 'Power Virtual Server with VPC landing zone' pre-requisite deployment."
- type = string
-}
-
-variable "prefix" {
- description = "Unique prefix for resources to be created (e.g., SAP system name). Must be an alphanumeric string with maximum length of 6 characters."
- type = string
- validation {
- condition = length(var.prefix) <= 6 && can(regex("^[A-Za-z0-9]+$", var.prefix))
- error_message = "Prefix must be an alphanumeric string with maximum length of 6 characters."
- }
-}
-
-variable "powervs_sap_network_cidr" {
- description = "Network range for dedicated SAP network. Used for communication between SAP Application servers with SAP HANA Database. E.g., '10.53.0.0/24'"
- type = string
- default = "10.53.0.0/24"
-}
-
-
-#####################################################
-# PowerVS HANA Instance parameters
-#####################################################
-
-variable "powervs_hana_instance_name" {
- description = "PowerVS SAP HANA instance hostname (non FQDN). Will get the form of -. Max length of final hostname must be <= 13 characters."
- type = string
- default = "hana"
-}
-
-variable "powervs_hana_instance_sap_profile_id" {
- description = "PowerVS SAP HANA instance profile to use. Must be one of the supported profiles. See [here](https://cloud.ibm.com/docs/sap?topic=sap-hana-iaas-offerings-profiles-power-vs). File system sizes are automatically calculated. Override automatic calculation by setting values in optional parameter 'powervs_hana_instance_custom_storage_config'."
- type = string
- default = "sh2-4x256"
-}
-
-variable "powervs_hana_instance_custom_storage_config" {
- description = "Custom file systems to be created and attached to PowerVS SAP HANA instance. 'size' is in GB. 'count' specify over how many storage volumes the file system will be striped. 'tier' specifies the storage tier in PowerVS workspace. 'mount' specifies the target mount point on OS."
- type = list(object({
- name = string
- size = string
- count = string
- tier = string
- mount = string
- pool = optional(string)
- }))
- default = [{
- "name" : "",
- "size" : "",
- "count" : "",
- "tier" : "",
- "mount" : ""
- }]
-}
-
-variable "powervs_hana_instance_additional_storage_config" {
- description = "Additional File systems to be created and attached to PowerVS SAP HANA instance. 'size' is in GB. 'count' specify over how many storage volumes the file system will be striped. 'tier' specifies the storage tier in PowerVS workspace. 'mount' specifies the target mount point on OS."
- type = list(object({
- name = string
- size = string
- count = string
- tier = string
- mount = string
- }))
- default = [{
- "name" : "usrsap",
- "size" : "50",
- "count" : "1",
- "tier" : "tier3",
- "mount" : "/usr/sap"
-
- }]
-}
-
-#####################################################
-# PowerVS NetWeaver Instance parameters
-#####################################################
-
-variable "powervs_netweaver_instance_name" {
- description = "PowerVS SAP NetWeaver instance hostname (non FQDN). Will get the form of --. Max length of final hostname must be <= 13 characters."
- type = string
- default = "nw"
-}
-
-variable "powervs_netweaver_cpu_number" {
- description = "Number of CPUs for PowerVS SAP NetWeaver instance."
- type = string
- default = "3"
-}
-
-variable "powervs_netweaver_memory_size" {
- description = "Memory size for PowerVS SAP NetWeaver instance."
- type = string
- default = "32"
-}
-
-variable "powervs_netweaver_instance_storage_config" {
- description = "File systems to be created and attached to PowerVS SAP NetWeaver instance. 'size' is in GB. 'count' specifies over how many storage volumes the file system will be striped. 'tier' specifies the storage tier in PowerVS workspace. 'mount' specifies the target mount point on OS."
- type = list(object({
- name = string
- size = string
- count = string
- tier = string
- mount = string
- pool = optional(string)
- }))
- default = [
- {
- "name" : "usrsap",
- "size" : "50",
- "count" : "1",
- "tier" : "tier3",
- "mount" : "/usr/sap"
- }
- ]
-}
-
-#####################################################
-# OS parameters
-#####################################################
-
-variable "ssh_private_key" {
- description = "Private SSH key (RSA format) used to login to IBM PowerVS instances. Should match to uploaded public SSH key referenced by 'ssh_public_key' which was created previously. The key is temporarily stored and deleted. For more information about SSH keys, see [SSH keys](https://cloud.ibm.com/docs/vpc?topic=vpc-ssh-keys)."
- type = string
- sensitive = true
-}
-
-variable "sap_domain" {
- description = "SAP network domain name."
- type = string
- default = "sap.com"
-}
-
-variable "software_download_directory" {
- description = "Software installation binaries will be downloaded to this directory."
- type = string
- default = "/software"
-}
-
-#####################################################
-# Parameters for Image
-#####################################################
-
-variable "powervs_default_sap_images" {
- description = "Default Red Hat Linux Full Linux subscription images to use for PowerVS SAP HANA and SAP NetWeaver instances. If you're using a byol or a custom RHEL image, additionally specify the optional values for 'powervs_os_registration_username', 'powervs_os_registration_password' and 'ansible_vault_password'"
- type = object({
- rhel_hana_image = string
- rhel_nw_image = string
- })
- default = {
- "rhel_hana_image" : "RHEL9-SP4-SAP",
- "rhel_nw_image" : "RHEL9-SP4-SAP-NETWEAVER"
- }
-}
-
-variable "powervs_os_registration_username" {
- description = "If you're using a byol or a custom RHEL image for SAP HANA and Netweaver you need to provide your OS registration credentials here. Leave empty if you're using an IBM provided subscription (FLS)."
- type = string
- default = ""
-}
-
-variable "powervs_os_registration_password" {
- description = "If you're using a byol or a custom RHEL image for SAP HANA and Netweaver you need to provide your OS registration credentials here. Leave empty if you're using an IBM provided subscription (FLS)."
- type = string
- sensitive = true
- default = ""
-}
-
-#####################################################
-# Parameters for SAP Installation
-#####################################################
-
-variable "sap_solution" {
- description = "SAP Solution to be installed on Power Virtual Server."
- type = string
- validation {
- condition = contains(["s4hana-2023", "s4hana-2022", "s4hana-2021", "s4hana-2020", "bw4hana-2021"], var.sap_solution) ? true : false
- error_message = "Solution value has to be one of 's4hana-2023', 's4hana-2022', 's4hana-2021', 's4hana-2020', 'bw4hana-2021'"
- }
-}
-
-variable "ibmcloud_cos_configuration" {
- description = "Cloud Object Storage instance containing SAP installation files that will be downloaded to NFS share. 'cos_hana_software_path' must contain only binaries required for HANA DB installation. 'cos_solution_software_path' must contain only binaries required for S/4HANA or BW/4HANA installation and must not contain any IMDB files. 'cos_monitoring_software_path' is optional and must contain x86_64 SAPCAR and SAP HANA client binaries required for configuring monitoring instance. The binaries required for installation can be found [here](https://github.com/terraform-ibm-modules/terraform-ibm-powervs-sap/blob/main/solutions/ibm-catalog/sap-s4hana-bw4hana/docs/s4hana23_bw4hana21_binaries.md) If you have an optional stack xml file (maintenance planner), place it under the 'cos_solution_software_path' directory. Avoid inserting '/' at the beginning for 'cos_hana_software_path', 'cos_solution_software_path' and 'cos_monitoring_software_path'."
- type = object({
- cos_region = string
- cos_bucket_name = string
- cos_hana_software_path = string
- cos_solution_software_path = string
- cos_monitoring_software_path = optional(string)
- cos_swpm_mp_stack_file_name = string
- })
- default = {
- "cos_region" : "eu-geo",
- "cos_bucket_name" : "powervs-automation",
- "cos_hana_software_path" : "HANA_DB/rev87",
- "cos_solution_software_path" : "S4HANA_2023",
- "cos_monitoring_software_path" : "HANA_CLIENT/x86_64",
- "cos_swpm_mp_stack_file_name" : ""
- }
-}
-
-variable "ibmcloud_cos_service_credentials" {
- description = "IBM Cloud Object Storage instance service credentials to access the bucket in the instance.[json example of service credential](https://cloud.ibm.com/docs/cloud-object-storage?topic=cloud-object-storage-service-credentials)"
- type = string
- sensitive = true
-}
-
-variable "sap_hana_master_password" {
- description = "SAP HANA master password."
- type = string
- sensitive = true
-
- validation {
- condition = length(var.sap_hana_master_password) >= 8 && length(var.sap_hana_master_password) <= 30 && can(regex("[A-Z]", var.sap_hana_master_password)) && can(regex("[a-z]", var.sap_hana_master_password)) && can(regex("[0-9]", var.sap_hana_master_password)) && !can(regex("[\\\\\"]", var.sap_hana_master_password))
- error_message = "The SAP HANA master password must be 8-30 characters long containing at least one lower character (a-z), one upper character (A-Z) and one digit (0-9), and must not include a backslash (\\) or double quote (\")."
- }
-}
-
-variable "sap_hana_vars" {
- description = "SAP HANA SID and instance number."
- type = object({
- sap_hana_install_sid = string
- sap_hana_install_number = string
- })
- default = {
- "sap_hana_install_sid" : "HDB",
- "sap_hana_install_number" : "02"
- }
- validation {
- condition = can(regex("^[A-Z][A-Z0-9]{2}$", var.sap_hana_vars.sap_hana_install_sid))
- error_message = "The provided sap_hana_vars configuration is invalid. The sap_hana_install_sid value must consist of exactly three alphanumeric characters, all uppercase, and the first character must be a letter."
- }
-
- validation {
- condition = can(regex("^[0-9]{2}$", var.sap_hana_vars.sap_hana_install_number))
- error_message = "The sap_hana_install_number must be a numeric value between 00 and 99. For single-digit numbers, append a leading zero."
- }
-
-}
-
-variable "sap_swpm_master_password" {
- description = "SAP SWPM master password."
- type = string
- sensitive = true
- validation {
- condition = length(var.sap_swpm_master_password) >= 8 && length(var.sap_swpm_master_password) <= 30 && can(regex("[A-Z]", var.sap_swpm_master_password)) && can(regex("[a-z]", var.sap_swpm_master_password)) && can(regex("[0-9]", var.sap_swpm_master_password)) && !can(regex("[\\\\\"]", var.sap_swpm_master_password))
- error_message = "The SAP Software Provisioning Manager master password must be 8-30 characters long containing at least one lower character (a-z), one upper character (A-Z) and one digit (0-9), and must not include a backslash (\\) or double quote (\")."
- }
-}
-
-variable "sap_solution_vars" {
- description = "SAP SID, ASCS and PAS instance numbers and service/protectedwebmethods parameters."
- type = object({
- sap_swpm_sid = string
- sap_swpm_ascs_instance_nr = string
- sap_swpm_pas_instance_nr = string
- sap_swpm_service_protectedwebmethods = string
-
- })
- default = {
- "sap_swpm_sid" : "S4H",
- "sap_swpm_ascs_instance_nr" : "00",
- "sap_swpm_pas_instance_nr" : "01",
- "sap_swpm_service_protectedwebmethods" : "SDEFAULT -GetQueueStatistic -ABAPGetWPTable -EnqGetStatistic -GetProcessList -GetEnvironment -BAPGetSystemWPTable"
- }
- validation {
- condition = var.sap_solution_vars.sap_swpm_ascs_instance_nr != var.sap_solution_vars.sap_swpm_pas_instance_nr
- error_message = "ASCS and PAS instance number must not be same"
- }
-}
-
-variable "ansible_vault_password" {
- description = "Vault password to encrypt SAP installation parameters in the OS. 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
-}
-
-#####################################################
-# Parameters for Monitoring
-#####################################################
-
-variable "sap_monitoring_vars" {
- description = "Configuration details for SAP monitoring dashboard. Takes effect only when a monitoring instance was deployed as part of Power Virtual Server with VPC landing zone deployment. If 'config_override' is true, an existing configuration will be overwritten, 'sap_monitoring_nr' Two-digit incremental number starting with 01 up to 99. This is not a existing SAP ID, but a pure virtual number and 'sap_monitoring_solution_name' is a virtual arbitrary short name to recognize SAP System."
- type = object({
- config_override = bool
- sap_monitoring_nr = string
- sap_monitoring_solution_name = string
- })
- default = {
- "config_override" : false,
- "sap_monitoring_nr" : "01",
- "sap_monitoring_solution_name" : ""
- }
- validation {
- condition = (length(var.sap_monitoring_vars.sap_monitoring_nr) == 2 && tonumber(var.sap_monitoring_vars.sap_monitoring_nr) >= 0 && tonumber(var.sap_monitoring_vars.sap_monitoring_nr) <= 99) || var.sap_monitoring_vars.sap_monitoring_nr == ""
- error_message = "sap_monitoring_nr should be a 2-digit number between 00 and 99. or empty"
- }
-}
diff --git a/solutions/ibm-catalog/sap-s4hana-bw4hana/version.tf b/solutions/ibm-catalog/sap-s4hana-bw4hana/version.tf
deleted file mode 100644
index 47aaa294..00000000
--- a/solutions/ibm-catalog/sap-s4hana-bw4hana/version.tf
+++ /dev/null
@@ -1,13 +0,0 @@
-#####################################################
-# PowerVs SAP Instance Module
-#####################################################
-
-terraform {
- required_version = ">= 1.9.0"
- required_providers {
- ibm = {
- source = "IBM-Cloud/ibm"
- version = "1.82.1"
- }
- }
-}
diff --git a/solutions/sap-ready-to-go/README.md b/solutions/sap-ready-to-go/README.md
deleted file mode 100644
index 7aa24657..00000000
--- a/solutions/sap-ready-to-go/README.md
+++ /dev/null
@@ -1,83 +0,0 @@
-# Power Virtual Server for SAP HANA: 'sap-ready-to-go'
-
-The 'sap-ready-to-go' solution automates the following tasks:
-
-- Creates a new private subnet for SAP communication for the entire landscape.
-- Creates and configures one PowerVS instance for SAP HANA based on best practices.
-- Creates and configures multiple PowerVS instances for SAP NetWeaver based on best practices.
-- Creates and configures one optional PowerVS instance for sharing SAP files between other system instances.
-- Connects all created PowerVS instances to a proxy server specified by IP address or hostname.
-- Optionally connects all created PowerVS instances to an NTP server and DNS forwarder specified by IP address or hostname.
-- Optionally configures a shared NFS directory on all created PowerVS instances.
-- Optionally installs Sysdig agent and configures connection to [IBM Cloud Security and Compliance Center Workload Protection](https://cloud.ibm.com/docs/workload-protection)
-- Post-instance provisioning, Ansible Galaxy collection roles from [IBM](https://galaxy.ansible.com/ui/repo/published/ibm/power_linux_sap/) are executed: `power_linux_sap`.
-- Tested with RHEL8.4,/8.6/8.8/9.2, SLES15-SP3/SP5 images.
-
-
-## Before you begin
-- Power Virtual Server Workspace, images, management subnet, and SSH key must exist. This solution does not create these resources.
-
-## Notes
-- **Does not install any SAP software or solutions.**
-- Filesystem sizes for HANA data and HANA log are **calculated automatically** based on the **memory size**.
-- Custom storage configuration by providing custom volume size, **iops**(tier0, tier1, tier3, tier5k), counts and mount points is supported
-
-
-| Variation | Available on IBM Catalog | Requires Schematics Workspace ID | Creates PowerVS with VPC landing zone | Creates PowerVS HANA Instance | Creates PowerVS NW Instances | Performs PowerVS OS Config | Performs PowerVS SAP Tuning | Install SAP software |
-|:---------------------------------------------------------------------------:|:------------------------:|:--------------------------------:|:-------------------------------------:|:-----------------------------:|:----------------------------:|:--------------------------:|:---------------------------:|:--------------------:|
-| [sap-ready-to-go](./) | N/A | N/A | N/A | 1 | 0 to N | :heavy_check_mark: | :heavy_check_mark: | N/A |
-
-## Architecture Diagram
-
-
-
-### Requirements
-
-| Name | Version |
-|------|---------|
-| [terraform](#requirement\_terraform) | >= 1.9.0 |
-| [ibm](#requirement\_ibm) | 1.82.1 |
-
-### Modules
-
-| Name | Source | Version |
-|------|--------|---------|
-| [sap\_system](#module\_sap\_system) | ../../modules/pi-sap-system-type1 | n/a |
-
-### Resources
-
-No resources.
-
-### Inputs
-
-| Name | Description | Type | Default | Required |
-|------|-------------|------|---------|:--------:|
-| [ansible\_vault\_password](#input\_ansible\_vault\_password) | Vault password to encrypt OS registration parameters. Required only if you bring your own linux license. 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 |
-| [ibmcloud\_api\_key](#input\_ibmcloud\_api\_key) | The IBM Cloud platform API key needed to deploy IAM enabled resources. | `string` | n/a | yes |
-| [powervs\_hana\_instance](#input\_powervs\_hana\_instance) | PowerVS SAP HANA instance hostname (non FQDN) will get the form of -. PowerVS SAP HANA instance profile to use. Must be one of the supported profiles. See [here](https://cloud.ibm.com/docs/sap?topic=sap-hana-iaas-offerings-profiles-power-vs). File system sizes are automatically calculated. Override automatic calculation by setting values in optional 'powervs\_hana\_instance\_custom\_storage\_config' parameter. Additional File systems to be created and attached to PowerVS instance for SAP HANA. 'size' is in GB. 'count' specify over how many storage volumes the file system will be striped. 'tier' specifies the storage tier in PowerVS workspace. 'mount' specifies the target mount point on OS. | object({
name = string
sap_profile_id = string
additional_storage_config = list(object({
name = string
size = string
count = string
tier = string
mount = string
pool = optional(string)
}))
}) | {
"additional_storage_config": [
{
"count": "1",
"mount": "/usr/sap",
"name": "usrsap",
"size": "50",
"tier": "tier3"
}
],
"name": "hana",
"sap_profile_id": "ush1-4x256"
} | no |
-| [powervs\_hana\_instance\_custom\_storage\_config](#input\_powervs\_hana\_instance\_custom\_storage\_config) | Custom file systems to be created and attached to PowerVS SAP HANA instance. 'size' is in GB. 'count' specify over how many storage volumes the file system will be striped. 'tier' specifies the storage tier in PowerVS workspace. 'mount' specifies the target mount point on OS. | list(object({
name = string
size = string
count = string
tier = string
mount = string
pool = optional(string)
})) | [
{
"count": "",
"mount": "",
"name": "",
"size": "",
"tier": ""
}
]
| no |
-| [powervs\_hana\_instance\_image\_id](#input\_powervs\_hana\_instance\_image\_id) | Image ID to be used for PowerVS HANA instance. Run 'ibmcloud pi images' to list available images. | `string` | n/a | yes |
-| [powervs\_instance\_init\_linux](#input\_powervs\_instance\_init\_linux) | Configures a PowerVS linux instance to have internet access by setting proxy on it, updates os and create filesystems using ansible collection [ibm.power\_linux\_sap collection](https://galaxy.ansible.com/ui/repo/published/ibm/power_linux_sap/) where 'bastion\_host\_ip' is public IP of bastion/jump host to access the 'ansible\_host\_or\_ip' private IP of ansible node. This ansible host must have access to the power virtual server instance and ansible host OS must be RHEL distribution. When using a custom image or a byol image, you need to provide os registration credentials and an ansible vault password. | object(
{
enable = bool
bastion_host_ip = string
ansible_host_or_ip = string
ssh_private_key = string
custom_os_registration = optional(object({
username = string
password = string
}))
}
)
| n/a | yes |
-| [powervs\_netweaver\_instance](#input\_powervs\_netweaver\_instance) | PowerVS SAP NetWeaver instance hostname (non FQDN). Will get the form of --. Max length of final hostname must be <= 13 characters.. 'instance\_count' is number of PowerVS SAP NetWeaver instances that should be created. 'size' is in GB. 'count' specify over how many storage volumes the file system will be striped. 'tier' specifies the storage tier in PowerVS workspace. 'mount' specifies the target mount point on OS. | object({
instance_count = number
name = string
processors = string
memory = string
proc_type = string
storage_config = list(object({
name = string
size = string
count = string
tier = string
mount = string
pool = optional(string)
}))
}) | {
"instance_count": "1",
"memory": "32",
"name": "nw",
"proc_type": "shared",
"processors": "3",
"storage_config": [
{
"count": "1",
"mount": "/usr/sap",
"name": "usrsap",
"size": "50",
"tier": "tier3"
}
]
} | no |
-| [powervs\_netweaver\_instance\_image\_id](#input\_powervs\_netweaver\_instance\_image\_id) | Image ID to be used for PowerVS NetWeaver instance. Run 'ibmcloud pi images' to list available images. | `string` | n/a | yes |
-| [powervs\_networks](#input\_powervs\_networks) | Existing list of subnets to be attached to PowerVS instances. The first element will become the primary interface. Run 'ibmcloud pi networks' to list available private subnets. | list(
object({
name = string
id = string
cidr = optional(string)
})
)
| n/a | yes |
-| [powervs\_sap\_network\_cidr](#input\_powervs\_sap\_network\_cidr) | Network range for dedicated SAP network. Used for communication between SAP Application servers with SAP HANA Database. E.g., '10.53.0.0/24' | `string` | n/a | yes |
-| [powervs\_ssh\_public\_key\_name](#input\_powervs\_ssh\_public\_key\_name) | Existing PowerVS SSH Public Key Name. | `string` | n/a | yes |
-| [powervs\_workspace\_guid](#input\_powervs\_workspace\_guid) | PowerVS infrastructure workspace guid. The GUID of the resource instance. | `string` | n/a | yes |
-| [powervs\_zone](#input\_powervs\_zone) | IBM Cloud data center location where IBM PowerVS Workspace exists. | `string` | n/a | yes |
-| [prefix](#input\_prefix) | Unique prefix for resources to be created (e.g., SAP system name). Must be an alphanumeric string with maximum length of 6 characters. | `string` | n/a | yes |
-| [sap\_domain](#input\_sap\_domain) | SAP network domain name. | `string` | `"sap.com"` | no |
-| [sap\_network\_services\_config](#input\_sap\_network\_services\_config) | Configures network services NTP, NFS and DNS on PowerVS instance. Requires 'pi\_instance\_init\_linux' to be specified. | object(
{
squid = object({ enable = bool, squid_server_ip_port = string, no_proxy_hosts = string })
nfs = object({ enable = bool, nfs_server_path = string, nfs_client_path = string, opts = string, fstype = string })
dns = object({ enable = bool, dns_server_ip = string })
ntp = object({ enable = bool, ntp_server_ip = string })
}
)
| {
"dns": {
"dns_server_ip": "",
"enable": false
},
"nfs": {
"enable": false,
"fstype": "",
"nfs_client_path": "",
"nfs_server_path": "",
"opts": ""
},
"ntp": {
"enable": false,
"ntp_server_ip": ""
},
"squid": {
"enable": false,
"no_proxy_hosts": "",
"squid_server_ip_port": ""
}
} | no |
-| [scc\_wp\_instance](#input\_scc\_wp\_instance) | SCC Workload Protection instance to connect to. Set enable to false to not use it. | object({
enable = bool
guid = string,
access_key = string,
api_endpoint = string,
ingestion_endpoint = string
}) | {
"access_key": "",
"api_endpoint": "",
"enable": false,
"guid": "",
"ingestion_endpoint": ""
} | no |
-
-### Outputs
-
-| Name | Description |
-|------|-------------|
-| [access\_host\_or\_ip](#output\_access\_host\_or\_ip) | Public IP of Provided Bastion/JumpServer Host |
-| [powervs\_hana\_instance\_ips](#output\_powervs\_hana\_instance\_ips) | All private IPS of HANA instance |
-| [powervs\_hana\_instance\_management\_ip](#output\_powervs\_hana\_instance\_management\_ip) | Management IP of HANA Instance |
-| [powervs\_lpars\_data](#output\_powervs\_lpars\_data) | All private IPS of PowerVS instances and Jump IP to access the host. |
-| [powervs\_netweaver\_instance\_ips](#output\_powervs\_netweaver\_instance\_ips) | All private IPS of NetWeaver instances |
-| [powervs\_netweaver\_instance\_management\_ips](#output\_powervs\_netweaver\_instance\_management\_ips) | Management IPS of NetWeaver instances |
-
diff --git a/solutions/sap-ready-to-go/input.tfvars b/solutions/sap-ready-to-go/input.tfvars
deleted file mode 100644
index b917dd6d..00000000
--- a/solutions/sap-ready-to-go/input.tfvars
+++ /dev/null
@@ -1,34 +0,0 @@
-ibmcloud_api_key = ""
-powervs_zone = "" #syd04
-prefix = ""
-powervs_workspace_guid = ""
-powervs_ssh_public_key_name = ""
-powervs_networks = "" #[{ "cidr" : "10.61.0.0/24", "id" : "c39dadb6-830c-4567-8b36-d176f8fe3aab", "name" : "mgmt_net" }, { "cidr" : "10.62.0.0/24", "id" : "340bde12-5e32-48ee-8624-058d0b80d990", "name" : "bkp_net" }]
-powervs_sap_network_cidr = "" #10.78.0.1/24
-powervs_hana_instance_image_id = "" # specify powervs_instance_init_linux.custom_os_registration if using byol image
-powervs_netweaver_instance_image_id = ""
-powervs_instance_init_linux = {
- enable = "" #true or false
- bastion_host_ip = ""
- ansible_host_or_ip = ""
- # custom_os_registration = {
- # username = ""
- # password = ""
- # }
- ssh_private_key = <<-EOF
-EOF
-}
-sap_network_services_config = {
- squid = { enable = false, squid_server_ip_port = "10.30.40.4:3128", no_proxy_hosts = "161.0.0.0/8,10.0.0.0/8" }
- nfs = { enable = false, nfs_server_path = "10.30.40.4:/nfs", nfs_client_path = "/nfs", opts = "sec=sys,nfsvers=4.1,nofail", fstype = "nfs4" }
- dns = { enable = false, dns_server_ip = "10.30.40.4" }
- ntp = { enable = false, ntp_server_ip = "10.30.40.4" }
-}
-
-scc_wp_instance = {
- enable = false
- guid = "",
- access_key = "",
- api_endpoint = "",
- ingestion_endpoint = "",
-}
diff --git a/solutions/sap-ready-to-go/main.tf b/solutions/sap-ready-to-go/main.tf
deleted file mode 100644
index ad73bd36..00000000
--- a/solutions/sap-ready-to-go/main.tf
+++ /dev/null
@@ -1,30 +0,0 @@
-
-#####################################################
-# Deploy SAP system
-# 1 HANA instance
-# 0:N NetWeaver Instance
-#####################################################
-
-locals {
- powervs_hana_instance = merge(var.powervs_hana_instance, { image_id = var.powervs_hana_instance_image_id })
- powervs_netweaver_instance = merge(var.powervs_netweaver_instance, { image_id = var.powervs_netweaver_instance_image_id })
-}
-
-module "sap_system" {
- source = "../../modules/pi-sap-system-type1"
-
- prefix = var.prefix
- pi_workspace_guid = var.powervs_workspace_guid
- pi_region = var.powervs_zone
- pi_ssh_public_key_name = var.powervs_ssh_public_key_name
- pi_networks = var.powervs_networks
- pi_sap_network_cidr = var.powervs_sap_network_cidr
- pi_hana_instance = local.powervs_hana_instance
- pi_hana_instance_custom_storage_config = var.powervs_hana_instance_custom_storage_config
- pi_netweaver_instance = local.powervs_netweaver_instance
- pi_instance_init_linux = var.powervs_instance_init_linux
- sap_network_services_config = var.sap_network_services_config
- sap_domain = var.sap_domain
- ansible_vault_password = var.ansible_vault_password
- scc_wp_instance = var.scc_wp_instance
-}
diff --git a/solutions/sap-ready-to-go/outputs.tf b/solutions/sap-ready-to-go/outputs.tf
deleted file mode 100644
index 0170baa1..00000000
--- a/solutions/sap-ready-to-go/outputs.tf
+++ /dev/null
@@ -1,29 +0,0 @@
-output "access_host_or_ip" {
- description = "Public IP of Provided Bastion/JumpServer Host"
- value = nonsensitive(var.powervs_instance_init_linux.bastion_host_ip)
-}
-
-output "powervs_hana_instance_ips" {
- description = "All private IPS of HANA instance"
- value = module.sap_system.pi_hana_instance_ips
-}
-
-output "powervs_hana_instance_management_ip" {
- description = "Management IP of HANA Instance"
- value = module.sap_system.pi_hana_instance_management_ip
-}
-
-output "powervs_netweaver_instance_ips" {
- description = "All private IPS of NetWeaver instances"
- value = module.sap_system.pi_netweaver_instance_ips
-}
-
-output "powervs_netweaver_instance_management_ips" {
- description = "Management IPS of NetWeaver instances"
- value = module.sap_system.pi_netweaver_instance_management_ips
-}
-
-output "powervs_lpars_data" {
- description = "All private IPS of PowerVS instances and Jump IP to access the host."
- value = module.sap_system.pi_lpars_data
-}
diff --git a/solutions/sap-ready-to-go/provider.tf b/solutions/sap-ready-to-go/provider.tf
deleted file mode 100644
index 911ae2be..00000000
--- a/solutions/sap-ready-to-go/provider.tf
+++ /dev/null
@@ -1,31 +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"
- }
-}
-
-provider "ibm" {
- 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/sap-ready-to-go/variables.tf b/solutions/sap-ready-to-go/variables.tf
deleted file mode 100644
index a41cbae2..00000000
--- a/solutions/sap-ready-to-go/variables.tf
+++ /dev/null
@@ -1,217 +0,0 @@
-variable "ibmcloud_api_key" {
- description = "The IBM Cloud platform API key needed to deploy IAM enabled resources."
- type = string
- sensitive = true
-}
-
-variable "powervs_zone" {
- description = "IBM Cloud data center location where IBM PowerVS Workspace exists."
- type = string
-}
-
-variable "prefix" {
- description = "Unique prefix for resources to be created (e.g., SAP system name). Must be an alphanumeric string with maximum length of 6 characters."
- type = string
- validation {
- condition = length(var.prefix) <= 6 && can(regex("^[A-Za-z0-9]+$", var.prefix))
- error_message = "Prefix must be an alphanumeric string with maximum length of 6 characters."
- }
-}
-
-variable "powervs_workspace_guid" {
- description = "PowerVS infrastructure workspace guid. The GUID of the resource instance."
- type = string
-}
-
-variable "powervs_ssh_public_key_name" {
- description = "Existing PowerVS SSH Public Key Name."
- type = string
-}
-
-variable "powervs_networks" {
- description = "Existing list of subnets to be attached to PowerVS instances. The first element will become the primary interface. Run 'ibmcloud pi networks' to list available private subnets."
- type = list(
- object({
- name = string
- id = string
- cidr = optional(string)
- })
- )
-}
-
-variable "powervs_sap_network_cidr" {
- description = "Network range for dedicated SAP network. Used for communication between SAP Application servers with SAP HANA Database. E.g., '10.53.0.0/24'"
- type = string
-}
-
-
-#####################################################
-# PowerVS HANA Instance parameters
-#####################################################
-
-variable "powervs_hana_instance_image_id" {
- description = "Image ID to be used for PowerVS HANA instance. Run 'ibmcloud pi images' to list available images."
- type = string
-}
-
-variable "powervs_hana_instance" {
- description = "PowerVS SAP HANA instance hostname (non FQDN) will get the form of -. PowerVS SAP HANA instance profile to use. Must be one of the supported profiles. See [here](https://cloud.ibm.com/docs/sap?topic=sap-hana-iaas-offerings-profiles-power-vs). File system sizes are automatically calculated. Override automatic calculation by setting values in optional 'powervs_hana_instance_custom_storage_config' parameter. Additional File systems to be created and attached to PowerVS instance for SAP HANA. 'size' is in GB. 'count' specify over how many storage volumes the file system will be striped. 'tier' specifies the storage tier in PowerVS workspace. 'mount' specifies the target mount point on OS."
- type = object({
- name = string
- sap_profile_id = string
- additional_storage_config = list(object({
- name = string
- size = string
- count = string
- tier = string
- mount = string
- pool = optional(string)
- }))
- })
-
- default = {
- "name" : "hana",
- "sap_profile_id" : "ush1-4x256",
- "additional_storage_config" : [{
- "name" : "usrsap",
- "size" : "50",
- "count" : "1",
- "tier" : "tier3",
- "mount" : "/usr/sap"
- }]
- }
-}
-
-variable "powervs_hana_instance_custom_storage_config" {
- description = "Custom file systems to be created and attached to PowerVS SAP HANA instance. 'size' is in GB. 'count' specify over how many storage volumes the file system will be striped. 'tier' specifies the storage tier in PowerVS workspace. 'mount' specifies the target mount point on OS."
- type = list(object({
- name = string
- size = string
- count = string
- tier = string
- mount = string
- pool = optional(string)
- }))
-
- default = [{
- "name" : "",
- "size" : "",
- "count" : "",
- "tier" : "",
- "mount" : ""
- }]
-}
-
-#####################################################
-# PowerVS NetWeaver Instance parameters
-#####################################################
-
-variable "powervs_netweaver_instance_image_id" {
- description = "Image ID to be used for PowerVS NetWeaver instance. Run 'ibmcloud pi images' to list available images."
- type = string
-}
-
-variable "powervs_netweaver_instance" {
- description = "PowerVS SAP NetWeaver instance hostname (non FQDN). Will get the form of --. Max length of final hostname must be <= 13 characters.. 'instance_count' is number of PowerVS SAP NetWeaver instances that should be created. 'size' is in GB. 'count' specify over how many storage volumes the file system will be striped. 'tier' specifies the storage tier in PowerVS workspace. 'mount' specifies the target mount point on OS. "
- type = object({
- instance_count = number
- name = string
- processors = string
- memory = string
- proc_type = string
- storage_config = list(object({
- name = string
- size = string
- count = string
- tier = string
- mount = string
- pool = optional(string)
- }))
- })
-
- default = {
- "instance_count" : "1",
- "name" : "nw",
- "processors" : "3",
- "memory" : "32",
- "proc_type" : "shared",
- "storage_config" : [{
- "name" : "usrsap",
- "size" : "50",
- "count" : "1",
- "tier" : "tier3",
- "mount" : "/usr/sap"
- }]
- }
-}
-
-#####################################################
-# OS parameters
-#####################################################
-
-variable "powervs_instance_init_linux" {
- description = "Configures a PowerVS linux instance to have internet access by setting proxy on it, updates os and create filesystems using ansible collection [ibm.power_linux_sap collection](https://galaxy.ansible.com/ui/repo/published/ibm/power_linux_sap/) where 'bastion_host_ip' is public IP of bastion/jump host to access the 'ansible_host_or_ip' private IP of ansible node. This ansible host must have access to the power virtual server instance and ansible host OS must be RHEL distribution. When using a custom image or a byol image, you need to provide os registration credentials and an ansible vault password."
- sensitive = true
- type = object(
- {
- enable = bool
- bastion_host_ip = string
- ansible_host_or_ip = string
- ssh_private_key = string
- custom_os_registration = optional(object({
- username = string
- password = string
- }))
- }
- )
-}
-
-variable "ansible_vault_password" {
- description = "Vault password to encrypt OS registration parameters. Required only if you bring your own linux license. 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
-}
-
-variable "sap_network_services_config" {
- description = "Configures network services NTP, NFS and DNS on PowerVS instance. Requires 'pi_instance_init_linux' to be specified."
- type = object(
- {
- squid = object({ enable = bool, squid_server_ip_port = string, no_proxy_hosts = string })
- nfs = object({ enable = bool, nfs_server_path = string, nfs_client_path = string, opts = string, fstype = string })
- dns = object({ enable = bool, dns_server_ip = string })
- ntp = object({ enable = bool, ntp_server_ip = string })
- }
- )
-
- default = {
- squid = { enable = false, squid_server_ip_port = "", no_proxy_hosts = "" }
- nfs = { enable = false, nfs_server_path = "", nfs_client_path = "", opts = "", fstype = "" }
- dns = { enable = false, dns_server_ip = "" }
- ntp = { enable = false, ntp_server_ip = "" }
- }
-}
-
-variable "sap_domain" {
- description = "SAP network domain name."
- type = string
- default = "sap.com"
-}
-
-variable "scc_wp_instance" {
- description = "SCC Workload Protection instance to connect to. Set enable to false to not use it."
- type = object({
- enable = bool
- guid = string,
- access_key = string,
- api_endpoint = string,
- ingestion_endpoint = string
- })
- default = {
- enable = false
- guid = "",
- access_key = "",
- api_endpoint = "",
- ingestion_endpoint = ""
- }
-}
diff --git a/solutions/sap-ready-to-go/version.tf b/solutions/sap-ready-to-go/version.tf
deleted file mode 100644
index 47aaa294..00000000
--- a/solutions/sap-ready-to-go/version.tf
+++ /dev/null
@@ -1,13 +0,0 @@
-#####################################################
-# PowerVs SAP Instance Module
-#####################################################
-
-terraform {
- required_version = ">= 1.9.0"
- required_providers {
- ibm = {
- source = "IBM-Cloud/ibm"
- version = "1.82.1"
- }
- }
-}
diff --git a/tests/go.mod b/tests/go.mod
index e089e58b..d040f696 100644
--- a/tests/go.mod
+++ b/tests/go.mod
@@ -2,22 +2,22 @@ module github.com/terraform-ibm-modules/terraform-ibm-powervs-sap
go 1.24.0
-toolchain go1.25.1
+toolchain go1.25.2
require (
- github.com/gruntwork-io/terratest v0.50.0
+ github.com/gruntwork-io/terratest v0.51.0
github.com/stretchr/testify v1.11.1
- github.com/terraform-ibm-modules/ibmcloud-terratest-wrapper v1.60.6
+ github.com/terraform-ibm-modules/ibmcloud-terratest-wrapper v1.60.12
)
require (
dario.cat/mergo v1.0.0 // indirect
github.com/IBM-Cloud/bluemix-go v0.0.0-20240719075425-078fcb3a55be // indirect
- github.com/IBM-Cloud/power-go-client v1.12.0 // indirect
- github.com/IBM/cloud-databases-go-sdk v0.8.0 // indirect
+ github.com/IBM-Cloud/power-go-client v1.13.0 // indirect
+ github.com/IBM/cloud-databases-go-sdk v0.8.1 // indirect
github.com/IBM/go-sdk-core/v5 v5.21.0 // indirect
- github.com/IBM/platform-services-go-sdk v0.86.1 // indirect
- github.com/IBM/project-go-sdk v0.3.6 // indirect
+ github.com/IBM/platform-services-go-sdk v0.89.0 // indirect
+ github.com/IBM/project-go-sdk v0.3.9 // indirect
github.com/IBM/schematics-go-sdk v0.4.0 // indirect
github.com/IBM/vpc-go-sdk v1.0.2 // indirect
github.com/Microsoft/go-winio v0.6.2 // indirect
@@ -34,22 +34,23 @@ require (
github.com/ghodss/yaml v1.0.0 // indirect
github.com/go-git/gcfg v1.5.1-0.20230307220236-3a3c6141e376 // indirect
github.com/go-git/go-billy/v5 v5.6.2 // indirect
- github.com/go-git/go-git/v5 v5.16.2 // indirect
+ github.com/go-git/go-git/v5 v5.16.3 // indirect
github.com/go-logr/logr v1.4.2 // indirect
github.com/go-logr/stdr v1.2.2 // indirect
github.com/go-openapi/analysis v0.23.0 // indirect
- github.com/go-openapi/errors v0.22.2 // indirect
+ github.com/go-openapi/errors v0.22.3 // indirect
github.com/go-openapi/jsonpointer v0.21.1 // indirect
github.com/go-openapi/jsonreference v0.21.0 // indirect
github.com/go-openapi/loads v0.22.0 // indirect
github.com/go-openapi/runtime v0.28.0 // indirect
github.com/go-openapi/spec v0.21.0 // indirect
- github.com/go-openapi/strfmt v0.23.0 // indirect
+ github.com/go-openapi/strfmt v0.24.0 // indirect
github.com/go-openapi/swag v0.23.1 // indirect
github.com/go-openapi/validate v0.24.0 // indirect
github.com/go-playground/locales v0.14.1 // indirect
github.com/go-playground/universal-translator v0.18.1 // indirect
github.com/go-playground/validator/v10 v10.26.0 // indirect
+ github.com/go-viper/mapstructure/v2 v2.4.0 // indirect
github.com/golang/groupcache v0.0.0-20241129210726-2c02b8208cf8 // indirect
github.com/google/go-cmp v0.7.0 // indirect
github.com/google/uuid v1.6.0 // indirect
@@ -61,7 +62,7 @@ require (
github.com/hashicorp/go-safetemp v1.0.0 // indirect
github.com/hashicorp/go-version v1.7.0 // indirect
github.com/hashicorp/hcl/v2 v2.22.0 // indirect
- github.com/hashicorp/terraform-json v0.26.0 // indirect
+ github.com/hashicorp/terraform-json v0.27.2 // indirect
github.com/jbenet/go-context v0.0.0-20150711004518-d14ea06fba99 // indirect
github.com/jinzhu/copier v0.4.0 // indirect
github.com/josharian/intern v1.0.0 // indirect
@@ -73,7 +74,6 @@ require (
github.com/mitchellh/go-homedir v1.1.0 // indirect
github.com/mitchellh/go-testing-interface v1.14.1 // indirect
github.com/mitchellh/go-wordwrap v1.0.1 // indirect
- github.com/mitchellh/mapstructure v1.5.0 // indirect
github.com/oklog/ulid v1.3.1 // indirect
github.com/opentracing/opentracing-go v1.2.0 // indirect
github.com/pjbgf/sha1cd v0.3.2 // indirect
@@ -84,21 +84,22 @@ require (
github.com/tmccombs/hcl2json v0.6.4 // indirect
github.com/ulikunitz/xz v0.5.11 // indirect
github.com/xanzy/ssh-agent v0.3.3 // indirect
- github.com/zclconf/go-cty v1.16.3 // indirect
- go.mongodb.org/mongo-driver v1.17.3 // indirect
+ github.com/zclconf/go-cty v1.16.4 // indirect
+ go.mongodb.org/mongo-driver v1.17.4 // indirect
go.opentelemetry.io/auto/sdk v1.1.0 // indirect
go.opentelemetry.io/otel v1.35.0 // indirect
go.opentelemetry.io/otel/metric v1.35.0 // indirect
go.opentelemetry.io/otel/trace v1.35.0 // indirect
- golang.org/x/crypto v0.41.0 // indirect
- golang.org/x/mod v0.26.0 // indirect
- golang.org/x/net v0.42.0 // indirect
+ go.yaml.in/yaml/v2 v2.4.2 // indirect
+ golang.org/x/crypto v0.43.0 // indirect
+ golang.org/x/mod v0.28.0 // indirect
+ golang.org/x/net v0.45.0 // indirect
golang.org/x/sync v0.17.0 // indirect
- golang.org/x/sys v0.35.0 // indirect
- golang.org/x/text v0.28.0 // indirect
- golang.org/x/tools v0.35.0 // indirect
+ golang.org/x/sys v0.37.0 // indirect
+ golang.org/x/text v0.30.0 // indirect
+ golang.org/x/tools v0.37.0 // indirect
gopkg.in/warnings.v0 v0.1.2 // indirect
gopkg.in/yaml.v2 v2.4.0 // indirect
gopkg.in/yaml.v3 v3.0.1 // indirect
- sigs.k8s.io/yaml v1.4.0 // indirect
+ sigs.k8s.io/yaml v1.6.0 // indirect
)
diff --git a/tests/go.sum b/tests/go.sum
index b0b26b3c..87a27e0a 100644
--- a/tests/go.sum
+++ b/tests/go.sum
@@ -2,17 +2,17 @@ dario.cat/mergo v1.0.0 h1:AGCNq9Evsj31mOgNPcLyXc+4PNABt905YmuqPYYpBWk=
dario.cat/mergo v1.0.0/go.mod h1:uNxQE+84aUszobStD9th8a29P2fMDhsBdgRYvZOxGmk=
github.com/IBM-Cloud/bluemix-go v0.0.0-20240719075425-078fcb3a55be h1:USOcBHkYQ4o/ccoEvoHinrba8NQthLJpFXnAoBY+MI4=
github.com/IBM-Cloud/bluemix-go v0.0.0-20240719075425-078fcb3a55be/go.mod h1:/7hMjdZA6fEpd/dQAOEABxKEwN0t72P3PlpEDu0Y7bE=
-github.com/IBM-Cloud/power-go-client v1.12.0 h1:tF9Mq5GLYHebpzQT6IYB89lIxEST1E9teuchjxSAaw0=
-github.com/IBM-Cloud/power-go-client v1.12.0/go.mod h1:SpTK1ttW8bfMNUVQS8qOEuWn2KOkzaCLyzfze8MG1JE=
-github.com/IBM/cloud-databases-go-sdk v0.8.0 h1:uMFqhnc/roVTzfCaUsJ23eaHKjChhGpM1F7Mpxik0bo=
-github.com/IBM/cloud-databases-go-sdk v0.8.0/go.mod h1:JYucI1PdwqbAd8XGdDAchxzxRP7bxOh1zUnseovHKsc=
+github.com/IBM-Cloud/power-go-client v1.13.0 h1:TqxPlkJe0VkNdV9hYOD5NRepxEFhhyKXWXfg22x2zhU=
+github.com/IBM-Cloud/power-go-client v1.13.0/go.mod h1:SpTK1ttW8bfMNUVQS8qOEuWn2KOkzaCLyzfze8MG1JE=
+github.com/IBM/cloud-databases-go-sdk v0.8.1 h1:ULQ5L8V/9z79/qS185LqbIK2LD4kMtk3Hdhp4lFMVcw=
+github.com/IBM/cloud-databases-go-sdk v0.8.1/go.mod h1:JYucI1PdwqbAd8XGdDAchxzxRP7bxOh1zUnseovHKsc=
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.21.0 h1:DUnYhvC4SoC8T84rx5omnhY3+xcQg/Whyoa3mDPIMkk=
github.com/IBM/go-sdk-core/v5 v5.21.0/go.mod h1:Q3BYO6iDA2zweQPDGbNTtqft5tDcEpm6RTuqMlPcvbw=
-github.com/IBM/platform-services-go-sdk v0.86.1 h1:ngBpaXvUF3gmLvbU1Z4lX1wowOSYgGoKBEBaR/urt30=
-github.com/IBM/platform-services-go-sdk v0.86.1/go.mod h1:aGD045m6I8pfcB77wft8w2cHqWOJjcM3YSSV55BX0Js=
-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/platform-services-go-sdk v0.89.0 h1:fIvKR1bQchPoMUXQf69gaRKak/giVAkRDISiAX8TlE8=
+github.com/IBM/platform-services-go-sdk v0.89.0/go.mod h1:aGD045m6I8pfcB77wft8w2cHqWOJjcM3YSSV55BX0Js=
+github.com/IBM/project-go-sdk v0.3.9 h1:D/UfMMn+vMQyvYf9EfocV6HrD3HcVpeIVoUSjNKuROo=
+github.com/IBM/project-go-sdk v0.3.9/go.mod h1:FOJM9ihQV3EEAY6YigcWiTNfVCThtdY8bLC/nhQHFvo=
github.com/IBM/schematics-go-sdk v0.4.0 h1:x01f/tPquYJYLQzJLGuxWfCbV/EdSMXRikOceNy/JLM=
github.com/IBM/schematics-go-sdk v0.4.0/go.mod h1:Xe7R7xgwmXBHu09w2CbBe8lkWZaYxNQo19bS4dpLrUA=
github.com/IBM/vpc-go-sdk v1.0.2 h1:WhI1Cb8atA8glUdFg0SEUh9u8afjnKHxZAj9onQBi04=
@@ -70,8 +70,8 @@ github.com/go-git/go-billy/v5 v5.6.2 h1:6Q86EsPXMa7c3YZ3aLAQsMA0VlWmy43r6FHqa/UN
github.com/go-git/go-billy/v5 v5.6.2/go.mod h1:rcFC2rAsp/erv7CMz9GczHcuD0D32fWzH+MJAU+jaUU=
github.com/go-git/go-git-fixtures/v4 v4.3.2-0.20231010084843-55a94097c399 h1:eMje31YglSBqCdIqdhKBW8lokaMrL3uTkpGYlE2OOT4=
github.com/go-git/go-git-fixtures/v4 v4.3.2-0.20231010084843-55a94097c399/go.mod h1:1OCfN199q1Jm3HZlxleg+Dw/mwps2Wbk9frAWm+4FII=
-github.com/go-git/go-git/v5 v5.16.2 h1:fT6ZIOjE5iEnkzKyxTHK1W4HGAsPhqEqiSAssSO77hM=
-github.com/go-git/go-git/v5 v5.16.2/go.mod h1:4Ge4alE/5gPs30F2H1esi2gPd69R0C39lolkucHBOp8=
+github.com/go-git/go-git/v5 v5.16.3 h1:Z8BtvxZ09bYm/yYNgPKCzgWtaRqDTgIKRgIRHBfU6Z8=
+github.com/go-git/go-git/v5 v5.16.3/go.mod h1:4Ge4alE/5gPs30F2H1esi2gPd69R0C39lolkucHBOp8=
github.com/go-logr/logr v1.2.2/go.mod h1:jdQByPbusPIv2/zmleS9BjJVeZ6kBagPoEUsqbVz/1A=
github.com/go-logr/logr v1.2.3/go.mod h1:jdQByPbusPIv2/zmleS9BjJVeZ6kBagPoEUsqbVz/1A=
github.com/go-logr/logr v1.2.4/go.mod h1:jdQByPbusPIv2/zmleS9BjJVeZ6kBagPoEUsqbVz/1A=
@@ -84,8 +84,8 @@ github.com/go-openapi/analysis v0.23.0 h1:aGday7OWupfMs+LbmLZG4k0MYXIANxcuBTYUC0
github.com/go-openapi/analysis v0.23.0/go.mod h1:9mz9ZWaSlV8TvjQHLl2mUW2PbZtemkE8yA5v22ohupo=
github.com/go-openapi/errors v0.19.8/go.mod h1:cM//ZKUKyO06HSwqAelJ5NsEMMcpa6VpXe8DOa1Mi1M=
github.com/go-openapi/errors v0.20.3/go.mod h1:Z3FlZ4I8jEGxjUK+bugx3on2mIAk4txuAOhlsB1FSgk=
-github.com/go-openapi/errors v0.22.2 h1:rdxhzcBUazEcGccKqbY1Y7NS8FDcMyIRr0934jrYnZg=
-github.com/go-openapi/errors v0.22.2/go.mod h1:+n/5UdIqdVnLIJ6Q9Se8HNGUXYaY6CN8ImWzfi/Gzp0=
+github.com/go-openapi/errors v0.22.3 h1:k6Hxa5Jg1TUyZnOwV2Lh81j8ayNw5VVYLvKrp4zFKFs=
+github.com/go-openapi/errors v0.22.3/go.mod h1:+WvbaBBULWCOna//9B9TbLNGSFOfF8lY9dw4hGiEiKQ=
github.com/go-openapi/jsonpointer v0.21.1 h1:whnzv/pNXtK2FbX/W9yJfRmE2gsmkfahjMKB0fZvcic=
github.com/go-openapi/jsonpointer v0.21.1/go.mod h1:50I1STOfbY1ycR8jGz8DaMeLCdXiI6aDteEdRNNzpdk=
github.com/go-openapi/jsonreference v0.21.0 h1:Rs+Y7hSXT83Jacb7kFyjn4ijOuVGSvOdF2+tg1TRrwQ=
@@ -98,8 +98,8 @@ github.com/go-openapi/spec v0.21.0 h1:LTVzPc3p/RzRnkQqLRndbAzjY0d0BCL72A6j3CdL9Z
github.com/go-openapi/spec v0.21.0/go.mod h1:78u6VdPw81XU44qEWGhtr982gJ5BWg2c0I5XwVMotYk=
github.com/go-openapi/strfmt v0.21.1/go.mod h1:I/XVKeLc5+MM5oPNN7P6urMOpuLXEcNrCX/rPGuWb0k=
github.com/go-openapi/strfmt v0.21.7/go.mod h1:adeGTkxE44sPyLk0JV235VQAO/ZXUr8KAzYjclFs3ew=
-github.com/go-openapi/strfmt v0.23.0 h1:nlUS6BCqcnAk0pyhi9Y+kdDVZdZMHfEKQiS4HaMgO/c=
-github.com/go-openapi/strfmt v0.23.0/go.mod h1:NrtIpfKtWIygRkKVsxh7XQMDQW5HKQl6S5ik2elW+K4=
+github.com/go-openapi/strfmt v0.24.0 h1:dDsopqbI3wrrlIzeXRbqMihRNnjzGC+ez4NQaAAJLuc=
+github.com/go-openapi/strfmt v0.24.0/go.mod h1:Lnn1Bk9rZjXxU9VMADbEEOo7D7CDyKGLsSKekhFr7s4=
github.com/go-openapi/swag v0.23.1 h1:lpsStH0n2ittzTnbaSloVZLuB5+fvSY/+hnagBjSNZU=
github.com/go-openapi/swag v0.23.1/go.mod h1:STZs8TbRvEQQKUA+JZNAm3EWlgaOBGpyFDqQnDHMef0=
github.com/go-openapi/validate v0.24.0 h1:LdfDKwNbpB6Vn40xhTdNZAnfLECL81w+VX3BumrGD58=
@@ -119,6 +119,8 @@ github.com/go-task/slim-sprig v0.0.0-20210107165309-348f09dbbbc0/go.mod h1:fyg78
github.com/go-task/slim-sprig v0.0.0-20230315185526-52ccab3ef572/go.mod h1:9Pwr4B2jHnOSGXyyzV8ROjYa2ojvAY6HCGYYfMoC3Ls=
github.com/go-test/deep v1.0.7 h1:/VSMRlnY/JSyqxQUzQLKVMAskpY/NZKFA5j2P+0pP2M=
github.com/go-test/deep v1.0.7/go.mod h1:QV8Hv/iy04NyLBxAdO9njL0iVPN1S4d/A3NVv1V36o8=
+github.com/go-viper/mapstructure/v2 v2.4.0 h1:EBsztssimR/CONLSZZ04E8qAkxNYq4Qp9LvH92wZUgs=
+github.com/go-viper/mapstructure/v2 v2.4.0/go.mod h1:oJDH3BJKyqBA2TXFhDsKDGDTlndYOZ6rGS0BRZIxGhM=
github.com/golang/groupcache v0.0.0-20241129210726-2c02b8208cf8 h1:f+oWsMOmNPc8JmEHVZIycC7hBoQxHH9pNKQORJNozsQ=
github.com/golang/groupcache v0.0.0-20241129210726-2c02b8208cf8/go.mod h1:wcDNUvekVysuuOpQKo3191zZyTpiI6se1N1ULghS0sw=
github.com/golang/protobuf v1.2.0/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U=
@@ -147,8 +149,8 @@ github.com/google/uuid v1.1.1/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+
github.com/google/uuid v1.3.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo=
github.com/google/uuid v1.6.0 h1:NIvaJDMOsjHA8n1jAhLSgzrAzy1Hgr+hNrb57e+94F0=
github.com/google/uuid v1.6.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo=
-github.com/gruntwork-io/terratest v0.50.0 h1:AbBJ7IRCpLZ9H4HBrjeoWESITv8nLjN6/f1riMNcAsw=
-github.com/gruntwork-io/terratest v0.50.0/go.mod h1:see0lbKvAqz6rvzvN2wyfuFQQG4PWcAb2yHulF6B2q4=
+github.com/gruntwork-io/terratest v0.51.0 h1:RCXlCwWlHqhUoxgF6n3hvywvbvrsTXqoqt34BrnLekw=
+github.com/gruntwork-io/terratest v0.51.0/go.mod h1:evZHXb8VWDgv5O5zEEwfkwMhkx9I53QR/RB11cISrpg=
github.com/hashicorp/errwrap v1.0.0/go.mod h1:YH+1FKiLXxHSkmPseP+kNlulaMuP3n2brvKWEqk/Jc4=
github.com/hashicorp/errwrap v1.1.0 h1:OxrOeh75EUXMY8TBjag2fzXGZ40LB6IKw45YeGUDY2I=
github.com/hashicorp/errwrap v1.1.0/go.mod h1:YH+1FKiLXxHSkmPseP+kNlulaMuP3n2brvKWEqk/Jc4=
@@ -171,8 +173,8 @@ github.com/hashicorp/go-version v1.7.0 h1:5tqGy27NaOTB8yJKUZELlFAS/LTKJkrmONwQKe
github.com/hashicorp/go-version v1.7.0/go.mod h1:fltr4n8CU8Ke44wwGCBoEymUuxUHl09ZGVZPK5anwXA=
github.com/hashicorp/hcl/v2 v2.22.0 h1:hkZ3nCtqeJsDhPRFz5EA9iwcG1hNWGePOTw6oyul12M=
github.com/hashicorp/hcl/v2 v2.22.0/go.mod h1:62ZYHrXgPoX8xBnzl8QzbWq4dyDsDtfCRgIq1rbJEvA=
-github.com/hashicorp/terraform-json v0.26.0 h1:+BnJavhRH+oyNWPnfzrfQwVWCZBFMvjdiH2Vi38Udz4=
-github.com/hashicorp/terraform-json v0.26.0/go.mod h1:eyWCeC3nrZamyrKLFnrvwpc3LQPIJsx8hWHQ/nu2/v4=
+github.com/hashicorp/terraform-json v0.27.2 h1:BwGuzM6iUPqf9JYM/Z4AF1OJ5VVJEEzoKST/tRDBJKU=
+github.com/hashicorp/terraform-json v0.27.2/go.mod h1:GzPLJ1PLdUG5xL6xn1OXWIjteQRT2CNT9o/6A9mi9hE=
github.com/hpcloud/tail v1.0.0/go.mod h1:ab1qPbhIpdTxEkNHXyeSf5vhxWSCs/tWer42PpOxQnU=
github.com/ianlancetaylor/demangle v0.0.0-20200824232613-28f6c0f3b639/go.mod h1:aSSvb/t6k1mPoxDqO4vJh6VOCGPwU4O0C2/Eqndh1Sc=
github.com/jbenet/go-context v0.0.0-20150711004518-d14ea06fba99 h1:BQSFePA1RWJOlocH6Fxy8MmwDt+yVQYULKfN0RoTN8A=
@@ -211,7 +213,6 @@ github.com/mitchellh/go-testing-interface v1.14.1/go.mod h1:gfgS7OtZj6MA4U1UrDRp
github.com/mitchellh/go-wordwrap v1.0.1 h1:TLuKupo69TCn6TQSyGxwI1EblZZEsQ0vMlAFQflz0v0=
github.com/mitchellh/go-wordwrap v1.0.1/go.mod h1:R62XHJLzvMFRBbcrT7m7WgmE1eOyTSsCt+hzestvNj0=
github.com/mitchellh/mapstructure v1.3.3/go.mod h1:bFUtVrKA4DC2yAKiSyO/QUcy7e+RRV2QTWOzhPopBRo=
-github.com/mitchellh/mapstructure v1.5.0 h1:jeMsZIYE/09sWLaz43PL7Gy6RuMjD2eJVyuac5Z2hdY=
github.com/mitchellh/mapstructure v1.5.0/go.mod h1:bFUtVrKA4DC2yAKiSyO/QUcy7e+RRV2QTWOzhPopBRo=
github.com/montanaflynn/stats v0.0.0-20171201202039-1bf9dbcd8cbe/go.mod h1:wL8QJuTMNUDYhXwkmfOly8iTdp5TEcJFWZD2D7SIkUc=
github.com/niemeyer/pretty v0.0.0-20200227124842-a10e7caefd8e/go.mod h1:zD1mROLANZcx1PVRCS0qkT7pwLkGfwJo4zjcN/Tysno=
@@ -295,8 +296,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.11.1 h1:7s2iGBzp5EwR7/aIZr8ao5+dra3wiQyKjjFuvgVKu7U=
github.com/stretchr/testify v1.11.1/go.mod h1:wZwfW3scLgRK+23gO65QZefKpKQRnfz6sD981Nm4B6U=
-github.com/terraform-ibm-modules/ibmcloud-terratest-wrapper v1.60.6 h1:Tr7AlrQ+s1Nc9VOwB+It8sItnDOXhfXTxKqI2KtdyFA=
-github.com/terraform-ibm-modules/ibmcloud-terratest-wrapper v1.60.6/go.mod h1:YBrRYc+5y5Pr9CXmY35lOqTQdlIjA4x4+3iVObXGOCE=
+github.com/terraform-ibm-modules/ibmcloud-terratest-wrapper v1.60.12 h1:u+OIh3X/JGLWoBHCd4saYQzbLzS5ZzS7EO+etBidTOw=
+github.com/terraform-ibm-modules/ibmcloud-terratest-wrapper v1.60.12/go.mod h1:bKjJy3Hk26Vc++TmB5PDlTzDb312YemSkZdznAR51Wc=
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=
@@ -313,14 +314,14 @@ github.com/youmark/pkcs8 v0.0.0-20181117223130-1be2e3e5546d/go.mod h1:rHwXgn7Jul
github.com/yuin/goldmark v1.2.1/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74=
github.com/yuin/goldmark v1.4.1/go.mod h1:mwnBkeHKe2W/ZEtQ+71ViKU8L12m81fl3OWwC1Zlc8k=
github.com/yuin/goldmark v1.4.13/go.mod h1:6yULJ656Px+3vBD8DxQVa3kxgyrAnzto9xy5taEt/CY=
-github.com/zclconf/go-cty v1.16.3 h1:osr++gw2T61A8KVYHoQiFbFd1Lh3JOCXc/jFLJXKTxk=
-github.com/zclconf/go-cty v1.16.3/go.mod h1:VvMs5i0vgZdhYawQNq5kePSpLAoz8u1xvZgrPIxfnZE=
+github.com/zclconf/go-cty v1.16.4 h1:QGXaag7/7dCzb+odlGrgr+YmYZFaOCMW6DEpS+UD1eE=
+github.com/zclconf/go-cty v1.16.4/go.mod h1:VvMs5i0vgZdhYawQNq5kePSpLAoz8u1xvZgrPIxfnZE=
github.com/zclconf/go-cty-debug v0.0.0-20240509010212-0d6042c53940 h1:4r45xpDWB6ZMSMNJFMOjqrGHynW3DIBuR2H9j0ug+Mo=
github.com/zclconf/go-cty-debug v0.0.0-20240509010212-0d6042c53940/go.mod h1:CmBdvvj3nqzfzJ6nTCIwDTPZ56aVGvDrmztiO5g3qrM=
go.mongodb.org/mongo-driver v1.7.5/go.mod h1:VXEWRZ6URJIkUq2SCAyapmhH0ZLRBP+FT4xhp5Zvxng=
go.mongodb.org/mongo-driver v1.11.3/go.mod h1:PTSz5yu21bkT/wXpkS7WR5f0ddqw5quethTUn9WM+2g=
-go.mongodb.org/mongo-driver v1.17.3 h1:TQyXhnsWfWtgAhMtOgtYHMTkZIfBTpMTsMnd9ZBeHxQ=
-go.mongodb.org/mongo-driver v1.17.3/go.mod h1:Hy04i7O2kC4RS06ZrhPRqj/u4DTYkFDAAccj+rVKqgQ=
+go.mongodb.org/mongo-driver v1.17.4 h1:jUorfmVzljjr0FLzYQsGP8cgN/qzzxlY9Vh0C9KFXVw=
+go.mongodb.org/mongo-driver v1.17.4/go.mod h1:Hy04i7O2kC4RS06ZrhPRqj/u4DTYkFDAAccj+rVKqgQ=
go.opentelemetry.io/auto/sdk v1.1.0 h1:cH53jehLUN6UFLY71z+NDOiNJqDdPRaXzTel0sJySYA=
go.opentelemetry.io/auto/sdk v1.1.0/go.mod h1:3wSPjt5PWp2RhlCcmmOial7AvC4DQqZb7a7wCow3W8A=
go.opentelemetry.io/otel v1.35.0 h1:xKWKPxrxB6OtMCbmMY021CqC45J+3Onta9MqjhnusiQ=
@@ -331,6 +332,8 @@ go.opentelemetry.io/otel/sdk v1.29.0 h1:vkqKjk7gwhS8VaWb0POZKmIEDimRCMsopNYnriHy
go.opentelemetry.io/otel/sdk v1.29.0/go.mod h1:pM8Dx5WKnvxLCb+8lG1PRNIDxu9g9b9g59Qr7hfAAok=
go.opentelemetry.io/otel/trace v1.35.0 h1:dPpEfJu1sDIqruz7BHFG3c7528f6ddfSWfFDVt/xgMs=
go.opentelemetry.io/otel/trace v1.35.0/go.mod h1:WUk7DtFp1Aw2MkvqGdwiXYDZZNvA/1J8o6xRXLrIkyc=
+go.yaml.in/yaml/v2 v2.4.2 h1:DzmwEr2rDGHl7lsFgAHxmNz/1NlQ7xLIrlN2h5d1eGI=
+go.yaml.in/yaml/v2 v2.4.2/go.mod h1:081UH+NErpNdqlCXm3TtEran0rJZGxAYx9hb/ELlsPU=
golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w=
golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI=
golang.org/x/crypto v0.0.0-20200302210943-78000ba7a073/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto=
@@ -343,8 +346,8 @@ golang.org/x/crypto v0.12.0/go.mod h1:NF0Gs7EO5K4qLn+Ylc+fih8BSTeIjAP05siRnAh98y
golang.org/x/crypto v0.13.0/go.mod h1:y6Z2r+Rw4iayiXXAIxJIDAJ1zMW4yaTpebo8fPOliYc=
golang.org/x/crypto v0.14.0/go.mod h1:MVFd36DqK4CsrnJYDkBA3VC4m2GkXAM0PvzMCn4JQf4=
golang.org/x/crypto v0.16.0/go.mod h1:gCAAfMLgwOJRpTjQ2zCCt2OcSfYMTeZVSRtQlPC7Nq4=
-golang.org/x/crypto v0.41.0 h1:WKYxWedPGCTVVl5+WHSSrOBT0O8lx32+zxmHxijgXp4=
-golang.org/x/crypto v0.41.0/go.mod h1:pO5AFd7FA68rFak7rOAGVuygIISepHftHnr8dr6+sUc=
+golang.org/x/crypto v0.43.0 h1:dduJYIi3A3KOfdGOHX8AVZ/jGiyPa3IbBozJ5kNuE04=
+golang.org/x/crypto v0.43.0/go.mod h1:BFbav4mRNlXJL4wNeejLpWxB7wMbc79PdRGhWKncxR0=
golang.org/x/mod v0.3.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA=
golang.org/x/mod v0.6.0-dev.0.20220106191415-9b9b3d81d5e3/go.mod h1:3p9vT2HGsQu2K1YbXdKPJLVgG5VJdoTa1poYQBtP1AY=
golang.org/x/mod v0.6.0-dev.0.20220419223038-86c51ed26bb4/go.mod h1:jJ57K6gSWd91VN4djpZkiMVwK6gcyfeH4XE8wZrZaV4=
@@ -355,8 +358,8 @@ golang.org/x/mod v0.9.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs=
golang.org/x/mod v0.10.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs=
golang.org/x/mod v0.12.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs=
golang.org/x/mod v0.14.0/go.mod h1:hTbmBsO62+eylJbnUtE2MGJUyE7QWk4xUqPFrRgJ+7c=
-golang.org/x/mod v0.26.0 h1:EGMPT//Ezu+ylkCijjPc+f4Aih7sZvaAr+O3EHBxvZg=
-golang.org/x/mod v0.26.0/go.mod h1:/j6NAhSk8iQ723BGAUyoAcn7SlD7s15Dp9Nd/SfeaFQ=
+golang.org/x/mod v0.28.0 h1:gQBtGhjxykdjY9YhZpSlZIsbnaE2+PgjfLWUQTnoZ1U=
+golang.org/x/mod v0.28.0/go.mod h1:yfB/L0NOf/kmEbXjzCPOx1iK1fRutOydrCMsqRhEBxI=
golang.org/x/net v0.0.0-20180906233101-161cd47e91fd/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=
golang.org/x/net v0.0.0-20190311183353-d8887717615a/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg=
golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg=
@@ -384,8 +387,8 @@ golang.org/x/net v0.14.0/go.mod h1:PpSgVXXLK0OxS0F31C1/tv6XNguvCrnXIDrFMspZIUI=
golang.org/x/net v0.15.0/go.mod h1:idbUs1IY1+zTqbi8yxTbhexhEEk5ur9LInksu6HrEpk=
golang.org/x/net v0.17.0/go.mod h1:NxSsAGuq816PNPmqtQdLE42eU2Fs7NoRIZrHJAlaCOE=
golang.org/x/net v0.19.0/go.mod h1:CfAk/cbD4CthTvqiEl8NpboMuiuOYsAr/7NOjZJtv1U=
-golang.org/x/net v0.42.0 h1:jzkYrhi3YQWD6MLBJcsklgQsoAcw89EcZbJw8Z614hs=
-golang.org/x/net v0.42.0/go.mod h1:FF1RA5d3u7nAYA4z2TkclSCKh68eSXtiFwcWQpPXdt8=
+golang.org/x/net v0.45.0 h1:RLBg5JKixCy82FtLJpeNlVM0nrSqpCRYzVU1n8kj0tM=
+golang.org/x/net v0.45.0/go.mod h1:ECOoLqd5U3Lhyeyo/QDCEVQ4sNgYsqvCZ722XogGieY=
golang.org/x/sync v0.0.0-20180314180146-1d60e4601c6f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
golang.org/x/sync v0.0.0-20190911185100-cd5d95a43a6e/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
@@ -434,8 +437,8 @@ golang.org/x/sys v0.11.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
golang.org/x/sys v0.12.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
golang.org/x/sys v0.13.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
golang.org/x/sys v0.15.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA=
-golang.org/x/sys v0.35.0 h1:vz1N37gP5bs89s7He8XuIYXpyY0+QlsKmzipCbUtyxI=
-golang.org/x/sys v0.35.0/go.mod h1:BJP2sWEmIv4KK5OTEluFJCKSidICx8ciO85XgH3Ak8k=
+golang.org/x/sys v0.37.0 h1:fdNQudmxPjkdUTPnLn5mdQv7Zwvbvpaxqs831goi9kQ=
+golang.org/x/sys v0.37.0/go.mod h1:OgkHotnGiDImocRcuBABYBEXf8A9a87e/uXjp9XT3ks=
golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo=
golang.org/x/term v0.0.0-20210927222741-03fcf44c2211/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8=
golang.org/x/term v0.1.0/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8=
@@ -450,8 +453,8 @@ golang.org/x/term v0.11.0/go.mod h1:zC9APTIj3jG3FdV/Ons+XE1riIZXG4aZ4GTHiPZJPIU=
golang.org/x/term v0.12.0/go.mod h1:owVbMEjm3cBLCHdkQu9b1opXd4ETQWc3BhuQGKgXgvU=
golang.org/x/term v0.13.0/go.mod h1:LTmsnFJwVN6bCy1rVCoS+qHT1HhALEFxKncY3WNNh4U=
golang.org/x/term v0.15.0/go.mod h1:BDl952bC7+uMoWR75FIrCDx79TPU9oHkTZ9yRbYOrX0=
-golang.org/x/term v0.34.0 h1:O/2T7POpk0ZZ7MAzMeWFSg6S5IpWd/RXDlM9hgM3DR4=
-golang.org/x/term v0.34.0/go.mod h1:5jC53AEywhIVebHgPVeg0mj8OD3VO9OzclacVrqpaAw=
+golang.org/x/term v0.36.0 h1:zMPR+aF8gfksFprF/Nc/rd1wRS1EI6nDBGyWAvDzx2Q=
+golang.org/x/term v0.36.0/go.mod h1:Qu394IJq6V6dCBRgwqshf3mPF85AqzYEzofzRdZkWss=
golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=
golang.org/x/text v0.3.2/go.mod h1:bEr9sfX3Q8Zfm5fL9x+3itogRgK3+ptLWKqgva+5dAk=
golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ=
@@ -468,8 +471,8 @@ golang.org/x/text v0.11.0/go.mod h1:TvPlkZtksWOMsz7fbANvkp4WM8x/WCo/om8BMLbz+aE=
golang.org/x/text v0.12.0/go.mod h1:TvPlkZtksWOMsz7fbANvkp4WM8x/WCo/om8BMLbz+aE=
golang.org/x/text v0.13.0/go.mod h1:TvPlkZtksWOMsz7fbANvkp4WM8x/WCo/om8BMLbz+aE=
golang.org/x/text v0.14.0/go.mod h1:18ZOQIKpY8NJVqYksKHtTdi31H5itFRjB5/qKTNYzSU=
-golang.org/x/text v0.28.0 h1:rhazDwis8INMIwQ4tpjLDzUhx6RlXqZNPEM0huQojng=
-golang.org/x/text v0.28.0/go.mod h1:U8nCwOR8jO/marOQ0QbDiOngZVEBB7MAiitBuMjXiNU=
+golang.org/x/text v0.30.0 h1:yznKA/E9zq54KzlzBEAWn1NXSQ8DIp/NYMy88xJjl4k=
+golang.org/x/text v0.30.0/go.mod h1:yDdHFIX9t+tORqspjENWgzaCVXgk0yYnYuSZ8UzzBVM=
golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ=
golang.org/x/tools v0.0.0-20190531172133-b3315ee88b7d/go.mod h1:/rFqwRUd4F7ZHNgwSSTFct+R/Kf4OFW1sUzUTQQTgfc=
golang.org/x/tools v0.0.0-20191119224855-298f0cb1881e/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo=
@@ -485,8 +488,8 @@ golang.org/x/tools v0.9.3/go.mod h1:owI94Op576fPu3cIGQeHs3joujW/2Oc6MtlxbF5dfNc=
golang.org/x/tools v0.12.0/go.mod h1:Sc0INKfu04TlqNoRA1hgpFZbhYXHPr4V5DzpSBTPqQM=
golang.org/x/tools v0.13.0/go.mod h1:HvlwmtVNQAhOuCjW7xxvovg8wbNq7LwfXh/k7wXUl58=
golang.org/x/tools v0.16.1/go.mod h1:kYVVN6I1mBNoB1OX+noeBjbRk4IUEPa7JJ+TJMEooJ0=
-golang.org/x/tools v0.35.0 h1:mBffYraMEf7aa0sB+NuKnuCy8qI/9Bughn8dC2Gu5r0=
-golang.org/x/tools v0.35.0/go.mod h1:NKdj5HkL/73byiZSJjqJgKn3ep7KjFkBOkR/Hps3VPw=
+golang.org/x/tools v0.37.0 h1:DVSRzp7FwePZW356yEAChSdNcQo6Nsp+fex1SUW09lE=
+golang.org/x/tools v0.37.0/go.mod h1:MBN5QPQtLMHVdvsbtarmTNukZDdgwdwlO5qGacAzF0w=
golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
@@ -500,8 +503,8 @@ google.golang.org/protobuf v1.23.0/go.mod h1:EGpADcykh3NcUnDUJcl1+ZksZNG86OlYog2
google.golang.org/protobuf v1.26.0-rc.1/go.mod h1:jlhhOSvTdKEhbULTjvd4ARK9grFBp09yW+WbY/TyQbw=
google.golang.org/protobuf v1.26.0/go.mod h1:9q0QmTI4eRPtz6boOQmLYwt+qCgq0jsYwAQnmE0givc=
google.golang.org/protobuf v1.28.0/go.mod h1:HV8QOd/L58Z+nl8r43ehVNZIU/HEI6OcFqwMG9pJV4I=
-google.golang.org/protobuf v1.35.1 h1:m3LfL6/Ca+fqnjnlqQXNpFPABW1UD7mjh8KO2mKFytA=
-google.golang.org/protobuf v1.35.1/go.mod h1:9fA7Ob0pmnwhb644+1+CVWFRbNajQ6iRojtC/QF5bRE=
+google.golang.org/protobuf v1.36.5 h1:tPhr+woSbjfYvY6/GPufUoYizxw1cF/yFoxJ2fmpwlM=
+google.golang.org/protobuf v1.36.5/go.mod h1:9fA7Ob0pmnwhb644+1+CVWFRbNajQ6iRojtC/QF5bRE=
gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
gopkg.in/check.v1 v1.0.0-20190902080502-41f04d3bba15/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
@@ -524,5 +527,5 @@ gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C
gopkg.in/yaml.v3 v3.0.0-20200605160147-a5ece683394c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=
gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA=
gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=
-sigs.k8s.io/yaml v1.4.0 h1:Mk1wCc2gy/F0THH0TAp1QYyJNzRm2KCLy3o5ASXVI5E=
-sigs.k8s.io/yaml v1.4.0/go.mod h1:Ejl7/uTz7PSA4eKMyQCUTnhZYNmLIl+5c2lQPGR2BPY=
+sigs.k8s.io/yaml v1.6.0 h1:G8fkbMSAFqgEFgh4b1wmtzDnioxFCUgTZhlbj5P9QYs=
+sigs.k8s.io/yaml v1.6.0/go.mod h1:796bPqUfzR/0jLAl6XjHl3Ck7MiyVv8dbTdyT3/pMf4=
diff --git a/tests/pr_test.go b/tests/pr_test.go
index 138286a9..766a7a7e 100644
--- a/tests/pr_test.go
+++ b/tests/pr_test.go
@@ -14,7 +14,7 @@ import (
// Use existing resource group
const resourceGroup = "geretain-test-resources"
-const defaultExampleTerraformDir = "solutions/e2e"
+const defaultExampleTerraformDir = "solutions/ibm-catalog/sap-ready-to-go"
var sharedInfoSvc *cloudinfo.CloudInfoService
@@ -50,12 +50,15 @@ func setupOptions(t *testing.T, prefix string, powervs_zone string) *testhelper.
})
options.TerraformVars = map[string]interface{}{
- "powervs_zone": options.Region,
+
"prefix": options.Prefix,
+ "powervs_zone": options.Region,
"powervs_resource_group_name": options.ResourceGroup,
"external_access_ip": "0.0.0.0/0",
"os_image_distro": "SLES",
- "configure_nfs_server": false,
+ "enable_monitoring": false,
+ "enable_scc_wp": true,
+ "ansible_vault_password": "SecurePassw0rd!",
}
return options
@@ -66,7 +69,7 @@ func setupOptions(t *testing.T, prefix string, powervs_zone string) *testhelper.
func TestRunBranchExample(t *testing.T) {
t.Parallel()
- options := setupOptions(t, "b", "sao04")
+ options := setupOptions(t, "b", "wdc06")
output, err := options.RunTestConsistency()
assert.Nil(t, err, "This should not have errored")