ALIYUN::ROS::Sleep digunakan untuk menunda pembuatan, penghapusan, pembaruan, dan rollback sumber daya lainnya.
Sintaksis
{
"Type": "ALIYUN::ROS::Sleep",
"Properties": {
"DeleteDuration": Angka,
"UpdateRollbackDuration": Angka,
"UpdateDuration": Angka,
"CreateDuration": Angka,
"Triggers": Peta
}
}Properti
| Properti | Tipe | Diperlukan | Dapat Diedit | Deskripsi | Batasan |
| DeleteDuration | Angka | Tidak | Ya | Waktu tunggu sebelum sumber daya dihapus. | Nilai valid: 0 hingga 1.800. Satuan: detik. |
| UpdateRollbackDuration | Angka | Tidak | Ya | Waktu tunggu sebelum pembaruan sumber daya dibatalkan. | Properti ini hanya berlaku jika tumpukan sedang dalam proses rollback dan nilai properti Triggers diubah. Nilai valid: 0 hingga 1.800. Satuan: detik. |
| UpdateDuration | Angka | Tidak | Ya | Waktu tunggu sebelum sumber daya diperbarui. | Properti ini hanya berlaku jika tumpukan sedang diperbarui dan nilai properti Triggers diubah. Nilai valid: 0 hingga 1.800. Satuan: detik. |
| CreateDuration | Angka | Tidak | Tidak | Waktu tunggu sebelum sumber daya dibuat. | Nilai valid: 0 hingga 1.800. Satuan: detik. |
| Triggers | Peta | Tidak | Ya | Pemicu yang memicu penundaan untuk pembaruan sumber daya dan penundaan untuk rollback pembaruan sumber daya. | Properti UpdateDuration atau UpdateRollbackDuration hanya berlaku jika tumpukan sedang diperbarui atau dibatalkan dan nilai properti Triggers diubah. |
Parameter respons
Fn::GetAtt
Tidak tersedia
Contoh
Dalam contoh ini, sumber daya berikut didefinisikan:
- VPC: virtual private cloud (VPC)
- VSwitch: vSwitch
- SecurityGroup: grup keamanan
- Sleep: periode penundaan kustom
- CenterServer dan OtherServer: dua Instance ECS Elastic Compute Service (ECS)
Konten berikut menjelaskan dua instance ECS yang dibuat dalam VPC:
- Instance CenterServer berisi skrip kustom. Anda perlu menerapkan layanan NGINX untuk mengirim kunci publik dari instance CenterServer ke instance OtherServer. Dengan cara ini, instance CenterServer dapat terhubung ke instance OtherServer tanpa kata sandi. Instance OtherServer dapat mengakses layanan pada instance CenterServer berdasarkan skrip pada instance OtherServer.
- Atur properti CreateDuration menjadi 60 detik. Tunggu aplikasi pada instance CenterServer untuk diterapkan sehingga instance OtherServer dapat mengakses layanan pada instance CenterServer.Catatan Anda harus menentukan waktu tunggu karena aplikasi pada instance CenterServer memerlukan waktu untuk diinstal dan dimulai setelah instance CenterServer dibuat.
Format JSON{ "ROSTemplateFormatVersion": "2015-09-01", "Parameters": { "ZoneId": { "Type": "String", "Label": "Zona Ketersediaan", "AssociationProperty": "ALIYUN::ECS::Instance::ZoneId", "Description": "Id Zona yang tersedia untuk VSwitch," }, "CreateDuration": { "Type": "Number", "Description": "Jumlah detik untuk menunggu sebelum pembuatan sumber daya.", "MinValue": 0, "MaxValue": 1800, "Default": 60 }, "InstanceType": { "Type": "String", "AssociationProperty": "ALIYUN::ECS::Instance::InstanceType", "Label": { "en": "Instance Type" }, "Description": "Isi spesifikasi yang dapat digunakan di bawah zona ketersediaan VSwitch.", "AssociationPropertyMetadata": { "ZoneId": "${ZoneId}" } }, "SystemDiskCategory": { "Type": "String", "AssociationProperty": "ALIYUN::ECS::Disk::SystemDiskCategory", "AssociationPropertyMetadata": { "ZoneId": "${ZoneId}", "InstanceType": "${InstanceType}" }, "Label": "Kategori Disk Sistem" }, "InstancePassword": { "NoEcho": true, "Type": "String", "Description": "Kata sandi login server, Panjang 8-30, harus mencakup tiga (Huruf kapital, huruf kecil, angka).", "Label": "Kata Sandi Instance", "MinLength": 8, "MaxLength": 30 } }, "Resources": { "VPC": { "Type": "ALIYUN::ECS::VPC", "Properties": { "CidrBlock": "10.0.0.0/16" } }, "VSwitch": { "Type": "ALIYUN::ECS::VSwitch", "Properties": { "VpcId": { "Ref": "VPC" }, "ZoneId": { "Ref": "ZoneId" }, "CidrBlock": "10.0.1.0/24" } }, "SecurityGroup": { "Type": "ALIYUN::ECS::SecurityGroup", "Properties": { "VpcId": { "Ref": "VPC" }, "SecurityGroupIngress": [ { "Priority": 1, "PortRange": "80/80", "NicType": "intranet", "SourceCidrIp": "0.0.0.0/0", "IpProtocol": "tcp" }, { "Priority": 1, "PortRange": "22/22", "NicType": "intranet", "SourceCidrIp": "100.104.0.0/16", "IpProtocol": "tcp" } ] } }, "WaitConditionHandle": { "Type": "ALIYUN::ROS::WaitConditionHandle" }, "CenterServer": { "Type": "ALIYUN::ECS::InstanceGroup", "Properties": { "InstanceName": "ControlServer", "ImageId": "centos_7.9", "VpcId": { "Ref": "VPC" }, "SecurityGroupId": { "Ref": "SecurityGroup" }, "VSwitchId": { "Ref": "VSwitch" }, "InstanceType": { "Ref": "InstanceType" }, "Password": { "Ref": "InstancePassword" }, "MaxAmount": 1, "AllocatePublicIP": false, "SystemDiskSize": "40", "InstanceChargeType": "PostPaid", "SystemDiskCategory": { "Ref": "SystemDiskCategory" }, "UserData": { "Fn::Replace": [ { "ros-notify": { "Fn::GetAtt": [ "WaitConditionHandle", "CurlCli" ] } }, { "Fn::Join": [ "\n", [ "#!/bin/sh", "ssh-keygen -t rsa -P '' -f ~/.ssh/id_rsa", "cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys", "chmod 0600 ~/.ssh/authorized_keys", "pub_key=`cat /root/.ssh/id_rsa.pub`", "ros-notify -d \"{\\\"status\\\" : \\\"SUCCESS\\\",\\\"id\\\" : \\\"ssh_pub_key\\\", \\\"data\\\" : \\\"$pub_key\\\"}\" ", "yum install -y nginx", "mkdir -p /data/nginx", "echo \"Hello World! This is service client ecs.\" > /data/nginx/index.html", "echo 'server {' >> /etc/nginx/conf.d/server.conf ", "echo 'listen 80;' >> /etc/nginx/conf.d/server.conf ", "echo 'server_name _;' >> /etc/nginx/conf.d/server.conf ", "echo 'index index.html;' >> /etc/nginx/conf.d/server.conf ", "echo 'root /data/nginx;' >> /etc/nginx/conf.d/server.conf ", "echo '}' >> /etc/nginx/conf.d/server.conf ", "systemctl stop nginx", "systemctl start nginx", "systemctl enable nginx" ] ] } ] } } }, "WaitCondition": { "Type": "ALIYUN::ROS::WaitCondition", "Properties": { "Count": 1, "Handle": { "Ref": "WaitConditionHandle" }, "Timeout": 1800 } }, "Sleep": { "Type": "ALIYUN::ROS::Sleep", "DependsOn": "WaitCondition", "Properties": { "CreateDuration": { "Ref": "CreateDuration" } } }, "OtherServer": { "Type": "ALIYUN::ECS::InstanceGroup", "DependsOn": "Sleep", "Properties": { "InstanceName": "OtherServer", "ImageId": "centos_7.9", "VpcId": { "Ref": "VPC" }, "SecurityGroupId": { "Ref": "SecurityGroup" }, "VSwitchId": { "Ref": "VSwitch" }, "InstanceType": { "Ref": "InstanceType" }, "Password": { "Ref": "InstancePassword" }, "MaxAmount": 1, "AllocatePublicIP": false, "SystemDiskSize": 40, "InstanceChargeType": "PostPaid", "SystemDiskCategory": { "Ref": "SystemDiskCategory" }, "UserData": { "Fn::Join": [ "", [ "#!/bin/sh\n", "ssh_pub_key='", { "Fn::GetAtt": [ "WaitCondition", "Data" ] }, "'\n", "yum install -y jq\n", "pub_key=`echo \"$ssh_pub_key\" | jq '.ssh_pub_key' | xargs echo `\n", "echo \"$pub_key\" > /root/.ssh/authorized_keys\n", "chmod 600 /root/.ssh/authorized_keys\n", "curl ", { "Fn::Select": [ "0", { "Fn::GetAtt": [ "CenterServer", "PrivateIps" ] } ] }, ":80\n" ] ] } } } } }