Skip to content

Commit 615023a

Browse files
committed
Merge branch 'master' of ssh://github.com/SUSE/ha-sap-terraform-deployments
2 parents 03e958c + 512b6dc commit 615023a

File tree

203 files changed

+5304
-1126
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

203 files changed

+5304
-1126
lines changed

.github/workflows/ci.yml

Lines changed: 3 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -161,14 +161,7 @@ jobs:
161161
uses: hashicorp/setup-terraform@v1
162162
with:
163163
cli_config_credentials_token: ${{ secrets.TF_API_TOKEN }}
164-
terraform_version: 0.13.4
165-
166-
- name: Install Terraform libvirt provider
167-
run: |
168-
echo 'deb http://download.opensuse.org/repositories/systemsmanagement:/terraform/Ubuntu_20.04/ /' | sudo tee /etc/apt/sources.list.d/systemsmanagement:terraform.list
169-
curl -fsSL https://download.opensuse.org/repositories/systemsmanagement:terraform/Ubuntu_20.04/Release.key | gpg --dearmor | sudo tee /etc/apt/trusted.gpg.d/systemsmanagement_terraform.gpg > /dev/null
170-
sudo apt-get update
171-
sudo apt-get -y install terraform-provider-libvirt
164+
terraform_version: 1.1.6
172165

173166
- name: terraform-format
174167
run: make test-terraform-format
@@ -192,14 +185,7 @@ jobs:
192185
uses: hashicorp/setup-terraform@v1
193186
with:
194187
cli_config_credentials_token: ${{ secrets.TF_API_TOKEN }}
195-
terraform_version: 0.13.4
196-
197-
- name: Install Terraform libvirt provider
198-
run: |
199-
echo 'deb http://download.opensuse.org/repositories/systemsmanagement:/terraform/Ubuntu_20.04/ /' | sudo tee /etc/apt/sources.list.d/systemsmanagement:terraform.list
200-
curl -fsSL https://download.opensuse.org/repositories/systemsmanagement:terraform/Ubuntu_20.04/Release.key | gpg --dearmor | sudo tee /etc/apt/trusted.gpg.d/systemsmanagement_terraform.gpg > /dev/null
201-
sudo apt-get update
202-
sudo apt-get -y install terraform-provider-libvirt
188+
terraform_version: 1.1.6
203189

204190
- name: terraform-validation
205191
run: make test-terraform-validation
@@ -224,14 +210,7 @@ jobs:
224210
# uses: hashicorp/setup-terraform@v1
225211
# with:
226212
# cli_config_credentials_token: ${{ secrets.TF_API_TOKEN }}
227-
# terraform_version: 0.13.4
228-
229-
# - name: Install Terraform libvirt provider
230-
# run: |
231-
# echo 'deb http://download.opensuse.org/repositories/systemsmanagement:/terraform/Ubuntu_20.04/ /' | sudo tee /etc/apt/sources.list.d/systemsmanagement:terraform.list
232-
# curl -fsSL https://download.opensuse.org/repositories/systemsmanagement:terraform/Ubuntu_20.04/Release.key | gpg --dearmor | sudo tee /etc/apt/trusted.gpg.d/systemsmanagement_terraform.gpg > /dev/null
233-
# sudo apt-get update
234-
# sudo apt-get -y install terraform-provider-libvirt
213+
# terraform_version: 1.1.6
235214

236215
# - name: terraform-plan
237216
# run: make test-terraform-plan

.gitignore

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,12 @@
11
**/.terraform
22
**/terraform.tfstate*
3+
**/.terraform.tfstate*
34
**/terraform*.tfvars
45
azure/terraform/provision/node0_id_rsa
56
azure/terraform/provision/node0_id_rsa.pub
67
azure/terraform/provision/node1_id_rsa
78
azure/terraform/provision/node1_id_rsa.pub
9+
gcp/*.json
810
**/id_rsa*
911

1012
salt/sshkeys

README.md

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

33
[![Build Status](https://github.com/SUSE/ha-sap-terraform-deployments/workflows/CI%20tests/badge.svg)](https://github.com/SUSE/ha-sap-terraform-deployments/actions)
44

5-
**Supported terraform version `0.13.4`**
5+
**Supported terraform version `1.1.X`**
66
___
77

88
# Supported cloud providers
@@ -19,9 +19,8 @@ ___
1919
- HA Clusters and HANA deployment
2020
- [Preparing SAP software](doc/sap_software.md)
2121
- [Monitoring of cluster](doc/monitoring.md)
22-
- [Netweaver](doc/netweaver.md)
22+
- [S/4HANA and NetWeaver](doc/netweaver.md)
2323
- [DRBD](doc/drbd.md)
24-
- [QA](doc/qa.md)
2524
- [Saptune](doc/saptune.md)
2625
- [Fencing mechanism](doc/fencing.md)
2726
- [IP addresses auto generation](doc/ip_autogeneration.md)

aws/.terraform.lock.hcl

Lines changed: 40 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

aws/README.md

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,6 @@
44
- [highlevel description](#highlevel-description)
55
- [advanced usage](#advanced-usage)
66
- [monitoring](../doc/monitoring.md)
7-
- [QA](../doc/qa.md)
87
- [specification](#specification)
98

109
# Quickstart
@@ -145,7 +144,7 @@ In order to deploy the environment, different configurations are available throu
145144

146145
## QA deployment
147146

148-
The project has been created in order to provide the option to run the deployment in a `Test` or `QA` mode. This mode only enables the packages coming properly from SLE channels, so no other packages will be used. Find more information [here](../doc/qa.md).
147+
The project has been created in order to provide the option to run the deployment in a `Test` or `QA` mode. This mode only enables the packages coming properly from SLE channels, so no other packages will be used. Set `offline_mode = true` in `terraform.tfvars` to enable it.
149148

150149
## Pillar files configuration
151150

@@ -166,7 +165,7 @@ There are some fixed values used throughout the terraform configuration:
166165
- The iSCSI server has a second disk volume that is being used as a shared device.
167166
- Salt is partitioning this device in 5 x 1MB partitions and then configuring just the LUN 0 for iSCSI (improvement is needed in iscsi-formula to create more than one device). **Until this improvement is added, an iscsi config file (/etc/target/saveconfig.json) is loaded when the qa_mode is set to true to configure 5 more LUN, mandatory for other tests like DRBD.**
168167
- iSCSI LUN 0 is being used in the cluster as SBD device.
169-
- The cluster nodes have a second disk volume that is being used for Hana installation.
168+
- The cluster nodes have a second disk volume that is being used for HANA installation.
170169

171170
# Advanced Usage
172171
# notes:

aws/create_remote_state/dynamodb.tf

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
# create a dynamodb table for locking the state file
22
resource "aws_dynamodb_table" "dynamodb-terraform-state-lock" {
3-
name = "${var.dynamodb_name}"
3+
name = var.dynamodb_name
44
hash_key = "LockID"
55
read_capacity = 20
66
write_capacity = 20

aws/create_remote_state/main.tf

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,9 @@
11
provider "aws" {
2-
region = "${var.aws_region}"
2+
region = var.aws_region
33
}
44

55
resource "aws_s3_bucket" "terraform_state" {
6-
bucket = "${var.bucket_name}"
6+
bucket = var.bucket_name
77

88
versioning {
99
enabled = true

aws/infrastructure.tf

Lines changed: 11 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,3 @@
1-
# Configure the AWS Provider
2-
provider "aws" {
3-
version = "~> 3.11.0"
4-
region = var.aws_region
5-
}
6-
7-
terraform {
8-
required_version = ">= 0.13"
9-
}
10-
111
data "aws_vpc" "current-vpc" {
122
count = var.vpc_id != "" ? 1 : 0
133
id = var.vpc_id
@@ -238,6 +228,17 @@ resource "aws_security_group_rule" "ha_exporter" {
238228
security_group_id = local.security_group_id
239229
}
240230

231+
resource "aws_security_group_rule" "saphost_exporter" {
232+
count = local.create_security_group_monitoring
233+
type = "ingress"
234+
from_port = 9680
235+
to_port = 9680
236+
protocol = "tcp"
237+
cidr_blocks = ["0.0.0.0/0"]
238+
239+
security_group_id = local.security_group_id
240+
}
241+
241242
resource "aws_security_group_rule" "prometheus_server" {
242243
count = local.create_security_group_monitoring
243244
type = "ingress"

aws/main.tf

Lines changed: 30 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -64,6 +64,7 @@ module "common_variables" {
6464
source = "../generic_modules/common_variables"
6565
provider_type = "aws"
6666
deployment_name = local.deployment_name
67+
deployment_name_in_hostname = var.deployment_name_in_hostname
6768
reg_code = var.reg_code
6869
reg_email = var.reg_email
6970
reg_additional_modules = var.reg_additional_modules
@@ -79,7 +80,7 @@ module "common_variables" {
7980
background = var.background
8081
monitoring_enabled = var.monitoring_enabled
8182
monitoring_srv_ip = var.monitoring_enabled ? local.monitoring_ip : ""
82-
qa_mode = var.qa_mode
83+
offline_mode = var.offline_mode
8384
hana_hwcct = var.hwcct
8485
hana_sid = var.hana_sid
8586
hana_instance_number = var.hana_instance_number
@@ -100,12 +101,17 @@ module "common_variables" {
100101
hana_client_archive_file = var.hana_client_archive_file
101102
hana_client_extract_dir = var.hana_client_extract_dir
102103
hana_scenario_type = var.scenario_type
103-
hana_cluster_vip_mechanism = ""
104+
hana_cluster_vip_mechanism = "route"
104105
hana_cluster_vip = local.hana_cluster_vip
105106
hana_cluster_vip_secondary = var.hana_active_active ? local.hana_cluster_vip_secondary : ""
106107
hana_ha_enabled = var.hana_ha_enabled
108+
hana_ignore_min_mem_check = var.hana_ignore_min_mem_check
107109
hana_cluster_fencing_mechanism = var.hana_cluster_fencing_mechanism
108110
hana_sbd_storage_type = var.sbd_storage_type
111+
hana_scale_out_enabled = var.hana_scale_out_enabled
112+
hana_scale_out_shared_storage_type = var.hana_scale_out_shared_storage_type
113+
hana_scale_out_addhosts = var.hana_scale_out_addhosts
114+
hana_scale_out_standby_count = var.hana_scale_out_standby_count
109115
netweaver_sid = var.netweaver_sid
110116
netweaver_ascs_instance_number = var.netweaver_ascs_instance_number
111117
netweaver_ers_instance_number = var.netweaver_ers_instance_number
@@ -126,17 +132,30 @@ module "common_variables" {
126132
netweaver_hana_instance_number = var.hana_instance_number
127133
netweaver_hana_master_password = var.hana_master_password
128134
netweaver_ha_enabled = var.netweaver_ha_enabled
135+
netweaver_cluster_vip_mechanism = "route"
129136
netweaver_cluster_fencing_mechanism = var.netweaver_cluster_fencing_mechanism
130137
netweaver_sbd_storage_type = var.sbd_storage_type
138+
netweaver_shared_storage_type = var.netweaver_shared_storage_type
139+
monitoring_hana_targets = local.hana_ips
140+
monitoring_hana_targets_ha = var.hana_ha_enabled ? local.hana_ips : []
141+
monitoring_hana_targets_vip = var.hana_ha_enabled ? [local.hana_cluster_vip] : [local.hana_ips[0]] # we use the vip for HA scenario and 1st hana machine for non HA to target the active hana instance
142+
monitoring_drbd_targets = var.drbd_enabled ? local.drbd_ips : []
143+
monitoring_drbd_targets_ha = var.drbd_enabled ? local.drbd_ips : []
144+
monitoring_drbd_targets_vip = var.drbd_enabled ? [local.drbd_cluster_vip] : []
145+
monitoring_netweaver_targets = var.netweaver_enabled ? local.netweaver_ips : []
146+
monitoring_netweaver_targets_ha = var.netweaver_enabled && var.netweaver_ha_enabled ? [local.netweaver_ips[0], local.netweaver_ips[1]] : []
147+
monitoring_netweaver_targets_vip = var.netweaver_enabled ? local.netweaver_virtual_ips : []
131148
drbd_cluster_vip = local.drbd_cluster_vip
132-
drbd_cluster_vip_mechanism = ""
149+
drbd_cluster_vip_mechanism = "route"
133150
drbd_cluster_fencing_mechanism = var.drbd_cluster_fencing_mechanism
134151
drbd_sbd_storage_type = var.sbd_storage_type
135152
}
136153

137154
module "drbd_node" {
138155
source = "./modules/drbd_node"
139156
common_variables = module.common_variables.configuration
157+
name = var.drbd_name
158+
network_domain = var.drbd_network_domain == "" ? var.network_domain : var.drbd_network_domain
140159
drbd_count = var.drbd_enabled == true ? 2 : 0
141160
instance_type = var.drbd_instancetype
142161
aws_region = var.aws_region
@@ -169,6 +188,8 @@ module "drbd_node" {
169188
module "iscsi_server" {
170189
source = "./modules/iscsi_server"
171190
common_variables = module.common_variables.configuration
191+
name = var.iscsi_name
192+
network_domain = var.iscsi_network_domain == "" ? var.network_domain : var.iscsi_network_domain
172193
iscsi_count = local.iscsi_enabled == true ? 1 : 0
173194
aws_region = var.aws_region
174195
availability_zones = data.aws_availability_zones.available.names
@@ -192,10 +213,11 @@ module "iscsi_server" {
192213
module "netweaver_node" {
193214
source = "./modules/netweaver_node"
194215
common_variables = module.common_variables.configuration
216+
name = var.netweaver_name
217+
network_domain = var.netweaver_network_domain == "" ? var.network_domain : var.netweaver_network_domain
195218
xscs_server_count = local.netweaver_xscs_server_count
196219
app_server_count = var.netweaver_enabled ? var.netweaver_app_server_count : 0
197220
instance_type = var.netweaver_instancetype
198-
name = "netweaver"
199221
aws_region = var.aws_region
200222
availability_zones = data.aws_availability_zones.available.names
201223
os_image = local.netweaver_os_image
@@ -226,9 +248,10 @@ module "netweaver_node" {
226248
module "hana_node" {
227249
source = "./modules/hana_node"
228250
common_variables = module.common_variables.configuration
251+
name = var.hana_name
252+
network_domain = var.hana_network_domain == "" ? var.network_domain : var.hana_network_domain
229253
hana_count = var.hana_count
230254
instance_type = var.hana_instancetype
231-
name = var.name
232255
aws_region = var.aws_region
233256
availability_zones = data.aws_availability_zones.available.names
234257
os_image = local.hana_os_image
@@ -257,6 +280,8 @@ module "hana_node" {
257280
module "monitoring" {
258281
source = "./modules/monitoring"
259282
common_variables = module.common_variables.configuration
283+
name = var.monitoring_name
284+
network_domain = var.monitoring_network_domain == "" ? var.network_domain : var.monitoring_network_domain
260285
monitoring_enabled = var.monitoring_enabled
261286
instance_type = var.monitor_instancetype
262287
key_name = aws_key_pair.key-pair.key_name
@@ -268,9 +293,6 @@ module "monitoring" {
268293
os_owner = local.monitoring_os_owner
269294
subnet_ids = aws_subnet.infra-subnet.*.id
270295
timezone = var.timezone
271-
hana_targets = concat(local.hana_ips, var.hana_ha_enabled ? [local.hana_cluster_vip] : [local.hana_ips[0]]) # we use the vip for HA scenario and 1st hana machine for non HA to target the active hana instance
272-
drbd_targets = var.drbd_enabled ? local.drbd_ips : []
273-
netweaver_targets = var.netweaver_enabled ? local.netweaver_virtual_ips : []
274296
on_destroy_dependencies = [
275297
aws_route_table_association.infra-subnet-route-association,
276298
aws_route.public,

aws/modules/drbd_node/main.tf

Lines changed: 7 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,7 @@
11
# drbd resources
2+
locals {
3+
hostname = var.common_variables["deployment_name_in_hostname"] ? format("%s-%s", var.common_variables["deployment_name"], var.name) : var.name
4+
}
25

36
resource "aws_subnet" "drbd-subnet" {
47
count = var.drbd_count
@@ -22,7 +25,7 @@ resource "aws_route" "drbd-cluster-vip" {
2225
count = var.drbd_count > 0 ? 1 : 0
2326
route_table_id = var.route_table_id
2427
destination_cidr_block = "${var.common_variables["drbd"]["cluster_vip"]}/32"
25-
instance_id = aws_instance.drbd.0.id
28+
network_interface_id = aws_instance.drbd.0.primary_network_interface_id
2629
}
2730

2831
module "sap_cluster_policies" {
@@ -67,13 +70,13 @@ resource "aws_instance" "drbd" {
6770
}
6871

6972
volume_tags = {
70-
Name = "${var.common_variables["deployment_name"]}-${var.name}0${count.index + 1}"
73+
Name = "${var.common_variables["deployment_name"]}-${var.name}${format("%02d", count.index + 1)}"
7174
}
7275

7376
tags = {
74-
Name = "${var.common_variables["deployment_name"]} - ${var.name}0${count.index + 1}"
77+
Name = "${var.common_variables["deployment_name"]}-${var.name}${format("%02d", count.index + 1)}"
7578
Workspace = var.common_variables["deployment_name"]
76-
"${var.common_variables["deployment_name"]}-cluster" = "${var.name}0${count.index + 1}"
79+
"${var.common_variables["deployment_name"]}-cluster" = "${var.name}${format("%02d", count.index + 1)}"
7780
}
7881
}
7982

0 commit comments

Comments
 (0)