stacks/NetWeaver-HA/tf/main.tf (175 lines of code) (raw):
/**
* Copyright 2021 Google LLC
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
provider "google" {
}
module "hana_ha" {
source = "../../../terraform/modules/hana-ha"
instance_name = var.hana_instance_name
instance_name_primary = var.hana_instance_name_primary
instance_name_secondary = var.hana_instance_name_secondary
instance_type = var.hana_instance_type
project_id = var.project_id
primary_zone = var.primary_zone
secondary_zone = var.secondary_zone
gce_ssh_user = var.gce_ssh_user
gce_ssh_pub_key_file = var.gce_ssh_pub_key_file
service_account_email = var.hana_service_account_email
subnetwork = var.subnetwork_hana
subnetwork_project = local.subnetwork_project
source_image_family = var.source_image_family
source_image_project = var.source_image_project
additional_disk_type = var.hana_additional_disk_type
boot_disk_size = var.hana_boot_disk_size
boot_disk_type = var.hana_boot_disk_type
autodelete_disk = var.hana_autodelete_boot_disk
network_tags = var.hana_network_tags
target_size = 1
pd_kms_key = var.hana_pd_kms_key
create_backup_volume = var.hana_create_backup_volume
}
module "netweaver_ascs" {
source = "../../../terraform/modules/nw-ha"
instance_name = var.ascs_instance_name
zone = var.primary_zone
ssh_user = var.gce_ssh_user
project_id = var.project_id
public_key_path = var.gce_ssh_pub_key_file
region = local.region
subnetwork = var.subnetwork_nw
subnetwork_project = local.subnetwork_project
source_image_family = var.source_image_family
source_image_project = var.source_image_project
usr_sap_size = var.nw_usrsap_disk_size
swap_size = var.nw_swap_disk_size
instance_type = var.nw_instance_type
boot_disk_size = var.nw_boot_disk_size
autodelete_disk = var.nw_autodelete_boot_disk
network_tags = var.nw_network_tags
service_account_email = var.nw_service_account_email
}
module "netweaver_ers" {
source = "../../../terraform/modules/nw-ha"
instance_name = var.ers_instance_name
zone = var.secondary_zone
project_id = var.project_id
ssh_user = var.gce_ssh_user
public_key_path = var.gce_ssh_pub_key_file
region = local.region
subnetwork = var.subnetwork_nw
subnetwork_project = local.subnetwork_project
source_image_family = var.source_image_family
source_image_project = var.source_image_project
usr_sap_size = var.nw_usrsap_disk_size
swap_size = var.nw_swap_disk_size
instance_type = var.nw_instance_type
boot_disk_size = var.nw_boot_disk_size
autodelete_disk = var.nw_autodelete_boot_disk
network_tags = var.nw_network_tags
service_account_email = var.nw_service_account_email
}
module "netweaver_as" {
source = "../../../terraform/modules/nw-ha"
instance_name = var.pas_instance_name
zone = var.primary_zone
project_id = var.project_id
ssh_user = var.gce_ssh_user
public_key_path = var.gce_ssh_pub_key_file
region = local.region
subnetwork = var.subnetwork_nw
subnetwork_project = local.subnetwork_project
source_image_family = var.source_image_family
source_image_project = var.source_image_project
usr_sap_size = var.nw_usrsap_disk_size
swap_size = var.nw_swap_disk_size
instance_type = var.nw_instance_type
boot_disk_size = var.nw_boot_disk_size
autodelete_disk = var.nw_autodelete_boot_disk
network_tags = var.nw_network_tags
service_account_email = var.nw_service_account_email
target_size = var.nw_as_num_instances
}
module "ascs_ilb" {
source = "../../../terraform/modules/terraform-google-lb-internal"
project = var.project_id
network_project = local.subnetwork_project
region = local.region
network = local.network_nw
subnetwork = var.subnetwork_nw
name = "${var.ascs_instance_name}-ilb"
source_tags = ["soure-tag"]
target_tags = ["target-tag"]
ports = var.ports
all_ports = var.all_ports
health_check = local.ascs_health_check
backends = [
{
group = module.netweaver_ascs.umig_self_link
description = "Primary instance backend group"
failover = false
},
{
group = module.netweaver_ers.umig_self_link
description = "failover instance backend group"
failover = true
}
]
}
module "ers_ilb" {
source = "../../../terraform/modules/terraform-google-lb-internal"
project = var.project_id
network_project = local.subnetwork_project
region = local.region
network = local.network_nw
ilb_required = local.ilb_required
subnetwork = var.subnetwork_nw
name = "${var.ers_instance_name}-ilb"
source_tags = ["soure-tag"]
target_tags = ["target-tag"]
ports = var.ports
all_ports = var.all_ports
health_check = local.ers_health_check
backends = [
{
group = module.netweaver_ers.umig_self_link
description = "Primary instance backend group"
failover = false
},
{
group = module.netweaver_ascs.umig_self_link
description = "failover instance backend group"
failover = true
}
]
}
data "google_compute_subnetwork" "subnetwork_hana" {
name = var.subnetwork_hana
region = local.region
project = local.subnetwork_project
}
data "google_compute_subnetwork" "subnetwork_nw" {
name = var.subnetwork_nw
region = local.region
project = local.subnetwork_project
}
resource "google_compute_address" "gcp_sap_s4hana_alias_ip" {
count = local.ilb_required == false ? 1 : 0
name = "${var.ers_instance_name}-ip"
address_type = "INTERNAL"
subnetwork = var.subnetwork_nw
region = local.region
project = var.project_id
purpose = "GCE_ENDPOINT"
}