Note
Access to this page requires authorization. You can try signing in or changing directories.
Access to this page requires authorization. You can try changing directories.
An SAP application typically has multiple development tiers. For example, you might have development, quality assurance, and production tiers. SAP Deployment Automation Framework calls these tiers workload zones. See the following diagram for an example of a workload zone with two SAP systems.
 
The workload zone provides shared services to all of the SAP Systems in the workload zone. These shared services include:
- Azure Virtual Network
- Azure Key Vault
- Shared Azure Storage Account for installation media
- Azure NetApp Files account and capacity pool (optional)
The workload zone is typically deployed in a spoke subscription and the deployment of all the artifacts in the workload zone is done using unique service principal.
Workload zone deployment configuration
The configuration of the SAP workload zone is done via a Terraform tfvars variable file. You can find examples of the variable file in the samples/WORKSPACES/LANDSCAPE folder.
The following sections show the different sections of the variable file.
Environment parameters
This table contains the parameters that define the environment settings.
| Variable | Description | Type | Notes | 
|---|---|---|---|
| environment | Identifier for the workload zone (max five characters) | Mandatory | For example, PRODfor a production environment andQAfor a Quality Assurance environment. | 
| location | The Azure region in which to deploy | Required | |
| name_override_file | Name override file | Optional | See Custom naming. | 
| tags | A dictionary of tags to associate with all resources. | Optional | 
Resource group parameters
This table contains the parameters that define the resource group.
| Variable | Description | Type | 
|---|---|---|
| resourcegroup_name | Name of the resource group to be created | Optional | 
| resourcegroup_arm_id | Azure resource identifier for an existing resource group | Optional | 
| resourcegroup_tags | Tags to be associated with the resource group | Optional | 
Network parameters
The automation framework supports both creating the virtual network and the subnets (green field) or using an existing virtual network and existing subnets (brown field) or a combination of green field and brown field:
- Green-field scenario: The virtual network address space and the subnet address prefixes must be specified.
- Brown-field scenario: The Azure resource identifier for the virtual network and the subnets must be specified.
Ensure that the virtual network address space is large enough to host all the resources.
This table contains the networking parameters.
| Variable | Description | Type | Notes | 
|---|---|---|---|
| network_logical_name | The logical name of the network, for example, SAP01 | Required | Used for resource naming | 
| network_name | The name of the network | Optional | |
| network_arm_id | The Azure resource identifier for the virtual network | Optional | For brown-field deployments | 
| network_address_space | The address range for the virtual network | Mandatory | For green-field deployments | 
| admin_subnet_address_prefix | The address range for the adminsubnet | Mandatory | For green-field deployments | 
| admin_subnet_arm_id | The Azure resource identifier for the adminsubnet | Mandatory | For brown-field deployments | 
| admin_subnet_name | The name of the adminsubnet | Optional | |
| admin_subnet_nsg_name | The name of the adminnetwork security group | Optional | |
| admin_subnet_nsg_arm_id | The Azure resource identifier for the adminnetwork security group | Mandatory | For brown-field deployments | 
| db_subnet_address_prefix | The address range for the dbsubnet | Mandatory | For green-field deployments | 
| db_subnet_arm_id | The Azure resource identifier for the dbsubnet | Mandatory | For brown-field deployments | 
| db_subnet_name | The name of the dbsubnet | Optional | |
| db_subnet_nsg_name | The name of the dbnetwork security group | Optional | |
| db_subnet_nsg_arm_id | The Azure resource identifier for the dbnetwork security group | Mandatory | For brown-field deployments | 
| app_subnet_address_prefix | The address range for the appsubnet | Mandatory | For green-field deployments | 
| app_subnet_arm_id | The Azure resource identifier for the appsubnet | Mandatory | For brown-field deployments | 
| app_subnet_name | The name of the appsubnet | Optional | |
| app_subnet_nsg_name | The name of the appnetwork security group | Optional | |
| app_subnet_nsg_arm_id | The Azure resource identifier for the appnetwork security group | Mandatory | For brown-field deployments | 
| web_subnet_address_prefix | The address range for the websubnet | Mandatory | For green-field deployments | 
| web_subnet_arm_id | The Azure resource identifier for the websubnet | Mandatory | For brown-field deployments | 
| web_subnet_name | The name of the websubnet | Optional | |
| web_subnet_nsg_name | The name of the webnetwork security group | Optional | |
| web_subnet_nsg_arm_id | The Azure resource identifier for the webnetwork security group | Mandatory | For brown-field deployments | 
This table contains the networking parameters if Azure NetApp Files is used.
| Variable | Description | Type | Notes | 
|---|---|---|---|
| anf_subnet_arm_id | The Azure resource identifier for the ANFsubnet | Required | When using existing subnets | 
| anf_subnet_address_prefix | The address range for the ANFsubnet | Required | When using ANFfor deployments | 
| anf_subnet_name | The name of the ANFsubnet | Optional | |
| anf_subnet_nsg_name | The name of the anfnetwork security group | Optional | |
| anf_subnet_nsg_arm_id | The Azure resource identifier for the anfnetwork security group | Optional | For brown-field deployments | 
This table contains the networking parameters if iSCSI devices are hosted from this workload zone.
| Variable | Description | Type | Notes | 
|---|---|---|---|
| iscsi_subnet_address_prefix | The address range for the iscsisubnet | Mandatory | For green-field deployments | 
| iscsi_subnet_arm_id | The Azure resource identifier for the iscsisubnet | Mandatory | For brown-field deployments | 
| iscsi_subnet_name | The name of the iscsisubnet | Optional | |
| iscsi_subnet_nsg_arm_id | The Azure resource identifier for the iscsinetwork security group | Mandatory | For brown-field deployments | 
| iscsi_subnet_nsg_name | The name of the iscsinetwork security group | Optional | 
This table contains the networking parameters if Azure Monitor for SAP is hosted from this workload zone.
| Variable | Description | Type | Notes | 
|---|---|---|---|
| ams_subnet_address_prefix | The address range for the iscsisubnet | Mandatory | For green-field deployments | 
| ams_subnet_arm_id | The Azure resource identifier for the iscsisubnet | Mandatory | For brown-field deployments | 
| ams_subnet_name | The name of the iscsisubnet | Optional | |
| ams_subnet_nsg_arm_id | The Azure resource identifier for the iscsinetwork security group | Mandatory | For brown-field deployments | 
| ams_subnet_nsg_name | The name of the iscsinetwork security group | Optional | 
This table contains additional networking parameters.
| Variable | Description | Type | Notes | 
|---|---|---|---|
| use_private_endpoint | Are private endpoints created for storage accounts and key vaults. | Optional | |
| use_service_endpoint | Are service endpoints defined for the subnets. | Optional | |
| peer_with_control_plane_vnet | Are virtual networks peered with the control plane virtual network. | Optional | Required for the SAP Installation | 
| public_network_access_enabled | Is public access enabled on the storage accounts and key vaults | Optional | 
Minimum required network definition
network_logical_name = "SAP01"
network_address_space = "10.110.0.0/16"
db_subnet_address_prefix = "10.110.96.0/19"
app_subnet_address_prefix = "10.110.32.0/19"
Authentication parameters
This table defines the credentials used for defining the virtual machine authentication.
| Variable | Description | Type | Notes | 
|---|---|---|---|
| automation_username | Administrator account name | Optional | Default: azureadm | 
| automation_password | Administrator password | Optional | |
| automation_path_to_public_key | Path to existing public key | Optional | |
| automation_path_to_private_key | Path to existing private key | Optional | |
| use_spn | If defined the deployment will be performed using a Service Principal, otherwise an MSI | Optional | 
Minimum required authentication definition
automation_username = "azureadm"
Key vault parameters
This table defines the parameters used for defining the key vault information.
| Variable | Description | Type | Notes | 
|---|---|---|---|
| spn_keyvault_id | Azure resource identifier for existing deployment credentials (SPNs) key vault | Optional | |
| user_keyvault_id | Azure resource identifier for existing system credentials key vault | Optional | |
| additional_users_to_add_to_keyvault_policies | A list of user object IDs to add to the deployment key vault access policies | Optional | |
| enable_purge_control_for_keyvaults | Disables the purge protection for Azure key vaults | Optional | Use only for test environments. | 
| enable_rbac_authorization_for_keyvault | Enables RBAC on key vaults | Optional | |
| soft_delete_retention_days | The number of days that items should be retained in the soft delete period | Optional | |
| keyvault_private_endpoint_id | Azure resource ID of the key vault's private endpoint | Optional | 
Private DNS
| Variable | Description | Type | 
|---|---|---|
| dns_label | If specified, is the DNS name of the private DNS zone | Optional | 
| dns_resource_group_name | The name of the resource group that contains the private DNS zone | Optional | 
| register_virtual_network_to_dns | Controls if the SAP Virtual Network is registered with the private DNS zone | Optional | 
| dns_server_list | If specified, a list of DNS Server IP addresses | Optional | 
NFS support
| Variable | Description | Type | Notes | 
|---|---|---|---|
| create_transport_storage | If defined, create storage for the transport directories. | Optional | |
| export_install_path | If provided, export mount path for the installation media. | Optional | |
| export_transport_path | If provided, export mount path for the transport share. | Optional | |
| install_always_create_fileshares | Always create file shares. | Optional | |
| install_private_endpoint_id | Azure resource ID for the installprivate endpoint. | Optional | For existing endpoints | 
| install_volume_size | Defines the size (in GB) for the installvolume. | Optional | |
| NFS_provider | Defines what NFS back end to use. | Optional | The options are AFSfor Azure Files NFS orANFfor Azure NetApp Files,NONEfor NFS from the SCS server, orNFSfor an external NFS solution. | 
| transport_private_endpoint_id | Azure resource ID of the key vault's private endpoint | Optional | |
| transport_volume_size | Defines the size (in GB) for the transportvolume. | Optional | |
| use_AFS_for_installation_media | If provided, uses AFS for the installation media. | Optional | 
Azure Files NFS support
| Variable | Description | Type | Notes | 
|---|---|---|---|
| install_storage_account_id | Azure resource identifier for the installstorage account | Optional | For brown-field deployments | 
| transport_storage_account_id | Azure resource identifier for the transportstorage account | Optional | For brown-field deployments | 
| Storage account replication type | Storage account replication type, default ZRS | Optional | 
Minimum required Azure Files NFS definition
NFS_provider              = "AFS"
use_private_endpoint      = true
Azure NetApp Files support
| Variable | Description | Type | Notes | 
|---|---|---|---|
| ANF_account_name | Name for the Azure NetApp Files account | Optional | |
| ANF_service_level | Service level for the Azure NetApp Files capacity pool | Optional | |
| ANF_pool_size | The size (in GB) of the Azure NetApp Files capacity pool | Optional | |
| ANF_qos_type | The quality of service type of the pool (auto or manual) | Optional | |
| ANF_use_existing_pool | Use existing for the Azure NetApp Files capacity pool | Optional | |
| ANF_pool_name | The name of the Azure NetApp Files capacity pool | Optional | |
| ANF_account_arm_id | Azure resource identifier for the Azure NetApp Files account | Optional | For brown-field deployments | 
| ANF_transport_volume_use_existing | Defines if an existing transport volume is used | Optional | |
| ANF_transport_volume_name | Defines the transport volume name | Optional | For brown-field deployments | 
| ANF_transport_volume_size | Defines the size of the transport volume in GB | Optional | |
| ANF_transport_volume_throughput | Defines the throughput of the transport volume | Optional | |
| ANF_transport_volume_zone | Defines the availability zone of the transport volume | Optional | |
| ANF_install_volume_use_existing | Defines if an existing install volume is used | Optional | |
| ANF_install_volume_name | Defines the install volume name | Optional | For brown-field deployments | 
| ANF_install_volume_size | Defines the size of the install volume in GB | Optional | |
| ANF_install_volume_throughput | Defines the throughput of the install volume | Optional | |
| ANF_install_volume_zone | Defines the availability zone of the install volume | Optional | 
Minimum required ANF definition
NFS_provider              = "ANF"
anf_subnet_address_prefix = "10.110.64.0/27"
ANF_service_level         = "Ultra"
DNS support
| Variable | Description | Type | 
|---|---|---|
| dns_label | DNS name of the private DNS zone. | Optional | 
| management_dns_resourcegroup_name | Resource group that contains the private DNS zone. | Optional | 
| management_dns_subscription_id | Subscription ID for the subscription that contains the private DNS zone. | Optional | 
| use_custom_dns_a_registration | Use an existing private DNS zone. | Optional | 
NAT support
| Variable | Description | Type | 
|---|---|---|
| deploy_nat_gateway | If set, deploys a NAT gateway. | Optional | 
| nat_gateway_name | The name of the NAT Gateway. | Optional | 
| nat_gateway_arm_id | The Azure resource identifier of the NAT Gateway. | Optional | 
| nat_gateway_public_ip_zones | The zones for the NAT Gateway public IP address | Optional | 
| nat_gateway_public_ip_arm_id | The Azure resource identifier for the NAT Gateway public IP address | Optional | 
| nat_gateway_idle_timeout_in_minutes | The idle timeout in minutes for the NAT Gateway (default=4) | Optional | 
| nat_gateway_public_ip_tags | Tags for the public IP resource | Optional | 
Other parameters
| Variable | Description | Type | Notes | 
|---|---|---|---|
| diagnostics_storage_account_arm_id | The Azure resource identifier for the diagnostics storage account. | Required | For brown-field deployments. | 
| place_delete_lock_on_resources | Places delete locks on the key vaults and the virtual network | Optional | |
| witness_storage_account_arm_id | The Azure resource identifier for the witness storage account. | Required | For brown-field deployments. | 
| Agent_IP | IP address of the agent. | Optional | |
| add_Agent_IP | Controls if Agent IP is added to the key vault and storage account firewalls | Optional | |
| enable_firewall_for_keyvaults_and_storage | Restrict access to selected subnets. | Optional | 
iSCSI parameters
| Variable | Description | Type | Notes | 
|---|---|---|---|
| iscsi_authentication_type | Defines the default authentication for the iSCSI virtual machines | Optional | |
| iscsi_authentication_username | Administrator account name | Optional | |
| iscsi_count | The number of iSCSI virtual machines | Optional | |
| iscsi_size | The size of iSCSI virtual machines | Optional | |
| iscsi_image | Defines the virtual machine image to use (next table) | Optional | |
| iscsi_nic_ips | IP addresses for the iSCSI virtual machines | Optional | Ignored if iscsi_use_DHCPis defined | 
| iscsi_use_DHCP | Controls whether to use dynamic IP addresses provided by the Azure subnet | Optional | |
| iscsi_vm_zones | Availability zones for the iSCSI Virtual Machines | Optional | 
Utility VM parameters
| Variable | Description | Type | Notes | 
|---|---|---|---|
| utility_vm_count | Defines the number of utility virtual machines to deploy | Optional | Use the utility virtual machine to host SAPGui | 
| utility_vm_image | Defines the virtual machine image to use | Optional | Default: Windows Server 2019 | 
| utility_vm_nic_ips | Defines the IP addresses for the virtual machines | Optional | |
| utility_vm_os_disk_size | Defines the size of the OS disk for the Virtual Machine | Optional | Default: 128 | 
| utility_vm_os_disk_type | Defines the type of the OS disk for the Virtual Machine | Optional | Default: Premium_LRS | 
| utility_vm_size | Defines the SKU for the utility virtual machines | Optional | Default: Standard_D4ds_v4 | 
| utility_vm_useDHCP | Defines if Azure subnet provided IPs should be used | Optional | |
| `user_assigned_identity_id | User assigned identity to assign to the virtual machines | Optional | 
The virtual machine and the operating system image are defined by using the following structure:
{
  os_type         = "linux"
  type            = "marketplace"
  source_image_id = ""
  publisher       = "SUSE"
  offer           = "sles-sap-15-sp5"
  sku             = "gen2"
  version=        " latest"
}
Azure Monitor for SAP parameters
| Variable | Description | Type | Notes | 
|---|---|---|---|
| create_ams_instance | Defines if an Azure Monitor for SAP instance should be created | Optional | |
| ams_instance_name | Defines the name of the instance | Optional | |
| ams_laws_arm_id | Defines the ARM resource ID for the Log Analytics Workspace | Optional | 
Terraform parameters
This table contains the Terraform parameters. These parameters need to be entered manually if you're not using the deployment scripts.
| Variable | Description | Type | 
|---|---|---|
| tfstate_resource_id | The Azure resource identifier for the storage account in the SAP library that contains the Terraform state files. | Required | 
| deployer_tfstate_key | The name of the state file for the deployer. | Required |