Template name
ACS-SAP-SAPAutoScaling
Template description
Creates an auto scaling group based on the primary application server (PAS) of the existing Systems, Applications, and Products (SAP) system to automatically or manually add Elastic Compute Service (ECS) instances and deploy them as additional application servers (AASs). The AASs automatically join the SAP logon groups (SMLGs).
Template type
Automated
Owner
Alibaba Cloud
Input parameters
Parameter | Description | Type | Required | Default value | Limit |
PASInstanceId | The PAS instance ID. | Json | Yes | ||
RootPassword | The password of the root user. | String | Yes | Regular expression for string verification: ^{{oos-secret:.*$ | |
SAPSID | The system ID (SID) of the SAP system. | String | Yes | ||
Username | The username of the SAP system. | String | Yes | ||
UserPassword | The user password of the SAP system. | String | Yes | Regular expression for string verification: ^{{oos-secret:.*$ | |
ClientNumber | SAP CLIENT | String | Yes | ||
AASCount | The number of AASs that can be added. | Number | Yes | ||
KeyPairName | The key pair name. | String | Yes | ||
UsrsapDiskSize | The size of the /usr/sap file system. | String | Yes | ||
SwapDiskSize | The swap size. | String | Yes | ||
AASInstanceId | The AAS instance ID. | Json | No | {'Type': 'ResourceIds', 'ResourceIds': [''], 'RegionId': '{{ ACS::RegionId }}'} | |
ClassName | The name of the SMLG. | String | No | SPACE | |
CpuTargetValue | The expected average CPU utilization. | String | No | 80 | |
Cooldown | The minimum time interval that must elapse before another scaling operation can be performed, in seconds. | Number | No | 300 |
Output parameters
Parameter | Description | Type |
ScalingGroupId | String |
Permission policy that is required to execute the template
{
"Version": "1",
"Statement": [
{
"Action": [
"ecs:DescribeInstances"
],
"Resource": "*",
"Effect": "Allow"
},
{
"Action": [
"ros:CreateStack",
"ros:GetStack"
],
"Resource": "*",
"Effect": "Allow"
}
]
}
References
For more information, see ACS-SAP-SAPAutoScaling at GitHub.Manage event-triggered tasks
Template content
FormatVersion: OOS-2019-06-01
Description:
en: ''
name-en: ACS-SAP-SAPAutoScaling
Parameters:
PASInstanceId:
Type: Json
AssociationProperty: Targets
AssociationPropertyMetadata:
ResourceType: 'ALIYUN::ECS::Instance'
Description:
en: Please select the ECS where the existing SAP AS ABAP system PAS is located
Label:
en: PASInstanceId
AASInstanceId:
Type: Json
AssociationProperty: Targets
AssociationPropertyMetadata:
ResourceType: 'ALIYUN::ECS::Instance'
Description:
en: Please select the ECS where the existing SAP AS ABAP system AAS is located. The CPU load of the selected instance will also be used to calculate the average CPU usage. If there is no other AAS, or the existing AAS and PAS are in the same ECS instance, you do not need to select
Label:
en: AASInstanceId
Default:
Type: ResourceIds
ResourceIds:
- ""
RegionId: '{{ ACS::RegionId }}'
RootPassword:
Type: String
en: The password of the root user of the instance where the PAS is located. To ensure data security, only the encryption parameter function of the parameter warehouse is supported. Please click the button on the right side of the input box to create and select the encryption parameter. For more details, please refer to <a href='https://www.alibabacloud.com/help/en/oos/getting-started/manage-encryption-parameters' target='_blank'>Create encryption parameters</a> and <a href='https://www.alibabacloud.com/help/en/oos/getting-started/use-encryption-parameters-for-template-executions' target='_blank'>Use encryption parameters</a>
Label:
en: RootPassword
AllowedPattern: '^\{\{oos-secret:.*$'
SAPSID:
Type: String
Label:
en: SAPSID
Username:
Type: String
Description:
en: SAP AS ABAP system SAP GUI login user name
Label:
en: Username
UserPassword:
Type: String
Description:
en: The login user password of SAP GUI, in order to ensure data security, only supports the encryption parameter function of the parameter warehouse. Please click the button on the right side of the input box to create and select the encryption parameter. For more details, please refer to <a href='https://www.alibabacloud.com/help/en/oos/getting-started/manage-encryption-parameters' target='_blank'>Create encryption parameters</a> and <a href='https://www.alibabacloud.com/help/en/oos/getting-started/use-encryption-parameters-for-template-executions' target='_blank'>Use encryption parameters</a>
Label:
en: UserPassword
AllowedPattern: '^\{\{oos-secret:.*$'
ClientNumber:
Type: String
Description:
en: Login Client of SAP GUI, such as 800, 600
Label:
zh-cn: SAP CLIENT
en: ClientNumber
ClassName:
Type: String
Description:
en: SMLG login group name. The extended AAS will be automatically added to the SMLG login group. If it is not filled in, it will be automatically added to the default 'SPACE' group. If the SMLG group is not set, it is not required to fill in. To facilitate and flexibly adjust the groups that AAS joins, it is recommended that you use <a href='https://www.alibabacloud.com/help/en/oos/getting-started/use-encryption-parameters-for-template-executions' target='_blank'>encryption parameters</a>
Label:
en: ClassName
Default: 'SPACE'
AASCount:
Type: Number
Label:
en: AASCount
MinValue: 1
MaxValue: 2000
CpuTargetValue:
Type: String
Description:
en: The expected average CPU usage of the ECS where the PAS and AAS are located. Average CPU usage = (the ECS instance where the PAS is located + the ECS instance where the added AAS is located + the ECS instance where the automatically expanded AAS is located) the sum of the CPU utilization / the total number of CPU cores in all instances x100 %. The actual average CPU usage is counted every minute. When the actual value exceeds the expected value three times in a row, the automatic expansion AAS action will be triggered. If you need to customize the statistics period and trigger times, please click the <a href='https://ess.console.aliyun.com/#/v3/welcome' target='_blank'> elastic scaling console after the execution is completed. </a>Add the corresponding alarm task. For details, please refer to <a href='https://www.alibabacloud.com/help/en/auto-scaling/user-guide/manage-event-triggered-tasks' target='_blank'>Create an alarm task</a>
Label:
en: CpuTargetValue
Default: 80
Cooldown:
Type: Number
Description:
en: The interval for triggering automatic expansion of AAS, in seconds. For example, if the specified interval is 300 seconds, within 300 seconds after expanding an AAS, even if the average CPU usage exceeds the 'expected average CPU usage', the expansion action will not be triggered again
Label:
en: Cooldown
Default: 300
MinValue: 0
MaxValue: 86400
KeyPairName:
Type: String
Description:
en: The name of the key pair bound to the ECS instance where the extended AAS resides. It is used to log in to the ECS instance. Please pre-register in the <a href='https://ecs.console.aliyun.com/#/keyPair/region/' target ='_blank'>Key Pair Console</a>Create and manage key pairs
Label:
en: KeyPairName
UsrsapDiskSize:
Type: String
Description:
en: Size of the '/usr/sap' file system of the ECS instance where the extended AAS resides, in GB
Label:
en: UsrsapDiskSize
SwapDiskSize:
Type: String
Description:
en: Size of the swap partition of the ECS instance where the extended AAS resides, in GB
Label:
en: SwapDiskSize
Tasks:
- Name: getPASInstance
Action: 'ACS::SelectTargets'
Properties:
ResourceType: 'ALIYUN::ECS::Instance'
Filters:
- '{{ PASInstanceId }}'
Outputs:
PASInstanceId:
ValueSelector: 'Instances.Instance[0].InstanceId'
Type: String
VSwitchId:
ValueSelector: 'Instances.Instance[0].VpcAttributes.VSwitchId'
Type: String
PASIP:
ValueSelector: 'Instances.Instance[0].VpcAttributes.PrivateIpAddress.IpAddress[0]'
Type: String
- Name: getAASInstance
Action: 'ACS::SelectTargets'
Properties:
ResourceType: 'ALIYUN::ECS::Instance'
Filters:
- '{{ AASInstanceId }}'
Outputs:
AASInstanceId:
ValueSelector: 'Instances.Instance[].InstanceId'
Type: List
- Name: createStack
Action: 'ACS::ExecuteAPI'
Description:
en: 'Create scaling group, scaling rule, scaling configuration and lifecycle hook.'
Properties:
Service: ROS
API: CreateStack
Parameters:
StackName: 'AutoScaling-{{ACS::ExecutionId}}'
TimeoutInMinutes: 10
DisableRollback: true
Parameters:
- ParameterKey: ClassName
ParameterValue: '{{ ClassName }}'
- ParameterKey: ClientNumber
ParameterValue: '{{ ClientNumber }}'
- ParameterKey: UserPassword
ParameterValue: '{{ UserPassword }}'
- ParameterKey: Username
ParameterValue: '{{ Username }}'
- ParameterKey: SAPSID
ParameterValue: '{{ SAPSID }}'
- ParameterKey: PASInstanceId
ParameterValue: '{{ getPASInstance.PASInstanceId }}'
- ParameterKey: ExistingAASInstances
ParameterValue:
'Fn::If':
- 'Fn::Equals':
- []
- '{{ getAASInstance.AASInstanceId }}'
- '[]'
- 'Fn::Jq':
- First
- 'tostring'
- '{{ getAASInstance.AASInstanceId }}'
- ParameterKey: RootPassword
ParameterValue: '{{ RootPassword }}'
- ParameterKey: PASIP
ParameterValue: '{{ getPASInstance.PASIP }}'
- ParameterKey: VSwitchId
ParameterValue: '{{ getPASInstance.VSwitchId }}'
- ParameterKey: AASCount
ParameterValue: '{{ AASCount }}'
- ParameterKey: Cooldown
ParameterValue: '{{ Cooldown }}'
- ParameterKey: CpuTargetValue
ParameterValue: '{{ CpuTargetValue }}'
- ParameterKey: UsrsapDiskSize
ParameterValue: '{{ UsrsapDiskSize }}'
- ParameterKey: SwapDiskSize
ParameterValue: '{{ SwapDiskSize }}'
- ParameterKey: KeyPairName
ParameterValue: '{{ KeyPairName }}'
TemplateURL: 'http://ros-template.cn-hangzhou.oss.aliyun-inc.com/S4HANA_Auto_Scaling.json'
Outputs:
StackId:
Type: String
ValueSelector: StackId
- Name: untilStackReady
Action: 'ACS::WaitFor'
Description:
en: Wait the stack status util CREATE_COMPLETE
Retries: 10
Properties:
Service: ROS
API: GetStack
Parameters:
StackId: '{{createStack.StackId}}'
DesiredValues:
- CREATE_COMPLETE
StopRetryValues:
- CREATE_FAILED
- CHECK_FAILED
- ROLLBACK_FAILED
- ROLLBACK_COMPLETE
- CREATE_ROLLBACK_COMPLETE
- CREATE_ROLLBACK_FAILED
PropertySelector: Status
Outputs:
ScalingGroupId:
Type: String
ValueSelector: '.Outputs[] | select(.OutputKey == "ScalingGroupId") | .OutputValue'
Outputs:
ScalingGroupId:
Type: String
Value: '{{ untilStackReady.ScalingGroupId }}'