Skip to content

Commit f9b7eb0

Browse files
feat: add image data source for catalog stock image (#821)
* feat: remove stock images support SKIP UPGRADE TEST: Breaking change auto stock image import * feat: add data source to fetch image id SKIP UPGRADE TEST: Breaking change auto stock image import * feat: add data source to fetch image id SKIP UPGRADE TEST: Breaking change auto stock image import * chore: change dc SKIP UPGRADE TEST: Breaking change auto stock image import * fix: revert the default rhel image value SKIP UPGRADE TEST: Breaking change auto stock image import * fix: var description for scc SKIP UPGRADE TEST: Breaking change auto stock image import * fix: var description for scc SKIP UPGRADE TEST: Breaking change auto stock image import * fix: remove checks for images SKIP UPGRADE TEST: Breaking change auto stock image import * fix: spelling for icon name SKIP UPGRADE TEST: Breaking change auto stock image import * fix: remove hotfix SKIP UPGRADE TEST: Breaking change auto stock image import * docs: update description SKIP UPGRADE TEST: Breaking change auto stock image import * fix: workspace output changed --------- Co-authored-by: ludwig-mueller <[email protected]>
1 parent e717c9e commit f9b7eb0

31 files changed

+283
-299
lines changed

.secrets.baseline

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
"files": "go.sum|^.secrets.baseline$",
44
"lines": null
55
},
6-
"generated_at": "2025-04-07T07:39:16Z",
6+
"generated_at": "2025-05-08T17:02:08Z",
77
"plugins_used": [
88
{
99
"name": "AWSKeyDetector"
@@ -102,7 +102,7 @@
102102
"hashed_secret": "2254481e1661d8f017a712b0d1ad9a14fd9460a3",
103103
"is_secret": false,
104104
"is_verified": false,
105-
"line_number": 55,
105+
"line_number": 54,
106106
"type": "Secret Keyword",
107107
"verified_result": null
108108
}
@@ -112,7 +112,7 @@
112112
"hashed_secret": "2254481e1661d8f017a712b0d1ad9a14fd9460a3",
113113
"is_secret": false,
114114
"is_verified": false,
115-
"line_number": 64,
115+
"line_number": 60,
116116
"type": "Secret Keyword",
117117
"verified_result": null
118118
}

README.md

Lines changed: 5 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -42,12 +42,13 @@ This repository contains deployable architecture solutions that help in deployin
4242

4343

4444
## Solutions
45+
4546
| 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 |
4647
|:---------------------------------------------------------------------------:|:------------------------:|:--------------------------------:|:-------------------------------------:|:-----------------------------:|:----------------------------:|:--------------------------:|:---------------------------:|:--------------------:|
47-
| [ IBM catalog PowerVS SAP Ready ]( ./solutions/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 |
48-
| [ IBM catalog SAP S/4HANA or BW/4HANA variation ]( ./solutions/ibm-catalog/sap-s4hana-bw4hana ) | :heavy_check_mark: | :heavy_check_mark: | N/A | 1 | 1 | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: |
49-
| [ PowerVS SAP Ready ]( ./solutions/sap-ready-to-go/ ) | N/A | N/A | N/A | 1 | 0 to N | :heavy_check_mark: | :heavy_check_mark: | N/A |
50-
| [ End-to-End ]( ./solutions/e2e/ ) | N/A | N/A | :heavy_check_mark: | 1 | 0 to N | :heavy_check_mark: | :heavy_check_mark: | N/A |
48+
| [IBM catalog PowerVS SAP Ready]( ./solutions/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 |
49+
| [IBM catalog SAP S/4HANA or BW/4HANA variation]( ./solutions/ibm-catalog/sap-s4hana-bw4hana ) | :heavy_check_mark: | :heavy_check_mark: | N/A | 1 | 1 | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: |
50+
| [PowerVS SAP Ready]( ./solutions/sap-ready-to-go/ ) | N/A | N/A | N/A | 1 | 0 to N | :heavy_check_mark: | :heavy_check_mark: | N/A |
51+
| [End-to-End]( ./solutions/e2e/ ) | N/A | N/A | :heavy_check_mark: | 1 | 0 to N | :heavy_check_mark: | :heavy_check_mark: | N/A |
5152

5253

5354

@@ -66,8 +67,6 @@ You need the following permissions to run this module.
6667
- `Editor` platform access
6768
- **Transit Gateway** service
6869
- `Editor` platform access
69-
- **Direct Link** service
70-
- `Editor` platform access
7170

7271
## Contributing
7372

ibm_catalog.json

Lines changed: 2 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -55,8 +55,7 @@
5555
{
5656
"flavors": [
5757
"standard",
58-
"standard-extend",
59-
"import"
58+
"standard-extend"
6059
],
6160
"id": "2dd486c7-b317-4aaa-907b-42671485ad96-global",
6261
"name": "deploy-arch-ibm-pvs-inf",
@@ -227,7 +226,6 @@
227226
{
228227
"key": "nfs_directory",
229228
"hidden": true
230-
231229
},
232230
{
233231
"key": "powervs_sap_network_cidr"
@@ -330,12 +328,6 @@
330328
],
331329
"service_name": "transit.gateway"
332330
},
333-
{
334-
"role_crns": [
335-
"crn:v1:bluemix:public:iam::::role:Editor"
336-
],
337-
"service_name": "directlink.connect"
338-
},
339331
{
340332
"role_crns": [
341333
"crn:v1:bluemix:public:iam::::serviceRole:Manager"
@@ -384,8 +376,7 @@
384376
{
385377
"flavors": [
386378
"standard",
387-
"standard-extend",
388-
"import"
379+
"standard-extend"
389380
],
390381
"id": "2dd486c7-b317-4aaa-907b-42671485ad96-global",
391382
"name": "deploy-arch-ibm-pvs-inf",
@@ -731,12 +722,6 @@
731722
],
732723
"service_name": "transit.gateway"
733724
},
734-
{
735-
"role_crns": [
736-
"crn:v1:bluemix:public:iam::::role:Editor"
737-
],
738-
"service_name": "directlink.connect"
739-
},
740725
{
741726
"role_crns": [
742727
"crn:v1:bluemix:public:iam::::serviceRole:Manager"

modules/ansible/templates-ansible/configure-scc-wp-agent/playbook-configure-scc-wp-agent.yml.tftpl

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,6 @@
88
- name: Install and connect Sysdig Agent
99
hosts: all
1010
vars:
11-
wp_guid: "${SCC_WP_GUID}"
1211
collector_endpoint: "${COLLECTOR_ENDPOINT}"
1312
wp_api_endpoint: "${API_ENDPOINT}"
1413
access_key: "${ACCESS_KEY}"

modules/pi-sap-system-type1/README.md

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -49,7 +49,6 @@ The Power Virtual Server for SAP module automates the following tasks:
4949
| Name | Description | Type | Default | Required |
5050
|------|-------------|------|---------|:--------:|
5151
| <a name="input_ansible_vault_password"></a> [ansible\_vault\_password](#input\_ansible\_vault\_password) | Vault password to encrypt OS registration parameters. Only required with customer provided linux subscription (pi\_os\_registration). 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 |
52-
| <a name="input_os_image_distro"></a> [os\_image\_distro](#input\_os\_image\_distro) | Image distribution that's used for all instances(HANA, NetWeaver). Only required for hotfix of networks getting attached in random order. Will be removed in future releases. | `string` | `""` | no |
5352
| <a name="input_pi_hana_instance"></a> [pi\_hana\_instance](#input\_pi\_hana\_instance) | PowerVS SAP HANA instance hostname (non FQDN). Will get the form of <var.prefix>-<var.pi\_hana\_instance.name>. Max length of final hostname must be <= 13 characters.'sap\_profile\_id' 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 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. | <pre>object({<br/> name = string<br/> image_id = string<br/> sap_profile_id = string<br/> additional_storage_config = list(object({<br/> name = string<br/> size = string<br/> count = string<br/> tier = string<br/> mount = string<br/> }))<br/> })</pre> | <pre>{<br/> "additional_storage_config": [<br/> {<br/> "count": "1",<br/> "mount": "/usr/sap",<br/> "name": "usrsap",<br/> "size": "50",<br/> "tier": "tier3"<br/> }<br/> ],<br/> "image_id": "insert_value_here",<br/> "name": "hana",<br/> "sap_profile_id": "ush1-4x256"<br/>}</pre> | no |
5453
| <a name="input_pi_hana_instance_custom_storage_config"></a> [pi\_hana\_instance\_custom\_storage\_config](#input\_pi\_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. | <pre>list(object({<br/> name = string<br/> size = string<br/> count = string<br/> tier = string<br/> mount = string<br/> }))</pre> | <pre>[<br/> {<br/> "count": "",<br/> "mount": "",<br/> "name": "",<br/> "size": "",<br/> "tier": ""<br/> }<br/>]</pre> | no |
5554
| <a name="input_pi_instance_init_linux"></a> [pi\_instance\_init\_linux](#input\_pi\_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. | <pre>object(<br/> {<br/> enable = bool<br/> bastion_host_ip = string<br/> ansible_host_or_ip = string<br/> ssh_private_key = string<br/> custom_os_registration = optional(object({<br/> username = string<br/> password = string<br/> }))<br/> }<br/> )</pre> | n/a | yes |
@@ -62,7 +61,7 @@ The Power Virtual Server for SAP module automates the following tasks:
6261
| <a name="input_prefix"></a> [prefix](#input\_prefix) | Unique prefix for resources to be created (e.g., SAP system name). | `string` | n/a | yes |
6362
| <a name="input_sap_domain"></a> [sap\_domain](#input\_sap\_domain) | SAP network domain name. | `string` | `"sap.com"` | no |
6463
| <a name="input_sap_network_services_config"></a> [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. | <pre>object(<br/> {<br/> squid = object({ enable = bool, squid_server_ip_port = string, no_proxy_hosts = string })<br/> nfs = object({ enable = bool, nfs_server_path = string, nfs_client_path = string, opts = string, fstype = string })<br/> dns = object({ enable = bool, dns_server_ip = string })<br/> ntp = object({ enable = bool, ntp_server_ip = string })<br/> }<br/> )</pre> | <pre>{<br/> "dns": {<br/> "dns_server_ip": "",<br/> "enable": false<br/> },<br/> "nfs": {<br/> "enable": false,<br/> "fstype": "",<br/> "nfs_client_path": "",<br/> "nfs_server_path": "",<br/> "opts": ""<br/> },<br/> "ntp": {<br/> "enable": false,<br/> "ntp_server_ip": ""<br/> },<br/> "squid": {<br/> "enable": false,<br/> "no_proxy_hosts": "",<br/> "squid_server_ip_port": ""<br/> }<br/>}</pre> | no |
65-
| <a name="input_scc_wp_instance"></a> [scc\_wp\_instance](#input\_scc\_wp\_instance) | SCC Workload Protection instance to connect to. Leave empty to not use it. | <pre>object({<br/> guid = string,<br/> access_key = string,<br/> api_endpoint = string,<br/> ingestion_endpoint = string<br/> })</pre> | <pre>{<br/> "access_key": "",<br/> "api_endpoint": "",<br/> "guid": "",<br/> "ingestion_endpoint": ""<br/>}</pre> | no |
64+
| <a name="input_scc_wp_instance"></a> [scc\_wp\_instance](#input\_scc\_wp\_instance) | SCC Workload Protection instance to connect to. Set enable to false to not use it. | <pre>object({<br/> enable = bool<br/> guid = string,<br/> access_key = string,<br/> api_endpoint = string,<br/> ingestion_endpoint = string<br/> })</pre> | <pre>{<br/> "access_key": "",<br/> "api_endpoint": "",<br/> "enable": false,<br/> "guid": "",<br/> "ingestion_endpoint": ""<br/>}</pre> | no |
6665

6766
### Outputs
6867

modules/pi-sap-system-type1/main.tf

Lines changed: 8 additions & 33 deletions
Original file line numberDiff line numberDiff line change
@@ -23,22 +23,6 @@ locals {
2323
server_type = contains(local.p10_unsupported_regions, var.pi_region) ? "s922" : "s1022"
2424
}
2525

26-
#####################################################
27-
# Networks getting attached in random order hotfix
28-
#####################################################
29-
30-
locals {
31-
cloud_init = <<EOT
32-
#cloud-config
33-
34-
runcmd:
35-
- echo net.ipv4.conf.all.rp_filter=2 >> /etc/sysctl.conf
36-
- sysctl -w net.ipv4.conf.all.rp_filter=2
37-
EOT
38-
pi_user_data = var.os_image_distro == "RHEL" ? local.cloud_init : null
39-
}
40-
41-
4226
##########################################################################################################
4327
# Deploy SAP HANA Instance
4428
##########################################################################################################
@@ -68,7 +52,6 @@ module "pi_hana_instance" {
6852
pi_storage_config = module.pi_hana_storage_calculation.pi_hana_storage_config
6953
pi_instance_init_linux = var.pi_instance_init_linux
7054
pi_network_services_config = var.sap_network_services_config
71-
pi_user_data = local.pi_user_data
7255
ansible_vault_password = var.ansible_vault_password
7356
}
7457

@@ -119,7 +102,6 @@ module "pi_netweaver_primary_instance" {
119102
pi_storage_config = local.pi_netweaver_primary_instance_storage_config
120103
pi_instance_init_linux = var.pi_instance_init_linux
121104
pi_network_services_config = var.sap_network_services_config
122-
pi_user_data = local.pi_user_data
123105
ansible_vault_password = var.ansible_vault_password
124106
}
125107

@@ -168,7 +150,6 @@ module "pi_netweaver_secondary_instances" {
168150
pi_storage_config = var.pi_netweaver_instance.storage_config
169151
pi_instance_init_linux = var.pi_instance_init_linux
170152
pi_network_services_config = var.sap_network_services_config
171-
pi_user_data = local.pi_user_data
172153
ansible_vault_password = var.ansible_vault_password
173154
}
174155

@@ -247,21 +228,11 @@ module "ansible_sap_instance_init" {
247228
#######################################################################
248229
# Ansible Install Sysdig agent and connect to SCC Workload Protection
249230
#######################################################################
250-
251-
locals {
252-
enable_scc_wp = var.scc_wp_instance.guid != "" && var.scc_wp_instance.ingestion_endpoint != "" && var.scc_wp_instance.api_endpoint != "" && var.scc_wp_instance.access_key != ""
253-
scc_wp_playbook_template_vars = {
254-
SCC_WP_GUID : var.scc_wp_instance.guid,
255-
COLLECTOR_ENDPOINT : var.scc_wp_instance.ingestion_endpoint,
256-
API_ENDPOINT : var.scc_wp_instance.api_endpoint,
257-
ACCESS_KEY : var.scc_wp_instance.access_key
258-
}
259-
}
260231
module "configure_scc_wp_agent" {
261232

262233
source = "../ansible"
263234
depends_on = [module.ansible_sap_instance_init]
264-
count = local.enable_scc_wp ? 1 : 0
235+
count = var.scc_wp_instance.enable ? 1 : 0
265236

266237
bastion_host_ip = var.pi_instance_init_linux.bastion_host_ip
267238
ansible_host_or_ip = var.pi_instance_init_linux.ansible_host_or_ip
@@ -272,9 +243,13 @@ module "configure_scc_wp_agent" {
272243
src_script_template_name = "configure-scc-wp-agent/ansible_configure_scc_wp_agent.sh.tftpl"
273244
dst_script_file_name = "${var.prefix}-configure_scc_wp_agent.sh"
274245

275-
src_playbook_template_name = "configure-scc-wp-agent/playbook-configure-scc-wp-agent.yml.tftpl"
276-
dst_playbook_file_name = "${var.prefix}-playbook-configure-scc-wp-agent.yml"
277-
playbook_template_vars = local.scc_wp_playbook_template_vars
246+
src_playbook_template_name = "configure-scc-wp-agent/playbook-configure-scc-wp-agent.yml.tftpl"
247+
dst_playbook_file_name = "${var.prefix}-playbook-configure-scc-wp-agent.yml"
248+
playbook_template_vars = {
249+
COLLECTOR_ENDPOINT : var.scc_wp_instance.ingestion_endpoint,
250+
API_ENDPOINT : var.scc_wp_instance.api_endpoint,
251+
ACCESS_KEY : var.scc_wp_instance.access_key
252+
}
278253
src_inventory_template_name = "pi-instance-inventory.tftpl"
279254
dst_inventory_file_name = "${var.prefix}-scc-wp-inventory"
280255
inventory_template_vars = { "pi_instance_management_ip" : join("\n", [module.pi_hana_instance.pi_instance_primary_ip], var.pi_netweaver_instance.instance_count > 0 ? module.pi_netweaver_primary_instance[*].pi_instance_primary_ip : [], var.pi_netweaver_instance.instance_count > 1 ? module.pi_netweaver_secondary_instances[*].pi_instance_primary_ip : []) }

modules/pi-sap-system-type1/variables.tf

Lines changed: 3 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -193,14 +193,16 @@ variable "sap_domain" {
193193
}
194194

195195
variable "scc_wp_instance" {
196-
description = "SCC Workload Protection instance to connect to. Leave empty to not use it."
196+
description = "SCC Workload Protection instance to connect to. Set enable to false to not use it."
197197
type = object({
198+
enable = bool
198199
guid = string,
199200
access_key = string,
200201
api_endpoint = string,
201202
ingestion_endpoint = string
202203
})
203204
default = {
205+
enable = false
204206
guid = "",
205207
access_key = "",
206208
api_endpoint = "",
@@ -212,9 +214,3 @@ variable "scc_wp_instance" {
212214
error_message = "Ansible vault password must not be empty or null when SCC workload instance is enabled. Value must be set for ansible_vault_password variable."
213215
}
214216
}
215-
216-
variable "os_image_distro" {
217-
description = "Image distribution that's used for all instances(HANA, NetWeaver). Only required for hotfix of networks getting attached in random order. Will be removed in future releases."
218-
type = string
219-
default = ""
220-
}

reference-architectures/sap-ready-to-go/deploy-arch-ibm-pvs-sap-ready-to-go.md

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22

33
copyright:
44
years: 2024, 2025
5-
lastupdated: "2025-04-16"
5+
lastupdated: "2025-05-07"
66
keywords:
77
subcollection: deployable-reference-architectures
88
authors:
@@ -17,7 +17,7 @@ use-case: ITServiceManagement
1717
industry: Technology
1818
compliance: SAPCertified
1919
content-type: reference-architecture
20-
version: v4.1.0
20+
version: v4.2.0
2121
related_links:
2222
- title: 'SAP in IBM Cloud documentation'
2323
url: 'https://cloud.ibm.com/docs/sap'
@@ -39,7 +39,7 @@ related_links:
3939
{: toc-industry="Technology"}
4040
{: toc-use-case="ITServiceManagement"}
4141
{: toc-compliance="SAPCertified"}
42-
{: toc-version="v4.1.0"}
42+
{: toc-version="v4.2.0"}
4343

4444
The SAP-ready PowerVS variation of the Power Virtual Server for SAP HANA creates a basic and expandable SAP system landscape. The variation builds on the foundation of the VPC landing zone and Power Virtual Server with VPC landing zone. PowerVS instances for SAP HANA and SAP NetWeaver are deployed and pre-configured for SAP installation.
4545

reference-architectures/sap-ready-to-go/deploy-arch-ibm-pvs-sap-ready-to-go.svg

Lines changed: 1 addition & 1 deletion
Loading

0 commit comments

Comments
 (0)