Skip to content

Latest commit

 

History

History
488 lines (466 loc) · 34 KB

configuration-sap_deployment_unit.md

File metadata and controls

488 lines (466 loc) · 34 KB

SAP Deployment Automation FrameworkSAP Deployment Automation Framework

Configuration - SAP Deployment Unit

Table of Contents


Parameter file construction

The parameters to the automation are passed in a JSON structure with a set of root nodes defining the properties of the system.

Node Description
infrastructure This node defines the resource group and the networking information.
application This node defines attributes for the application tier, the number of Virtual machines, the image they use,..
database This node defines attributes for the database tier, the number of Virtual machines, the image they use,...
authentication If specified - This node defines the authentication details for the system. The default setup uses the information from the workload zone key vault.
options If specified - This node defines special settings for the environment

A comprehensive representation of the json is shown below.

JSON structure

{
  "infrastructure": {                                                             <-- Required Block
    "environment"                     : "NP",                                     <-- Required Parameter
    "region"                          : "eastus2",                                <-- Required Parameter
    "resource_group": {                                                           <-- Optional Block
      "name"                          : "NP-EUS2-SAP01-PRD",                      <-- Optional
      "arm_id"                        : ""                                        <-- Optional
    },
    "anchor_vms": {                                                               <-- Optional Block
      "sku"                           : "Standard_D4s_v4",                        
      "authentication": {
        "type"                        : "key",
        "username"                    : "azureadm"
      },
      "accelerated_networking"        : true,
      "os": {
        "publisher"                   : "SUSE",
        "offer"                       : "sles-sap-12-sp5",
        "sku"                         : "gen1"
      },
      "nic_ips"                       : ["", "", ""],
      "use_DHCP"                      : false
    },
    "vnets": {
      "sap": {
        "name"                        : "",                                       <-- Required Parameter
        "subnet_db": {                                                            <-- Optional block
          "arm_id"                    : ""                                        <-- Either arm_id or prefix is required if block is specified
          "prefix"                    : "10.1.1.0/28"                             <-- Either arm_id or prefix is required if block is specified
        },
        "subnet_web": {
          "arm_id"                    : ""                                        <-- Either arm_id or prefix is required if block is specified
          "prefix"                    : "10.1.1.16/28"                            <-- Either arm_id or prefix is required if block is specified
        },
        "subnet_app": {
          "arm_id"                    : ""                                        <-- Either arm_id or prefix is required if block is specified
          "prefix"                    : "10.1.1.32/28"                            <-- Either arm_id or prefix is required if block is specified
        },
        "subnet_admin": {
          "arm_id"                    : ""                                        <-- Either arm_id or prefix is required if block is specified
          "prefix"                    : "10.1.1.48/28"                            <-- Either arm_id or prefix is required if block is specified
        }
      }
    }
  },
  "databases": [
    {
      "platform"                      : "HANA",                                   <-- Required Parameter
      "high_availability"             : false,                                    <-- Required Parameter
      "db_version"                    : "2.00.050",
      "size"                          : "Default",                                <-- Required Parameter
      "os": {
        "os_type"                     : "",                                       
        "source_image_id"             : "",
        "publisher"                   : "SUSE",                                   <-- Required Parameter
        "offer"                       : "sles-sap-12-sp5",                        <-- Required Parameter
        "sku"                         : "gen2"                                    <-- Required Parameter
      },
      "zones"                         : ["1"],                                    <-- Optional Parameter
      "avset_arm_ids"                 : [""],                                     <-- Optional Parameter
      "use_DHCP"                      : false,                                    <-- Optional Parameter
      "loadbalancer" : {
        "frontend_ip"                 : ""                                        <-- Optional Parameter
      },  
      "dbnodes" : [                                                               <-- Required Parameter
          {    
            "name"                    : "",                                       <-- Optional parameter
            "db_nic_ips"              : ["",""],                                  <-- Optional parameter
            "admin_nic_ips"           : ["",""]                                   <-- Optional parameter
          }
                  ]             
    }
  ],
  "application": {                                                                <-- Required Block
    "enable_deployment"               : true,                                     <-- Required Parameter
    "sid"                             : "PRD",                                    <-- Required Parameter
    "use_DHCP"                        : false,                                    <-- Optional Parameter
    "application_server_count"        : 3,                                        <-- Required Parameter
    "app_zones"                       : ["1", "2"],                               <-- Optional Parameter
    "app_sku"                         : "Standard_E4ds_v4",
    "os" : {
        "os_type"                     : "",                                       
        "source_image_id"             : "",
        "publisher"                   : "SUSE",                                   <-- Required Parameter
        "offer"                       : "sles-sap-12-sp5",                        <-- Required Parameter
        "sku"                         : "gen2"                                    <-- Required Parameter
      },
    "app_nic_ips"                     : ["", ""],                                 <-- Optional parameter
    "app_admin_nic_ips"               : ["", ""],                                 <-- Optional parameter
    "scs_high_availability"           : false,                                    <-- Required Parameter
    "scs_instance_number"             : "00",                                     <-- Required Parameter
    "ers_instance_number"             : "10",                                     <-- Required Parameter
    "scs_zones"                       : ["1"],                                    <-- Optional Parameter
    "scs_sku"                         : "Standard_E4ds_v4",
    "scs_os" : {                                                                  <-- Optional block
        "os_type"                     : "",                                       
        "source_image_id"             : "",
        "publisher"                   : "SUSE",
        "offer"                       : "sles-sap-12-sp5",
        "sku"                         : "gen2"
      },
    "scs_nic_ips"                     : [""],                                     <-- Optional parameter
    "scs_admin_nic_ips"               : [""],                                     <-- Optional parameter
    "scs_lb_ips"                      : [""],                                     <-- Optional parameter
    "webdispatcher_count"             : 1,                                        <-- Required Parameter
    "web_zones"                       : ["1"],                                    <-- Optional Parameter
    "web_sku"                         : "Standard_E4ds_v4"
    "web_os" : {                                                                  <-- Optional block
        "os_type"                     : "",                                       
        "source_image_id"             : "",
        "publisher"                   : "SUSE",
        "offer"                       : "sles-sap-12-sp5",
        "sku"                         : "gen2"
      },
    "web_nic_ips"                     : [""],                                     <-- Optional parameter
    "web_admin_nic_ips"               : [""],                                     <-- Optional parameter
    "web_lb_ips"                      : [""],                                     <-- Optional parameter
    "authentication": {
      "type"                          : "key",
    }
  },
  "options": {                                                                    <-- Optional Block
    "resource_offset"                 : 0,
  },
  "key_vault": {                                                                  <-- Optional Block
    "kv_user_id": "",
    "kv_prvt_id": "",
    "kv_sid_sshkey_prvt" : "",
    "kv_sid_sshkey_pub" : "",
    "kv_spn_id": ""
  },
  "authentication": {                                                             <-- Optional Block
    "username"                        : "azureadm"
    "password"                        : "T0pSecret"
    "path_to_public_key"              : "sshkey.pub",
    "path_to_private_key"             : "sshkey"
  },
  "tfstate_resource_id"               : "",                                       <-- Required Parameter
  "deployer_tfstate_key"              : "",                                       <-- Required Parameter
  "landscape_tfstate_key"             : "",                                       <-- Required Parameter
  "db_disk_sizes_filename"            : "",                                       <-- Optional Parameter
  "app_disk_sizes_filename"           : "",                                       <-- Optional Parameter
}                                                                                 <-- JSON Closing tag
Node Attribute Type Default Description
infrastructure. environment required -------- The Environment is a 5 Character designator used for identifying the workload zone. An example of partitioning would be, PROD / NP (Production and Non-Production). Environments may also be tied to a unique SPN or Subscription.
infrastructure. region required This specifies the Azure Region in which to deploy.
infrastructure.resource_group. arm_id optional If specified the Azure Resource ID of Resource Group to use for the deployment

infrastructure.resource_group. name optional If specified the name of the resource group to be created

infrastructure.anchor_vms. sku optional This is populated if a anchor vm is needed to anchor the proximity placement groups to a specific zone.
infrastructure.anchor_vms.authentication. type optional Authentication type for the anchor VM, key or password
infrastructure.anchor_vms. accelerated_networking optional false Boolean flag indicationg if the Anchor VM should use accelerated networking.
infrastructure.anchor_vms.os. publisher optional This is the marketplace image publisher
infrastructure.anchor_vms.os. offer optional This is the marketplace image offer
infrastructure.anchor_vms.os. sku optional This is the marketplace image sku
infrastructure.anchor_vms. nic_ips optional This is the list of IP addresses that the anchor VMs should use. The list needs as many entries as the total Availability Zone count for all the Virtual Machines in the deployment, not needed if use_DCHP is true
infrastructure.anchor_vms. use_DHCP optional false If set to true the IP addresses for the VMs will be provided by the subnet

infrastructure.vnets.sap.subnet_admin arm_id required If provided, the Azure resource ID for the admin subnet
or
infrastructure.vnets.sap.subnet_admin name required If provided, the name for the admin subnet to be created
infrastructure.vnets.sap.subnet_admin prefix required If provided, the admin subnet address prefix of the subnet

infrastructure.vnets.sap.subnet_app arm_id required If provided, the Azure resource ID for the application subnet
or
infrastructure.vnets.sap.subnet_app name required If provided, the name for the application subnet to be created
infrastructure.vnets.sap.subnet_app prefix required If provided, the application subnet address prefix of the subnet

infrastructure.vnets.sap.subnet_db arm_id required If provided, the Azure resource ID for the database subnet
or
infrastructure.vnets.sap.subnet_db name required If provided, the name for the database subnet to be created
infrastructure.vnets.sap.subnet_db prefix required If provided, the database subnet address prefix of the subnet

infrastructure.vnets.sap.subnet_web arm_id optional If provided, the Azure resource ID for the web dispatcher subnet
or
infrastructure.vnets.sap.subnet_web name optional If provided, the name for the web dispatcher subnet to be created
infrastructure.vnets.sap.subnet_web prefix optional If provided, the web dispatcher subnet address prefix of the subnet

databases.[]. platform required This field indicates the database type for the backend. Valid options are HANA, DB2, ORACLE; SQLSERVER, ASE or NONE. If NONE is specified then no database tier gest deployed.
databases.[]. high_availability optional If set to true then the automation will deploy twice the number of servers defined in the count of nodes list.
databases.[]. size required This field maps to the sizing of disks. For HANA this should be the Virtual Machine SKu (M32, M128ms) etc. For AnyDB the sizing is based on the databases size in gigabytes, valid choices are 200, 500, 1024, 2048, 5120, 10240, 15360, 20480, 30720, 40960, 51200. It is also possible to provide custom sizing, see Custom disk sizing for more details

databases.[].os. os_type Required if custom image ID is provided
databases.[].os. source_image_id The resource Id for the custom image to use.
or
databases.[].os. publisher The publisher of the image used to create the virtual machine.
databases.[].os. offer The offer of the image used to create the virtual machine.
databases.[].os. sku The SKU of the image used to create the virtual machine.
databases.[]. zones A list of the Availability Zones into which the Virtual Machines is deployed.
databases.[]. avset_arm_ids.[] If provided, the name of the availability set into which the Virtual Machine is deployed
databases.[]. use_DHCP false If set to true the IP addresses for the VMs will be provided by the subnet
databases.[].dbnodes.[]. name If specified, the name of the Virtual Machine
databases.[].dbnodes.[]. db_nic_ips.[] If specified, the IPs of the Virtual Machine (db nic)
databases.[].dbnodes.[]. admin_nic_ips.[] If specified, the IPs of the Virtual Machine (admin nic)
databases.[].loadbalancer. frontend_ip The IP of the load balancer

application. enable_deployment Boolean flag indicating if the application tier will be deployed
application. sid required The SAP application SID
application. application_server_count The number of application servers to be deployed
application. app_zones A list of the Availability Zones into which the Virtual Machines is deployed.
application. app_sku The Virtual machine SKU to use
application. dual_nics Boolean flag indicating if the application tier will be deployed with dual network cards
application. app_nic_ips[] The list of IP addresses of the application VM (app subnet)
application. app_admin_nic_ips[] The list of IP addresses of the application VM (admin subnet)

application.os. os_type Required if custom image ID is provided
application.os. source_image_id The resource Id for the custom image to use.
or
application.os. publisher The publisher of the image used to create the virtual machine.
application.os. offer The offer of the image used to create the virtual machine.
application.os. sku The SKU of the image used to create the virtual machine.

application. scs_server_count The number of SCS servers to be deployed
application. scs_instance_number The instance number of SCS
application. ers_instance_number The instance number of ERS
application. scs_high_availability Boolean flag indicating if SCS should be deployed highly available.
application. scs_zones A list of the Availability Zones into which the Virtual Machines is deployed.
application. scs_sku The Virtual machine SKU to use
application. scs_nic_ips[] The list of IP addresses of the scs VM (app subnet)
application. scs_admin_nic_ips[] The list of IP addresses of the scs VM (admin subnet)

application.scs_os. os_type Required if custom image ID is provided
application.scs_os. source_image_id The resource Id for the custom image to use.
or
application.scs_os. publisher The publisher of the image used to create the virtual machine.
application.scs_os. offer The offer of the image used to create the virtual machine.
application.scs_os. sku The SKU of the image used to create the virtual machine.

application. webdispatcher_count The number of web dispatchers to be deployed
application. web_zones A list of the Availability Zones into which the Virtual Machines is deployed.
application. web_sku The Virtual machine SKU to use
application. web_nic_ips[] The list of IP addresses of the web dispatcher VM (app/web subnet)
application. web_admin_nic_ips[] The list of IP addresses of the web dispatcher VM (admin subnet)

application.web_os. os_type Required if custom image ID is provided
application.web_os. source_image_id The resource Id for the custom image to use.
or
application.web_os. publisher The publisher of the image used to create the virtual machine.
application.web_os. offer The offer of the image used to create the virtual machine.
application.web_os. sku The SKU of the image used to create the virtual machine.

application. use_DHCP false If set to true the IP addresses for the VMs will be provided by the subnet
application.authentication. type The authentication type for the Virtual Machine, valid options are "Password", "Key"

authentication. username optional If specified the default username for the environment
authentication. password optional If specified the password for the environment.
If not specified, Terraform will create a password and store it in keyvault
authentication. path_to_public_key optional If specified the path to the SSH public key file. If not specified, Terraform will create and store it in keyvault
authentication. path_to_private_key optional If specified the path to the SSH private key file. If not specified, Terraform will create and store it in keyvault

options. resource_offset 0 The offset used for resource naming when creating multiple resources, for example -disk0, disk1. If changing the resource_offset to 1 the disks will be renamed disk1, disk2
options. disk_encryption_set_id Disk encryption key to use for encrypting the managed disks

key_vault. kv_user_id optional If provided, the Key Vault resource ID of the user Key Vault to be used.
key_vault. kv_prvt_id optional If provided, the Key Vault resource ID of the private Key Vault to be used.
key_vault. kv_spn_id optional If provided, the Key Vault resource ID of the private Key Vault containing the SPN details.

tfstate_resource_id required This is the Azure Resource ID for the Storage Account in which the Statefiles are stored. Typically this is deployed by the SAP Library execution unit.
deployer_tfstate_key Remote State required This is the deployer state file name, used for finding the correct state file.
Case-sensitive
landscape_tfstate_key Remote State required This is the landscape state file name, used for finding the correct state file.
Case-sensitive
db_disk_sizes_filename optional If specified the custom disk sizing json file name for the database
app_disk_sizes_filename optional If specified the custom disk sizing json file name for the app tier

Examples

Minimal (Default) input parameter JSON

{
  "infrastructure": {
    "environment"                     : "NP",
    "region"                          : "eastus2",
    "vnets": {
      "sap": {
        "name"                        : "SAP-01"           
      }
    }
  },
  "databases": [
    {
      "platform"                      : "HANA",
      "high_availability"             : false,
      "db_version"                    : "2.00.050",
      "size"                          : "Demo",
      "os": {
        "publisher"                   : "SUSE",
        "offer"                       : "sles-sap-12-sp5",
        "sku"                         : "gen1"
      }
    }
  ],
  "application": {
    "enable_deployment"               : true,
    "sid"                             : "PRD",
    "scs_instance_number"             : "00",
    "ers_instance_number"             : "10",
    "scs_high_availability"           : false,
    "application_server_count"        : 3,
    "webdispatcher_count"             : 1,
  },
  "options": {
  },
  "tfstate_resource_id"               : "",
  "deployer_tfstate_key"              : "",
  "landscape_tfstate_key"             : ""
}




Complete input parameter JSON

{
  "infrastructure": {
    "environment"                     : "NP",
    "region"                          : "eastus2",
    "resource_group": {
      "name"                          : "NP-EUS2-SAP-PRD",
      "arm_id"                        : ""
    },
    "anchor_vms": {
      "sku"                           : "Standard_D4s_v4",
      "authentication": {
        "type"                        : "key",
      },
      "accelerated_networking"        : true,
      "os": {
        "publisher"                   : "SUSE",
        "offer"                       : "sles-sap-12-sp5",
        "sku"                         : "gen1"
      },
      "nic_ips"                       : ["", "", ""],
      "use_DHCP"                      : false
    },
    "vnets": {
      "sap": {
        "arm_id"                      : "",
        "name"                        : "",
        "address_space"               : "10.1.0.0/16",
        "subnet_db": {
          "prefix"                    : "10.1.1.0/28"
        },
        "subnet_web": {
          "prefix"                    : "10.1.1.16/28"
        },
        "subnet_app": {
          "prefix"                    : "10.1.1.32/27"
        },
        "subnet_admin": {
          "prefix"                    : "10.1.1.64/27"
        }
      }
    }
  },
  "databases": [
    {
      "platform"                      : "HANA",
      "high_availability"             : false,
      "db_version"                    : "2.00.050",
      "size"                          : "Demo",
      "os": {
        "publisher"                   : "SUSE",
        "offer"                       : "sles-sap-12-sp5",
        "sku"                         : "gen1"
      },
      "zones"                         : ["1"],
      "avset_arm_ids"                 : [
                                          ""
                                        ],
      "use_DHCP"                      : false,
      "loadbalancer" : {
        "frontend_ip"                 : "10.1.1.5"
      },  
      "dbnodes" : [
          {    
            "name"                    : "dbserver"
            "db_nic_ips"              : [10.1.1.1, 10.1.1.2]
            "admin_nic_ips"           : [10.1.1.65, 10.1.1.66]
          }
        ]
    }
  ],
  "application": {
    "enable_deployment"               : true,
    "sid"                             : "PRD",
    "application_server_count"        : 2,
    "app_sku"                         : "Standard_E4ds_v4",
    "dual_nics"                       : true,
    "app_zones"                       : ["1", "2"],
    "app_nic_ips"                     : ["10.1.1.33", "10.1.1.34"],
    "app_admin_nic_ips"               : ["10.1.1.67", "10.1.1.68"],
    "os"                              : {
                                          "os_type": "Linux",
                                          "offer": "sles-sap-12-sp5",
                                          "publisher": "SUSE",
                                          "sku": "gen2",
                                          "version": "latest"
                                        },
    "scs_high_availability"           : false,
    "scs_server_count"                : 1,
    "scs_instance_number"             : "00",
    "ers_instance_number"             : "10",
    "scs_sku"                         : "Standard_E4ds_v4",
    "scs_zones"                       : ["1"],
    "scs_nic_ips"                     : ["10.1.1.35", "10.1.1.36"],
    "scs_admin_nic_ips"               : ["10.1.1.69", "10.1.1.70"],
    "scs_lb_ips"                      : ["10.1.1.37"], 
    "scs_os"                          : {
                                          "os_type": "Linux",
                                          "offer": "sles-sap-12-sp5",
                                          "publisher": "SUSE",
                                          "sku": "gen2",
                                          "version": "latest"
                                        },
    "webdispatcher_count"             : 1,
    "web_sku"                         : "Standard_E4ds_v4",
    "web_zones"                       : ["1"],
    "web_nic_ips"                     : ["10.1.1.17"],
    "web_admin_nic_ips"               : ["10.1.1.72"],
    "web_lb_ips"                      : ["10.1.1.18"] ,
    "web_os"                          : {
                                          "os_type": "Linux",
                                          "offer": "sles-sap-12-sp5",
                                          "publisher": "SUSE",
                                          "sku": "gen2",
                                          "version": "latest"
                                        },
    "use_DHCP"                        : false,
    "authentication": {
      "type"                          : "password"
    }
  },
  "authentication": {
    "username"                        : "azureadm",
    "password"                        : "",
    "path_to_public_key"              : "sshkey.pub",
    "path_to_private_key"             : "sshkey"
  },
  "options": {
    "resource_offset"                 : 0,
    "disk_encryption_set_id"          : ""
  },
  "tfstate_resource_id"               : "",
  "deployer_tfstate_key"              : "",
  "landscape_tfstate_key"             : "",
  "app_disk_sizes_filename"           : "custom_size_app.json",
  "db_disk_sizes_filename"            : "custom_size_db.json"

}