Skip to content

Commit 6905596

Browse files
feat: support s/4hana 2023 upgrade hana storage calculation using new factor 1.5 (#681)
1 parent 90b6cfd commit 6905596

File tree

14 files changed

+103
-101
lines changed

14 files changed

+103
-101
lines changed

README.md

Lines changed: 1 addition & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@ This repository contains deployable architecture solutions that help in deployin
2020
- Optionally configures OS network management services (NTP, NFS, and DNS services) using Ansible Galaxy Collection from [IBM](https://galaxy.ansible.com/ui/repo/published/ibm/power_linux_sap/): `power_linux_sap`
2121
- Tunes the instances according to SAP's best practices.
2222
- Downloads user-provided preloaded SAP Installation binaries from IBM Cloud Object Storage Bucket.
23-
- Installs and configures **SAP applications** (SAP HANA DB, SAP S4/HANA, SAP BW4/HANA) using [RHEL System Roles](https://access.redhat.com/articles/4488731): `sap_hana_install`, `sap_general_preconfigure`, `sap_hana_preconfigure`, `sap_netweaver_preconfigure` and [Community role](https://galaxy.ansible.com/ui/repo/published/community/sap_install/): `sap_install.sap_swpm`, `sap_install.sap_install_media_detect`
23+
- Installs and configures **SAP applications** (SAP HANA DB, SAP S4/HANA, SAP BW4/HANA) using [RHEL System Roles](https://access.redhat.com/articles/4488731): `sap_hana_install`, `sap_swpm`,`sap_general_preconfigure`, `sap_hana_preconfigure`, `sap_netweaver_preconfigure`
2424

2525

2626
### Solutions independent of IBM Cloud prerequisite Schematics workspace ID:
@@ -69,15 +69,6 @@ You need the following permissions to run this module.
6969
- **Direct Link** service
7070
- `Editor` platform access
7171

72-
<!-- BEGIN OVERVIEW HOOK -->
73-
## Overview
74-
* [terraform-ibm-powervs-sap](#terraform-ibm-powervs-sap)
75-
* [Submodules](./modules)
76-
* [pi-sap-system-type1](./modules/pi-sap-system-type1)
77-
* [Contributing](#contributing)
78-
<!-- END OVERVIEW HOOK -->
79-
80-
<!-- BEGIN CONTRIBUTING HOOK -->
8172
## Contributing
8273

8374
You can report issues and request features for this module in GitHub issues in the module repository. See [Report an issue or request a feature](https://github.com/terraform-ibm-modules/.github/blob/main/.github/SUPPORT.md).

ibm_catalog.json

Lines changed: 12 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -54,7 +54,10 @@
5454
"flavors": [
5555
"powervs-workspace",
5656
"powervs-import-workspace",
57-
"powervs-quickstart"
57+
"powervs-quickstart",
58+
"standard",
59+
"standard-extend",
60+
"import"
5861
],
5962
"id": "2dd486c7-b317-4aaa-907b-42671485ad96-global",
6063
"name": "deploy-arch-ibm-pvs-inf",
@@ -370,7 +373,10 @@
370373
"flavors": [
371374
"powervs-workspace",
372375
"powervs-import-workspace",
373-
"powervs-quickstart"
376+
"powervs-quickstart",
377+
"standard",
378+
"standard-extend",
379+
"import"
374380
],
375381
"id": "2dd486c7-b317-4aaa-907b-42671485ad96-global",
376382
"name": "deploy-arch-ibm-pvs-inf",
@@ -534,6 +540,10 @@
534540
"default_value": "",
535541
"required": true,
536542
"options": [
543+
{
544+
"displayname": "S/4HANA 2023",
545+
"value": "s4hana-2023"
546+
},
537547
{
538548
"displayname": "S/4HANA 2022",
539549
"value": "s4hana-2022"

modules/ansible/variables.tf

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@ variable "ansible_host_or_ip" {
99
}
1010

1111
variable "ssh_private_key" {
12-
description = "Private SSH key used to login to jump/bastion server, also the ansible host and all the hosts on which tasks will be executed. Entered data must be in heredoc strings format (https://www.terraform.io/language/expressions/strings#heredoc-strings). This key will be written temporarily on ansible host and deleted after execution."
12+
description = "Private SSH key used to login to jump/bastion server, also the ansible host and all the hosts on which tasks will be executed. This key will be written temporarily on ansible host and deleted after execution."
1313
type = string
1414
sensitive = true
1515
}

modules/pi-hana-storage-config/main.tf

Lines changed: 10 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -6,23 +6,23 @@ locals {
66
memory_size = tonumber(element(split("x", var.pi_hana_instance_sap_profile_id), 1))
77
auto_cal_storage_config = {
88
"memory_lt_900" = {
9-
shared_disk = { tier = "tier3", count = "1", size = local.memory_size }, #3 IOPS/GB
10-
log_disk = { tier = "tier5k", count = "4", size = ceil((local.memory_size / 2) / 4) }, #fixed 5k iops
11-
data_disk = { tier = "tier0", count = "4", size = local.memory_size < 256 ? 77 : ceil((local.memory_size * 1.2) / 4) } #25 IOPS/GB
9+
shared_disk = { tier = "tier3", count = "1", size = local.memory_size }, #3 IOPS/GB
10+
log_disk = { tier = "tier5k", count = "4", size = ceil((local.memory_size / 2) / 4) }, #fixed 5k iops
11+
data_disk = { tier = "tier0", count = "4", size = local.memory_size < 256 ? 81 : floor((local.memory_size * 1.5 * 1.074) / 4) } #25 IOPS/GB
1212
},
13-
"memory_bt_900_2100" = {
13+
"memory_bt_900_1850" = {
1414
shared_disk = { tier = "tier3", count = "1", size = 1000 }, #3 IOPS/GB
1515
log_disk = { tier = "tier0", count = "4", size = 128 }, #25 IOPS/GB
16-
data_disk = { tier = "tier3", count = "4", size = 648 } #3 IOPS/GB
16+
data_disk = { tier = "tier3", count = "4", size = 670 } #3 IOPS/GB
1717
},
18-
"memory_gt_2100" = {
19-
shared_disk = { tier = "tier3", count = "1", size = 1000 }, #3 IOPS/GB
20-
log_disk = { tier = "tier0", count = "4", size = 128 }, #25 IOPS/GB
21-
data_disk = { tier = "tier3", count = "4", size = floor((local.memory_size * 1.2) / 4) } #3 IOPS/GB
18+
"memory_gt_1850" = {
19+
shared_disk = { tier = "tier3", count = "1", size = 1000 }, #3 IOPS/GB
20+
log_disk = { tier = "tier0", count = "4", size = 128 }, #25 IOPS/GB
21+
data_disk = { tier = "tier3", count = "4", size = floor((local.memory_size * 1.5 * 1.074) / 4) } #3 IOPS/GB
2222
}
2323
}
2424

25-
storage_config = local.memory_size < 900 ? local.auto_cal_storage_config["memory_lt_900"] : local.memory_size > 2100 ? local.auto_cal_storage_config["memory_gt_2100"] : local.auto_cal_storage_config["memory_bt_900_2100"]
25+
storage_config = local.memory_size < 900 ? local.auto_cal_storage_config["memory_lt_900"] : local.memory_size > 1850 ? local.auto_cal_storage_config["memory_gt_1850"] : local.auto_cal_storage_config["memory_bt_900_1850"]
2626

2727
auto_cal_hana_storage_config = [
2828
{

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
5-
lastupdated: "2024-05-31"
5+
lastupdated: "2024-06-07"
66
keywords:
77
subcollection: deployable-reference-architectures
88
authors:
@@ -16,7 +16,7 @@ use-case: ITServiceManagement
1616
industry: Technology
1717
compliance: SAPCertified
1818
content-type: reference-architecture
19-
version: v2.0.1
19+
version: v2.1.0
2020
related_links:
2121
- title: 'SAP in IBM Cloud documentation'
2222
url: 'https://cloud.ibm.com/docs/sap'
@@ -38,7 +38,7 @@ related_links:
3838
{: toc-industry="Technology"}
3939
{: toc-use-case="ITServiceManagement"}
4040
{: toc-compliance="SAPCertified"}
41-
{: toc-version="2.0.1"}
41+
{: toc-version="2.1.0"}
4242

4343
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, SAP NetWeaver, and optionally for shared SAP files are deployed and preconfigured for SAP installation.
4444

reference-architectures/sap-s4hana-bw4hana/deploy-arch-ibm-pvs-sap-s4hana-bw4hana.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
5-
lastupdated: "2024-05-31"
5+
lastupdated: "2024-06-07"
66
keywords:
77
subcollection: deployable-reference-architectures
88
authors:
@@ -16,7 +16,7 @@ use-case: ITServiceManagement
1616
industry: Technology
1717
compliance: SAPCertified
1818
content-type: reference-architecture
19-
version: v2.0.1
19+
version: v2.1.0
2020
related_links:
2121
- title: 'SAP in IBM Cloud documentation'
2222
url: 'https://cloud.ibm.com/docs/sap'
@@ -38,7 +38,7 @@ related_links:
3838
{: toc-industry="Technology"}
3939
{: toc-use-case="ITServiceManagement"}
4040
{: toc-compliance="SAPCertified"}
41-
{: toc-version="2.0.1"}
41+
{: toc-version="2.1.0"}
4242

4343
'SAP S/4HANA or BW/4HANA' variation of 'Power Virtual Server for SAP HANA' creates a basic and expandable SAP system landscape built on the foundation of 'Power Virtual Server with VPC landing zone'. PowerVS instances for SAP HANA, SAP NetWeaver, and optionally for shared SAP files are deployed and preconfigured for SAP installation. The S/4HANA or BW/4HANA solution is installed based on the selected version.
4444

solutions/e2e/README.md

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -52,21 +52,21 @@ The end-to-end solution automates the following tasks:
5252
| Name | Version |
5353
|------|---------|
5454
| <a name="requirement_terraform"></a> [terraform](#requirement\_terraform) | >= 1.3, < 1.7 |
55-
| <a name="requirement_ibm"></a> [ibm](#requirement\_ibm) | >= 1.65.1 |
56-
| <a name="requirement_time"></a> [time](#requirement\_time) | >= 0.11.1 |
55+
| <a name="requirement_ibm"></a> [ibm](#requirement\_ibm) | = 1.65.1 |
56+
| <a name="requirement_time"></a> [time](#requirement\_time) | = 0.11.2 |
5757

5858
### Modules
5959

6060
| Name | Source | Version |
6161
|------|--------|---------|
62-
| <a name="module_fullstack"></a> [fullstack](#module\_fullstack) | terraform-ibm-modules/powervs-infrastructure/ibm//modules/powervs-vpc-landing-zone | 5.1.4 |
62+
| <a name="module_powervs_infra"></a> [powervs\_infra](#module\_powervs\_infra) | terraform-ibm-modules/powervs-infrastructure/ibm//modules/powervs-vpc-landing-zone | 5.2.0 |
6363
| <a name="module_sap_system"></a> [sap\_system](#module\_sap\_system) | ../../modules/pi-sap-system-type1 | n/a |
6464

6565
### Resources
6666

6767
| Name | Type |
6868
|------|------|
69-
| [time_sleep.wait_10_mins](https://registry.terraform.io/providers/hashicorp/time/latest/docs/resources/sleep) | resource |
69+
| [time_sleep.wait_10_mins](https://registry.terraform.io/providers/hashicorp/time/0.11.2/docs/resources/sleep) | resource |
7070

7171
### Inputs
7272

solutions/e2e/main.tf

Lines changed: 14 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -5,9 +5,9 @@
55
# Transit Gateway, CCs, PowerVS catalog images
66
#######################################################
77

8-
module "fullstack" {
8+
module "powervs_infra" {
99
source = "terraform-ibm-modules/powervs-infrastructure/ibm//modules/powervs-vpc-landing-zone"
10-
version = "5.1.4"
10+
version = "5.2.0"
1111

1212
providers = { ibm.ibm-is = ibm.ibm-is, ibm.ibm-pi = ibm.ibm-pi, ibm.ibm-sm = ibm.ibm-sm }
1313

@@ -36,28 +36,28 @@ resource "time_sleep" "wait_10_mins" {
3636
#######################################################
3737

3838
locals {
39-
powervs_networks = [module.fullstack.powervs_management_subnet, module.fullstack.powervs_backup_subnet]
39+
powervs_networks = [module.powervs_infra.powervs_management_subnet, module.powervs_infra.powervs_backup_subnet]
4040
powervs_sharefs_os_image = var.os_image_distro == "SLES" ? var.powervs_default_sap_images.sles_nw_image : var.powervs_default_sap_images.rhel_nw_image
4141
powervs_hana_os_image = var.os_image_distro == "SLES" ? var.powervs_default_sap_images.sles_hana_image : var.powervs_default_sap_images.rhel_hana_image
4242
powervs_netweaver_os_image = var.os_image_distro == "SLES" ? var.powervs_default_sap_images.sles_nw_image : var.powervs_default_sap_images.rhel_nw_image
4343

44-
powervs_sharefs_instance = merge(var.powervs_sharefs_instance, { enable = var.powervs_create_separate_sharefs_instance, image_id = lookup(module.fullstack.powervs_images, local.powervs_sharefs_os_image, null) })
45-
powervs_hana_instance = merge(var.powervs_hana_instance, { image_id = lookup(module.fullstack.powervs_images, local.powervs_hana_os_image, null) })
46-
powervs_netweaver_instance = merge(var.powervs_netweaver_instance, { image_id = lookup(module.fullstack.powervs_images, local.powervs_netweaver_os_image, null) })
44+
powervs_sharefs_instance = merge(var.powervs_sharefs_instance, { enable = var.powervs_create_separate_sharefs_instance, image_id = lookup(module.powervs_infra.powervs_images, local.powervs_sharefs_os_image, null) })
45+
powervs_hana_instance = merge(var.powervs_hana_instance, { image_id = lookup(module.powervs_infra.powervs_images, local.powervs_hana_os_image, null) })
46+
powervs_netweaver_instance = merge(var.powervs_netweaver_instance, { image_id = lookup(module.powervs_infra.powervs_images, local.powervs_netweaver_os_image, null) })
4747

4848
powervs_instance_init_linux = {
4949
enable = true
50-
bastion_host_ip = module.fullstack.access_host_or_ip
51-
ansible_host_or_ip = module.fullstack.ansible_host_or_ip
50+
bastion_host_ip = module.powervs_infra.access_host_or_ip
51+
ansible_host_or_ip = module.powervs_infra.ansible_host_or_ip
5252
ssh_private_key = var.ssh_private_key
5353
}
5454

5555
sap_network_services_config = {
56-
squid = { enable = true, squid_server_ip_port = module.fullstack.proxy_host_or_ip_port
56+
squid = { enable = true, squid_server_ip_port = module.powervs_infra.proxy_host_or_ip_port
5757
no_proxy_hosts = "161.0.0.0/8,10.0.0.0/8" }
58-
nfs = { enable = var.configure_nfs_server, nfs_server_path = module.fullstack.nfs_host_or_ip_path, nfs_client_path = "/nfs", opts = module.fullstack.network_services_config.nfs.opts, fstype = module.fullstack.network_services_config.nfs.fstype }
59-
dns = { enable = var.configure_dns_forwarder, dns_server_ip = module.fullstack.dns_host_or_ip }
60-
ntp = { enable = var.configure_ntp_forwarder, ntp_server_ip = module.fullstack.ntp_host_or_ip }
58+
nfs = { enable = var.configure_nfs_server, nfs_server_path = module.powervs_infra.nfs_host_or_ip_path, nfs_client_path = "/nfs", opts = module.powervs_infra.network_services_config.nfs.opts, fstype = module.powervs_infra.network_services_config.nfs.fstype }
59+
dns = { enable = var.configure_dns_forwarder, dns_server_ip = module.powervs_infra.dns_host_or_ip }
60+
ntp = { enable = var.configure_ntp_forwarder, ntp_server_ip = module.powervs_infra.ntp_host_or_ip }
6161
}
6262
}
6363

@@ -67,8 +67,8 @@ module "sap_system" {
6767
providers = { ibm = ibm.ibm-pi }
6868

6969
prefix = var.prefix
70-
pi_workspace_guid = module.fullstack.powervs_workspace_guid
71-
pi_ssh_public_key_name = module.fullstack.powervs_ssh_public_key.name
70+
pi_workspace_guid = module.powervs_infra.powervs_workspace_guid
71+
pi_ssh_public_key_name = module.powervs_infra.powervs_ssh_public_key.name
7272
pi_networks = local.powervs_networks
7373
pi_sap_network_cidr = var.powervs_sap_network_cidr
7474
pi_sharefs_instance = local.powervs_sharefs_instance

solutions/e2e/outputs.tf

Lines changed: 17 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -9,12 +9,12 @@ output "prefix" {
99

1010
output "vpc_names" {
1111
description = "A list of the names of the VPC."
12-
value = module.fullstack.vpc_names
12+
value = module.powervs_infra.vpc_names
1313
}
1414

1515
output "vsi_names" {
1616
description = "A list of the vsis names provisioned within the VPCs."
17-
value = module.fullstack.vsi_names
17+
value = module.powervs_infra.vsi_names
1818
}
1919

2020
output "ssh_public_key" {
@@ -24,42 +24,42 @@ output "ssh_public_key" {
2424

2525
output "transit_gateway_name" {
2626
description = "The name of the transit gateway."
27-
value = module.fullstack.transit_gateway_name
27+
value = module.powervs_infra.transit_gateway_name
2828
}
2929

3030
output "transit_gateway_id" {
3131
description = "The ID of transit gateway."
32-
value = module.fullstack.transit_gateway_id
32+
value = module.powervs_infra.transit_gateway_id
3333
}
3434

3535
output "vsi_list" {
3636
description = "A list of VSI with name, id, zone, and primary ipv4 address, VPC Name, and floating IP."
37-
value = module.fullstack.vsi_list
37+
value = module.powervs_infra.vsi_list
3838
}
3939

4040
output "access_host_or_ip" {
4141
description = "Access host(jump/bastion) for created PowerVS infrastructure."
42-
value = module.fullstack.access_host_or_ip
42+
value = module.powervs_infra.access_host_or_ip
4343
}
4444

4545
output "proxy_host_or_ip_port" {
4646
description = "Proxy host:port for created PowerVS infrastructure."
47-
value = module.fullstack.proxy_host_or_ip_port
47+
value = module.powervs_infra.proxy_host_or_ip_port
4848
}
4949

5050
output "dns_host_or_ip" {
5151
description = "DNS forwarder host for created PowerVS infrastructure."
52-
value = module.fullstack.dns_host_or_ip
52+
value = module.powervs_infra.dns_host_or_ip
5353
}
5454

5555
output "ntp_host_or_ip" {
5656
description = "NTP host for created PowerVS infrastructure."
57-
value = module.fullstack.ntp_host_or_ip
57+
value = module.powervs_infra.ntp_host_or_ip
5858
}
5959

6060
output "nfs_host_or_ip_path" {
6161
description = "NFS host for created PowerVS infrastructure."
62-
value = module.fullstack.nfs_host_or_ip_path
62+
value = module.powervs_infra.nfs_host_or_ip_path
6363
}
6464

6565

@@ -79,37 +79,37 @@ output "powervs_resource_group_name" {
7979

8080
output "powervs_workspace_name" {
8181
description = "PowerVS infrastructure workspace name."
82-
value = module.fullstack.powervs_workspace_name
82+
value = module.powervs_infra.powervs_workspace_name
8383
}
8484

8585
output "powervs_workspace_id" {
8686
description = "PowerVS infrastructure workspace id. The unique identifier of the new resource instance."
87-
value = module.fullstack.powervs_workspace_id
87+
value = module.powervs_infra.powervs_workspace_id
8888
}
8989

9090
output "powervs_workspace_guid" {
9191
description = "PowerVS infrastructure workspace guid. The GUID of the resource instance."
92-
value = module.fullstack.powervs_workspace_guid
92+
value = module.powervs_infra.powervs_workspace_guid
9393
}
9494

9595
output "powervs_ssh_public_key" {
9696
description = "SSH public key name and value in created PowerVS infrastructure."
97-
value = module.fullstack.powervs_ssh_public_key
97+
value = module.powervs_infra.powervs_ssh_public_key
9898
}
9999

100100
output "powervs_management_subnet" {
101101
description = "Name, ID and CIDR of management private network in created PowerVS infrastructure."
102-
value = module.fullstack.powervs_management_subnet
102+
value = module.powervs_infra.powervs_management_subnet
103103
}
104104

105105
output "powervs_backup_subnet" {
106106
description = "Name, ID and CIDR of backup private network in created PowerVS infrastructure."
107-
value = module.fullstack.powervs_backup_subnet
107+
value = module.powervs_infra.powervs_backup_subnet
108108
}
109109

110110
output "powervs_images" {
111111
description = "Object containing imported PowerVS image names and image ids."
112-
value = module.fullstack.powervs_images
112+
value = module.powervs_infra.powervs_images
113113
}
114114

115115

solutions/e2e/version.tf

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,11 +3,11 @@ terraform {
33
required_providers {
44
ibm = {
55
source = "IBM-Cloud/ibm"
6-
version = ">= 1.65.1"
6+
version = "= 1.65.1"
77
}
88
time = {
99
source = "hashicorp/time"
10-
version = ">= 0.11.1"
10+
version = "= 0.11.2"
1111
}
1212
}
1313
}

0 commit comments

Comments
 (0)