Template Name
ACS-HBR-SAPHanaRestorationAutomation
Deskripsi Template
Membuat instance SAP HANA tujuan secara otomatis di dalam virtual private cloud (VPC) tempat instance SAP HANA sumber berada, menggunakan layanan Hybrid Backup Recovery (HBR) untuk memulihkan data cadangan dari instance SAP HANA sumber ke instance SAP HANA tujuan, serta memeriksa status instance SAP HANA tujuan.
Tipe Template
Otomatis
Pemilik
Alibaba Cloud
Parameter Input
Parameter | Deskripsi | Tipe | Diperlukan | Nilai Default | Batas |
zoneId | ID zona. | String | Ya | ||
vpcId | VPC tempat instance sumber berada. | String | Ya | ||
vSwitchId | vSwitch tempat instance tujuan termasuk. | String | Ya | ||
sourceClusterId | ID instance sumber. | String | Ya | ||
vaultId | ID vault cadangan HBR. | String | Ya | ||
HANASID | SID instance tujuan. | String | Ya | Ekspresi reguler untuk verifikasi string: ^[A-Z][A-Z0-9][A-Z0-9]$ | |
masterPass | Kata sandi akun master untuk instance sumber. | String | Ya | Ekspresi reguler untuk verifikasi string: ^(?=.[0-9].)(?=.[A-Z].)(?=.[a-z].)[a-zA-Z][0-9a-zA-Z_@#$]{7,}$ | |
imageId | Versi sistem operasi instance tujuan. | String | Ya | ||
instanceType | Tipe instance dari instance tujuan. | String | Ya | ||
privateIpAddress | Alamat IP privat instance tujuan. | String | Ya | Ekspresi reguler untuk verifikasi string: ^((192.168 | |
loginPassword | Kata sandi pengguna root untuk instance tujuan. | String | Ya | Ekspresi reguler untuk verifikasi string: ^(?![a-zA-Z]+$)(?![A-Z0-9]+$)(?![A-Z\W_]+$)(?![a-z0-9]+$)(?![a-z\W_]+$)(?![0-9\W_]+$)[a-zA-Z0-9\W_]{8,}$ | |
dataSize | Ukuran direktori /hana/data untuk instance tujuan. | String | Ya | Ekspresi reguler untuk verifikasi string: (^[2-9]\d{1}$) | |
logSize | Ukuran direktori /hana/log untuk instance tujuan. | String | Ya | Ekspresi reguler untuk verifikasi string: (^[2-9]\d{1}$) | |
sharedSize | Ukuran direktori /hana/shared untuk instance tujuan. | String | Ya | Ekspresi reguler untuk verifikasi string: (^[2-9]\d{1}$) | |
mediaPath | Jalur Object Storage Service (OSS) paket perangkat lunak SAP HANA. | String | Ya | Ekspresi reguler untuk verifikasi string: ^(oss | |
dingTalkWebhook | URL webhook chatbot DingTalk. | String | Ya | ||
databaseName | Instance database. | List | Tidak | ['SYSTEMDB@:SYSTEMDB'] | |
customizedImage | Menentukan apakah akan menggunakan gambar kustom. | Boolean | Tidak | False | |
customizedImageId | ID gambar kustom. | String | Tidak | "" | |
ECSHostname | Nama host tempat instance tujuan berada. | String | Tidak | hana001 | Ekspresi reguler untuk verifikasi string: ^([a-zA-Z0-9] |
HANAInstanceNumber | Nomor instance tujuan. | String | Tidak | 00 | Ekspresi reguler untuk verifikasi string: ^([0-8][0-9] |
systemDiskCategory | Tipe disk sistem instance tujuan. | String | Tidak | cloud_ssd | |
systemDiskSize | Ukuran disk sistem instance tujuan. | String | Tidak | 100 | Ekspresi reguler untuk verifikasi string: (^2[0-9]$) |
dataLogDiskCategory | Tipe disk dari file system /hana/data dan /hana/log. | String | Tidak | cloud_ssd | |
sharedDiskCategory | Tipe disk dari file system /hana/shared untuk instance tujuan. | String | Tidak | cloud_ssd | |
usrsapDiskCategory | Tipe disk dari file system /usr/sap untuk instance tujuan. | String | Tidak | cloud_ssd | |
usrsapSize | Ukuran direktori /usr/sap untuk instance tujuan. | String | Tidak | 50 | Ekspresi reguler untuk verifikasi string: (^[2-9]\d{1}$) |
systemUsage | Tipe sistem instance tujuan. | String | Tidak | custom | |
HANASapSidAdmUid | ID pengguna sidadm untuk instance tujuan. | String | Tidak | 1001 | Ekspresi reguler untuk verifikasi string: (^[5-9]\d{2}$) |
HANASapSysGid | ID grup sapsys untuk instance tujuan. | String | Tidak | 79 | Ekspresi reguler untuk verifikasi string: (^\d+$) |
userName | Nama pengguna instance tujuan. | String | Tidak | SYSTEM | |
weatherDeleteResource | Menentukan apakah akan mempertahankan sumber daya cloud setelah verifikasi berhasil. | Boolean | Tidak | False | |
timeout | Periode waktu sumber daya cloud dipertahankan. Satuan: menit. | Number | Tidak | 30 |
Parameter Output
Parameter | Deskripsi | Tipe |
Result | String |
Kebijakan izin yang diperlukan untuk menjalankan template
Untuk informasi tentang cara membuat peran RAM dan melampirkan kebijakan yang diperlukan pada peran tersebut, lihat Buat Peran RAM dan Lampirkan Kebijakan yang Diperlukan pada Peran Tersebut.
{
"Version": "1",
"Statement": [
{
"Action": [
"ecs:DescribeAvailableResource",
"ecs:DescribeInvocationResults",
"ecs:DescribeInvocations",
"ecs:RunCommand"
],
"Resource": "*",
"Effect": "Allow"
},
{
"Action": [
"hbr:CreateClients",
"hbr:CreateHanaInstance",
"hbr:CreateHanaRestore",
"hbr:DeleteHanaInstance",
"hbr:DescribeClients",
"hbr:DescribeHanaBackupSetting",
"hbr:DescribeHanaBackupsAsync",
"hbr:DescribeHanaInstances",
"hbr:DescribeHanaRestores",
"hbr:DescribeTask",
"hbr:UpdateHanaBackupSetting"
],
"Resource": "*",
"Effect": "Allow"
},
{
"Action": [
"ros:CreateStack",
"ros:DeleteStack",
"ros:GetStack"
],
"Resource": "*",
"Effect": "Allow"
},
{
"Action": [
"oos:ListExecutions"
],
"Resource": "*",
"Effect": "Allow"
}
]
}
Referensi
Untuk informasi lebih lanjut, lihat ACS-HBR-SAPHanaRestorationAutomation.yml di GitHub.
Isi Template
FormatVersion: OOS-2019-06-01
Description:
en: 'Template ini menggunakan VPC yang ada dan instance SAP HANA (instance sumber) untuk membuat instance SAP satu node (instance tujuan), memulihkan data cadangan instance sumber ke instance tujuan melalui layanan HBR, dan memeriksa status instance tujuan yang telah dipulihkan.'
name-en: ACS-HBR-SAPHanaRestorationAutomation
Parameters:
zoneId:
Type: String
AssociationProperty: 'ALIYUN::ECS::Instance::ZoneId'
Label:
en: Zona Ketersediaan
Description:
en: Zona ketersediaan tempat instance SAP HANA akan diterapkan
vpcId:
Type: String
AssociationProperty: 'ALIYUN::ECS::VPC::VPCId'
Label:
en: ID VPC Sumber
Description:
en: ID VPC instance sumber
vSwitchId:
Type: String
AssociationProperty: 'ALIYUN::VPC::VSwitch::VSwitchId'
Label:
en: ID VSwitch Tujuan
Description:
en: ID VSwitch instance tujuan
sourceClusterId:
Label:
en: ID Instance SAP HANA Sumber
Description:
en: 'ID instance SAP HANA sumber, dapat ditemukan di Konsol Cloud Backup - ECS Application Backup - Nama Instance/ID.'
Type: String
vaultId:
Label:
en: ID Vault Cadangan
Description:
en: ID vault cadangan
Type: String
databaseName:
Label:
en: Daftar Database SAP HANA
Description:
en: Daftar database SAP HANA dalam format "<Nama Database SAP HANA Sumber>@<ID Sistem SAP HANA Sumber>". Pisahkan beberapa database SAP HANA dengan baris baru.
Type: List
Default:
- 'SYSTEMDB@<SID>:SYSTEMDB'
HANASID:
Type: String
ConstraintDescription:
en: '3 karakter, bisa berupa huruf besar atau angka, harus dimulai dengan huruf besar.'
Label:
en: SID SAP HANA
Description:
en: SID SAP HANA instance tujuan
AllowedPattern: '^[A-Z][A-Z0-9][A-Z0-9]$'
masterPass:
Type: String
Label:
en: Kata Sandi Master SAP HANA
Description:
en: Kata sandi master SAP HANA
ConstraintDescription:
en: 'Harus minimal 8 karakter dengan huruf besar, huruf kecil, dan nilai numerik, dapat menggunakan karakter khusus termasuk(_,@,#,$), tetapi tidak boleh dimulai dengan angka dan karakter khusus.'
AllowedPattern: '^(?=.*[0-9].*)(?=.*[A-Z].*)(?=.*[a-z].*)[a-zA-Z][0-9a-zA-Z_@#$]{7,}$'
NoEcho: true
imageId:
Type: String
Label:
en: Sistem Operasi Dan Versi
Description:
en: 'Sistem operasi dan versi: <a href=''https://market.aliyun.com/products/57742013/cmjj00037618.html'' target=''_blank''>SUSE15SP1-SAP</a>, <a href=''https://market.aliyun.com/products/57742013/cmjj00036800.html'' target=''_blank''>SUSE12SP4-SAP</a>, <a href=''https://market.aliyun.com/products/57742013/cmjj031975.html'' target=''_blank''>SUSE12SP3-SAP</a>.'
AllowedValues:
- SUSE15SP1-SAP
- SUSE12SP4-SAP
- SUSE12SP3-SAP
customizedImage:
Type: Boolean
Label:
en: Gunakan Gambar Kustom
Description:
en: Gunakan gambar kustom atau tidak
Default: false
customizedImageId:
Type: String
Label:
en: ID Gambar Kustom
Description:
en: Masukkan ID gambar kustom
Default: ''
instanceType:
Type: String
Label:
en: Tipe Instance Untuk Host SAP HANA
Description:
en: '<font color=''blue''></font><br> [ecs.r5.2xlarge Tipe instance non-sertifikasi 64G]<br>[ecs.r5.4xlarge Tipe instance non-sertifikasi 128G]<br>[ecs.c5.8xlarge <font color=''green''>Tipe instance bersertifikat SAP 64G</font>]<br>[ecs.g5.8xlarge <font color=''green''>Tipe instance bersertifikat SAP 128G</font>]<br>[ecs.r5.8xlarge <font color=''green''>Tipe instance bersertifikat SAP 256G</font>]<br>[ecs.r6.13xlarge <font color=''green''>Tipe instance bersertifikat SAP 384G</font>]<br>[ecs.se1.14xlarge <font color=''green''>Tipe instance bersertifikat SAP 480G</font>]<br>[ecs.r5.16xlarge <font color=''green''>Tipe instance bersertifikat SAP 512G</font>]<br>[ecs.re4.20xlarge <font color=''green''>Tipe instance bersertifikat SAP 960G</font>]<br>[ecs.re4.40xlarge <font color=''green''>Tipe instance bersertifikat SAP 1920G</font>]<br>[ecs.re4e.40xlarge <font color=''green''>Tipe instance bersertifikat SAP 3840G</font>].'
AllowedValues:
- ecs.r5.2xlarge(8vCPUs 64GiB)
- ecs.r5.4xlarge(16vCPUs 128GiB)
- ecs.c5.8xlarge(32vCPUs 64GiB)
- ecs.g5.8xlarge(32vCPUs 128GiB)
- ecs.r5.8xlarge(32vCPUs 256GiB)
- ecs.r6.13xlarge(52vCPUs 384GiB)
- ecs.se1.14xlarge(56vCPUs 480GiB)
- ecs.r5.16xlarge(64vCPUs 512GiB)
- ecs.re4.20xlarge(80vCPUs 960GiB)
- ecs.re4.40xlarge(160vCPUs 1920GiB)
- ecs.re4e.40xlarge(160vCPUs 3840GiB)
ECSHostname:
Type: String
Label:
en: Nama Host
Description:
en: Nama host ECS SAP HANA
Default: hana001
AllowedPattern: '^([a-zA-Z0-9]|[a-zA-Z0-9][a-zA-Z0-9\-])*([a-zA-Z0-9])$'
ConstraintDescription:
en: 'Panjangnya 2-13 karakter, dapat dimulai dengan huruf besar atau kecil, dan dapat berisi angka, atau -, tetapi tidak dapat dimulai dengan - atau diakhiri dengan -.'
privateIpAddress:
Type: String
Label:
en: Alamat IP Privat
Description:
en: 'Alamat IP privat untuk host ECS SAP HANA, harap perhatikan: alamat IP harus berada dalam blok CIDR VSwitch.'
ConstraintDescription:
en: Harap masukkan alamat IP privat yang benar
AllowedPattern: '^((192\.168|172\.([1][6-9]|[2]\d|3[01]))(\.([2][0-4]\d|[2][5][0-5]|[01]?\d?\d)){2}|(\D)*10(\.([2][0-4]\d|[2][5][0-5]|[01]?\d?\d)){3})$'
loginPassword:
Type: String
Label:
en: Kata Sandi root
Description:
en: Kata sandi root ECS SAP HANA
AllowedPattern: '^(?![a-zA-Z]+$)(?![A-Z0-9]+$)(?![A-Z\W_]+$)(?![a-z0-9]+$)(?![a-z\W_]+$)(?![0-9\W_]+$)[a-zA-Z0-9\W_]{8,}$'
ConstraintDescription:
en: '8-30 karakter, termasuk(huruf besar, huruf kecil, angka atau karakter khusus).'
NoEcho: true
HANAInstanceNumber:
Type: String
Label:
en: Nomor Instance SAP HANA
Description:
en: Nomor instance SAP HANA
ConstraintDescription:
en: '2 angka, 00-97.'
AllowedPattern: '^([0-8][0-9]|9[0-6])$'
Default: '00'
systemDiskCategory:
Default: cloud_ssd
AllowedValues:
- cloud_efficiency
- cloud_ssd
Label:
en: Tipe Disk Sistem
Description:
en: 'Kategori disk sistem: Ultra Disk, SSD disk.'
Type: String
systemDiskSize:
Default: '100'
Type: String
Label:
en: Ukuran Disk Sistem
Description:
en: 'Ukuran file system /, satuan: GB, rentang: 20~500G.'
ConstraintDescription:
en: 'Harus berupa bilangan bulat, rentang: 20~500G.'
AllowedPattern: '(^2[0-9]$)|(^[3-9]\d$)|(^[1-4]\d{2}$)|500$'
dataLogDiskCategory:
Default: cloud_ssd
AllowedValues:
- cloud_essd PL1
- cloud_essd PL2
- cloud_essd PL3
- cloud_ssd
Label:
en: Kategori Disk File System /hana/data Dan /hana/log
Description:
en: '1. Kategori disk file system /hana/data dan /hana/log: ESSD disk, SSD disk.<br>2. Semakin tinggi level performa yang dapat Anda pilih. Misalnya, PL2 tersedia untuk SSD yang ditingkatkan lebih dari 460 GiB dan PL3 tersedia untuk SSD yang ditingkatkan lebih dari 1260 GiB. Level performa yang lebih tinggi menunjukkan biaya yang lebih tinggi:<ul><li> cloud_essd PL1(hingga 50.000 IOPS per disk)</li><li> cloud_essd PL2(hingga 100.000 IOPS per disk)</li><li> cloud_essd PL3(hingga 1.000.000 IOPS per disk)</li></ul>
Type: String
dataSize:
Type: String
Label:
en: Ukuran File System /hana/data
Description:
en: 'Ukuran file system /hana/data, satuan: GB, rekomendasi SAP: Ukuran >= 1 x RAM.'
ConstraintDescription:
en: 'Harus berupa bilangan bulat, rentang: 20~32768G.'
AllowedPattern: '(^[2-9]\d{1}$)|(^[1-9]\d{2}$)|(^[1-9]\d{3}$)|(^[1-2]\d{4}$)|(^3[0-2][0-7][0-6][0-8]$)'
logSize:
Type: String
Label:
en: Ukuran File System /hana/log
Description:
en: 'Ukuran file system /hana/log, satuan: GB, rekomendasi SAP:[sistem ≤ 515GB] Sizeredolog = 1/2 x RAM;[sistem > 512GB] Sizeredolog(min) = 512GB.'
ConstraintDescription:
en: 'Harus berupa bilangan bulat, rentang: 20~32768G.'
AllowedPattern: '(^[2-9]\d{1}$)|(^[1-9]\d{2}$)|(^[1-9]\d{3}$)|(^[1-2]\d{4}$)|(^3[0-2][0-7][0-6][0-8]$)'
sharedDiskCategory:
Default: cloud_ssd
AllowedValues:
- cloud_efficiency
- cloud_ssd
- cloud_essd
Label:
en: Kategori Disk File System /hana/shared
Description:
en: 'Kategori disk file system /hana/shared: Ultra Disk, SSD disk, ESSD disk.'
Type: String
sharedSize:
Type: String
Label:
en: Ukuran File System /hana/shared
Description:
en: 'Ukuran file system /hana/shared, satuan: GB, rekomendasi SAP: Ukuraninstalasi(single-node) = MIN(1 x RAM; 1 TB).'
ConstraintDescription:
en: 'Harus berupa bilangan bulat, rentang: 20~32768G.'
AllowedPattern: '(^[2-9]\d{1}$)|(^[1-9]\d{2}$)|(^[1-9]\d{3}$)|(^[1-2]\d{4}$)|(^3[0-2][0-7][0-6][0-8]$)'
usrsapDiskCategory:
Default: cloud_ssd
AllowedValues:
- cloud_efficiency
- cloud_ssd
- cloud_essd
Label:
en: Kategori Disk File System /usr/sap
Description:
en: 'Kategori disk file system /usr/sap: Ultra Disk, SSD disk, ESSD disk.'
Type: String
usrsapSize:
Type: String
Label:
en: Ukuran File System /usr/sap
Description:
en: 'Ukuran file system /usr/sap, satuan: GB.'
Default: '50'
ConstraintDescription:
en: 'Harus berupa bilangan bulat, rentang: 20~32768G.'
AllowedPattern: '(^[2-9]\d{1}$)|(^[1-9]\d{2}$)|(^[1-9]\d{3}$)|(^[1-2]\d{4}$)|(^3[0-2][0-7][0-6][0-8]$)'
mediaPath:
Type: String
Label:
en: Jalur OSS Perangkat Lunak SAP HANA
Description:
en: 'Silakan unduh media instalasi SAP HANA dari pusat unduhan perangkat lunak SAP (Tidak perlu mengekstrak, paketnya seperti ini: 51053381_part1.exe atau .rar) dan unggah ke bucket OSS, masukkan jalur lengkap yang dimulai dengan oss://. contoh: oss://{bucket_name}/hana.'
ConstraintDescription:
en: 'Dimulai dengan oss. contoh: oss://{bucket_name}/hana.'
AllowedPattern: '^(oss|https|http)://[\S\w]+([\S\w])+$'
systemUsage:
Type: String
Label:
en: Penggunaan Sistem SAP HANA
Description:
en: 'Penggunaan sistem SAP HANA(custom, development, test, production).'
Default: custom
AllowedValues:
- custom
- development
- test
- production
HANASapSidAdmUid:
Type: String
Label:
en: ID Pengguna sidadm SAP HANA
Description:
en: 'ID pengguna sidadm, hanya angka, rentang: 500~65532, nilai default: 1001.'
Default: '1001'
ConstraintDescription:
en: 'Hanya angka, rentang: 500~65532.'
AllowedPattern: '(^[5-9]\d{2}$)|(^[1-9]\d{3}$)|(^[1-5]\d{4}$)|(^6[0-5][0-5][0-3][0-2]$)'
HANASapSysGid:
Type: String
Label:
en: ID Grup sapsys SAP HANA
Description:
en: 'ID grup sapsys, hanya angka, nilai default: 79.'
Default: '79'
ConstraintDescription:
en: Hanya angka
AllowedPattern: (^\d+$)
userName:
Label:
en: Nama Pengguna SYSTEMDB
Description:
en: Masukkan nama pengguna SYSTEMDB.
Type: String
Default: SYSTEM
weatherDeleteResource:
Label:
en: Pertahankan Sumber Daya Cloud
Description:
en: 'Apakah akan mempertahankan sumber daya cloud setelah verifikasi cadangan berhasil, secara default tidak dipertahankan. Saat parameter ini dipilih dan cadangan berhasil dipulihkan, parameter "Durasi Pemeliharaan Sumber Daya Cloud" akan menjadi tidak valid.'
Type: Boolean
Default: false
timeout:
Label:
en: 'Durasi Pemeliharaan Sumber Daya Cloud (Satuan: Menit)'
Description:
en: 'Setelah pengujian selesai/gagal, durasi pemeliharaan sumber daya cloud (satuan: menit).'
Type: Number
Default: '30'
dingTalkWebhook:
Label:
en: Webhook Robot DingTalk
Description:
en: 'Mengirim notifikasi ke DingTalk melalui webhook untuk meminta persetujuan. Eksekusi tetap tertunda hingga disetujui atau ditolak. Silakan merujuk https://open-doc.dingtalk.com/microapp/serverapi2/qf2nxq untuk detail lebih lanjut.'
Type: String
Tasks:
- Name: checkHanaInstanceType
Action: 'ACS::CheckFor'
Description:
en: Memeriksa ketersediaan tipe instance SAP HANA di zona tersedia saat ini
Properties:
Service: ECS
API: DescribeAvailableResource
Parameters:
ZoneId: '{{ zoneId }}'
RegionId: '{{ACS::RegionId}}'
InstanceType:
'Fn::Select':
- 0
- 'Fn::Split':
- (
- '{{ instanceType }}'
DestinationResource: InstanceType
PropertySelector: 'AvailableZones.AvailableZone[0].Status'
DesiredValues:
- Available
Retries: 2
- Name: checkHanaBackupSetting
Action: 'ACS::CheckFor'
Description:
en: Memeriksa pengaturan cadangan SAP HANA sumber
Properties:
Service: HBR
API: DescribeHanaBackupSetting
Parameters:
VaultId: '{{ vaultId }}'
ClusterId: '{{ sourceClusterId }}'
DatabaseName:
'Fn::Select':
- 0
- 'Fn::Split':
- '@'
- '{{ ACS::TaskLoopItem }}'
PropertySelector: HanaBackupSetting.CatalogBackupUsingBackint
DesiredValues:
- true
Retries: 2
Loop:
Items: '{{ databaseName }}'
RateControl:
MaxErrors: 0
Mode: Concurrency
Concurrency: 1
- Name: createStack
Action: 'ACS::ExecuteAPI'
Description:
en: Membuat stack node tunggal SAP HANA.
Properties:
Service: ROS
API: CreateStack
Parameters:
StackName: 'HBR-{{ACS::ExecutionId}}'
TimeoutInMinutes: 60
DisableRollback: true
Parameters:
- ParameterKey: ImageId
ParameterValue: '{{ imageId }}'
- ParameterKey: CustomizedImageId
ParameterValue: '{{ customizedImageId }}'
- ParameterKey: CustomizedImage
ParameterValue: '{{ customizedImage }}'
- ParameterKey: ZoneId
ParameterValue: '{{ zoneId }}'
- ParameterKey: VpcId
ParameterValue: '{{ vpcId }}'
- ParameterKey: VSwitchId
ParameterValue: '{{ vSwitchId }}'
- ParameterKey: InstanceType
ParameterValue: '{{ instanceType }}'
- ParameterKey: ECSHostname
ParameterValue: '{{ ECSHostname }}'
- ParameterKey: PrivateIpAddress
ParameterValue: '{{ privateIpAddress }}'
- ParameterKey: LoginPassword
ParameterValue: '{{ loginPassword }}'
- ParameterKey: HANASID
ParameterValue: '{{ HANASID }}'
- ParameterKey: HANAInstanceNumber
ParameterValue: '{{ HANAInstanceNumber }}'
- ParameterKey: SystemDiskCategory
ParameterValue: '{{ systemDiskCategory }}'
- ParameterKey: SystemDiskSize
ParameterValue: '{{ systemDiskSize }}'
- ParameterKey: DataLogDiskCategory
ParameterValue: '{{ dataLogDiskCategory }}'
- ParameterKey: DataSize
ParameterValue: '{{ dataSize }}'
- ParameterKey: LogSize
ParameterValue: '{{ logSize }}'
- ParameterKey: SharedDiskCategory
ParameterValue: '{{ sharedDiskCategory }}'
- ParameterKey: SharedSize
ParameterValue: '{{ sharedSize }}'
- ParameterKey: UsrsapDiskCategory
ParameterValue: '{{ usrsapDiskCategory }}'
- ParameterKey: UsrsapSize
ParameterValue: '{{ usrsapSize }}'
- ParameterKey: MasterPass
ParameterValue: '{{ masterPass }}'
- ParameterKey: MediaPath
ParameterValue: '{{ mediaPath }}'
- ParameterKey: SystemUsage
ParameterValue: '{{ SystemUsage }}'
- ParameterKey: HANASapSidAdmUid
ParameterValue: '{{ HANASapSidAdmUid }}'
- ParameterKey: HANASapSysGid
ParameterValue: '{{ HANASapSysGid }}'
TemplateURL: 'https://sap-automation-{{ACS::RegionId}}.oss-{{ACS::RegionId}}.aliyuncs.com/Public_V1/HANA/HANA_Single_Node.json'
Outputs:
StackId:
Type: String
ValueSelector: StackId
- Name: untilStackReady
Action: 'ACS::WaitFor'
OnError: getExecutionFaildMessage
Description:
en: Tunggu status stack hingga CREATE_COMPLETE
DelayType: Constant
Delay: 300
Retries: 12
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:
HANAServerId:
Type: String
ValueSelector: '.Outputs[] | select(.OutputKey == "HANAServerId") | .OutputValue'
HANAServerLog:
Type: Json
ValueSelector: '.Outputs[] | select(.OutputKey == "InstallLog") | .OutputValue'
- Name: checkHanaServerLog
Action: 'ACS::CheckFor'
OnError: getExecutionFaildMessage
Description:
en: Memeriksa log instalasi SAP HANA
Properties:
Service: ROS
API: GetStack
Parameters:
StackId: '{{createStack.StackId}}'
PropertySelector: '.Outputs[] | select(.OutputKey == "InstallLog") | .OutputValue'
DesiredValues:
- '{"HANANode": "SUCCESS"}'
Retries: 2
- Name: createHANAInstance
Action: 'ACS::ExecuteAPI'
OnError: getExecutionFaildMessage
Description:
en: Membuat instance SAP HANA HBR
Properties:
Service: HBR
API: CreateHanaInstance
Parameters:
VaultId: '{{ vaultId }}'
EcsInstanceId: '{{ untilStackReady.HANAServerId }}'
Host: '{{ privateIpAddress }}'
HanaName: '{{ ECSHostname }}'
InstanceNumber: '{{ HANAInstanceNumber }}'
UserName: '{{ userName }}'
Password: '{{ masterPass }}'
UseSsl: true
Outputs:
ClusterId:
Type: String
ValueSelector: ClusterId
- Name: createClients
Action: 'ACS::ExecuteAPI'
OnError: getExecutionFaildMessage
Description:
en: Membuat klien instance SAP HANA HBR
Properties:
Service: HBR
API: CreateClients
Parameters:
VaultId: '{{ vaultId }}'
AlertSetting: INHERITED
ClientInfo:
- instanceId: '{{ untilStackReady.HANAServerId }}'
accessKeyId: ''
accessKeySecret: ''
clusterId: '{{ createHANAInstance.ClusterId }}'
sourceTypes:
- HANA
Outputs:
TaskId:
Type: String
ValueSelector: TaskId
- Name: waitForCreateClient
Action: 'ACS::WaitFor'
OnError: getExecutionFaildMessage
Description:
en: Menunggu klien dibuat
DelayType: Constant
Delay: 5
Retries: 15
Properties:
Service: HBR
API: DescribeTask
Parameters:
TaskId: '{{ createClients.TaskId }}'
PropertySelector: Description
StopRetryValues:
- completed
DesiredValues:
- completed
- Name: waitForActivateClient
Action: 'ACS::WaitFor'
OnError: getExecutionFaildMessage
Description:
en: Menunggu aktivasi klien selesai
Properties:
Service: HBR
API: DescribeClients
Parameters:
ClusterId: '{{ createHANAInstance.ClusterId }}'
VaultId: '{{ vaultId }}'
SourceType: HANA
ClientType: ECS_AGENT
PropertySelector: 'Clients.Client[].Status'
StopRetryValues:
- ACTIVATED
- INSTALL_FAILED
DesiredValues:
- ACTIVATED
Retries: 5
Outputs:
ClientId:
Type: String
ValueSelector: 'Clients.Client[].ClientId'
- Name: RestoreBuckup
Action: 'ACS::HBR::RestoreHanaDatabaseBackup'
OnError: getExecutionFaildMessage
Description:
en: Memulihkan dan memverifikasi cadangan
Properties:
vaultId: '{{ vaultId }}'
sourceClusterId: '{{ sourceClusterId }}'
sourceSystemName:
'Fn::Select':
- 0
- 'Fn::Split':
- ':'
- '{{ ACS::TaskLoopItem }}'
clusterId: '{{ createHANAInstance.ClusterId }}'
databaseName:
'Fn::Select':
- 1
- 'Fn::Split':
- ':'
- '{{ ACS::TaskLoopItem }}'
HANAInstanceServerId: '{{ untilStackReady.HANAServerId }}'
HANASID: '{{ HANASID }}'
masterClientId: '{{ waitForActivateClient.ClientId }}'
Loop:
Items: '{{ databaseName }}'
RateControl:
MaxErrors: 0
Mode: Concurrency
Concurrency: 1
- Name: runCommand
Action: 'ACS::ECS::RunCommand'
OnSuccess: DingTalkNotify
OnError: getExecutionFaildMessage
Description:
en: Memverifikasi status operasi instance SAP HANA
Properties:
regionId: '{{ ACS::RegionId }}'
commandContent:
'Fn::Join':
- ''
- - 'su - '
- 'Fn::Jq':
- First
- .key | ascii_downcase
- key: '{{ HANASID }}'
- 'adm -c "sapcontrol -nr '
- '{{ HANAInstanceNumber }}'
- ' -function GetProcessList"; if [[ $? -eq 3 ]]; then exit 0;fi'
instanceId: '{{ untilStackReady.HANAServerId }}'
commandType: RunShellScript
timeout: '180'
Outputs:
commandOutputs:
Type: String
ValueSelector: invocationOutput
- Name: getExecutionFaildMessage
Action: 'ACS::ExecuteAPI'
Description:
en: Mendapatkan informasi kegagalan eksekusi
Properties:
Service: OOS
API: ListExecutions
Parameters:
ExecutionId: '{{ ACS::ExecutionId }}'
Outputs:
statusMessage:
Type: String
ValueSelector: 'Executions[].StatusMessage'
- Name: DingTalkNotifyExecutionFailed
Action: 'ACS::Notify'
OnSuccess: sleepTask
Description:
en: Notifikasi pesan kegagalan eksekusi
Properties:
NotifyType: WebHook
WebHook:
URI: '{{ dingTalkWebhook }}'
Headers:
Content-Type: application/json
Content:
msgtype: markdown
markdown:
title: '{{ ACS::CurrentUTCTime }}-Laporan kegagalan tes HBR'
text:
'Fn::Join':
- |+
- - '#### {{ ACS::CurrentUTCTime }}-Laporan kegagalan tes HBR'
- 'Periksa database:{{ databaseName }}'
- 'Pesan kesalahan:{{ getExecutionFaildMessage.statusMessage }}'
- '**Tes akan membersihkan sumber daya cloud uji secara otomatis setelah {{ timeout }} menit. Untuk mempertahankan sumber daya cloud, buka [Konsol OOS](https://oos.console.alibabacloud.com/{{ ACS::RegionId }}/execution/detail/{{ ACS::ExecutionId }}) untuk membatalkan eksekusi**'
at:
atMobiles: []
isAtAll: true
- Name: DingTalkNotify
Action: 'ACS::Notify'
Description:
en: Memberi tahu hasil tes
Properties:
NotifyType: WebHook
WebHook:
URI: '{{ dingTalkWebhook }}'
Headers:
Content-Type: application/json
Content:
msgtype: markdown
markdown:
title: '{{ ACS::CurrentUTCTime }}-Laporan tes HBR'
text:
'Fn::Join':
- |+
- - '#### {{ ACS::CurrentUTCTime }}-Laporan tes HBR'
- Hasil tes: SUCCESS
- 'Periksa database:{{ databaseName }}'
- 'Instance tujuan:{{ ECSHostname }}'
- 'ID instance tujuan:{{ untilStackReady.HANAServerId }}'
- '**Tes akan membersihkan sumber daya cloud uji secara otomatis setelah {{ timeout }} menit. Untuk mempertahankan sumber daya cloud, buka [Konsol OOS](https://oos.console.alibabacloud.com/{{ ACS::RegionId }}/execution/detail/{{ ACS::ExecutionId }}) untuk membatalkan eksekusi**'
at:
atMobiles: []
isAtAll: true
- Name: whetherDeleteResource
Action: 'ACS::Choice'
Properties:
DefaultTask: sleepTask
Choices:
- When: '{{ weatherDeleteResource }}'
NextTask: 'ACS::END'
- Name: sleepTask
Action: 'ACS::Sleep'
Properties:
Duration: 'PT{{ timeout }}M'
- Name: deleteStack
Action: 'ACS::ExecuteApi'
OnError: getCleanupFaildMessage
Description:
en: Menghapus stack
Properties:
Service: ROS
API: DeleteStack
Parameters:
StackId: '{{createStack.StackId}}'
- Name: describeHanaInstances
Action: 'ACS::ExecuteAPI'
OnError: getCleanupFaildMessage
Description:
en: Meminta instance SAP HANA HBR
Properties:
Service: HBR
API: DescribeHanaInstances
Parameters:
VaultId: '{{ vaultId }}'
Outputs:
Hanas:
Type: Json
ValueSelector: Hanas
- Name: whetherDeleteHanaInstances
Action: 'ACS::Choice'
Properties:
DefaultTask: untilStackCleanup
Choices:
- When:
'Fn::Equals':
- '{{ ECSHostname }}'
- 'Fn::Jq':
- First
- '.key.Hana[] | select(.Host == "{{ privateIpAddress }}") | .HanaName'
- key: '{{ describeHanaInstances.Hanas }}'
NextTask: deleteHanaInstance
- Name: deleteHanaInstance
Action: 'ACS::ExecuteApi'
OnError: getCleanupFaildMessage
Description:
en: Menghapus stack
Properties:
Service: HBR
API: DeleteHanaInstance
Parameters:
VaultId: '{{ vaultId }}'
ClusterId: '{{ createHANAInstance.ClusterId }}'
Sid: '{{ HANASID }}'
- Name: untilStackCleanup
Action: 'ACS::WaitFor'
OnError: getCleanupFaildMessage
OnSuccess: 'ACS::END'
Description:
en: Tunggu status stack hingga DELETE_COMPLETE
DelayType: Constant
Delay: 300
Retries: 12
Properties:
Service: ROS
API: GetStack
Parameters:
StackId: '{{createStack.StackId}}'
DesiredValues:
- DELETE_COMPLETE
StopRetryValues:
- DELETE_FAILED
- DELETE_COMPLETE
PropertySelector: Status
- Name: getCleanupFaildMessage
Action: 'ACS::ExecuteAPI'
Description:
en: Mendapatkan informasi kegagalan pembersihan
Properties:
Service: OOS
API: ListExecutions
Parameters:
ExecutionId: '{{ ACS::ExecutionId }}'
Outputs:
statusMessage:
Type: String
ValueSelector: 'Executions[].StatusMessage'
- Name: DingTalkNotifyCleanupFailed
Action: 'ACS::Notify'
Description:
en: Notifikasi kegagalan pembersihan
Properties:
NotifyType: WebHook
WebHook:
URI: '{{ dingTalkWebhook }}'
Headers:
Content-Type: application/json
Content:
msgtype: markdown
markdown:
title: '{{ ACS::CurrentUTCTime }}-Laporan kegagalan pembersihan dalam tes HBR'
text:
'Fn::Join':
- |+
- - '#### {{ ACS::CurrentUTCTime }}-Laporan kegagalan pembersihan dalam tes HBR'
- 'Periksa database:{{ databaseName }}'
-'Pesan kesalahan :{{ getCleanupFaildMessage.statusMessage }}'
- '**Gagal membersihkan sumber daya cloud secara otomatis. Anda harus membersihkan sumber daya cloud secara manual**'
at:
atMobiles: []
isAtAll: true
Outputs:
Result:
Type: String
Value: '{{ untilStackReady.HANAServerId }}'