ALIYUN::ECS::RunCommand digunakan untuk menjalankan perintah shell, PowerShell, atau batch pada instance Elastic Compute Service (ECS).
Sintaksis
{
"Type": "ALIYUN::ECS::RunCommand",
"Properties": {
"Parameters": Map,
"Description": String,
"Timeout": Integer,
"ContentEncoding": String,
"Name": String,
"WorkingDir": String,
"CommandContent": String,
"Type": String,
"Frequency": String,
"EnableParameter": Boolean,
"InstanceIds": List,
"KeepCommand": Boolean,
"Sync": Boolean,
"Tags": List,
"RunAgainOn": List,
"WindowsPasswordName": String,
"RepeatMode": String,
"ResourceGroupId": String,
"Launcher": String,
"ContainerName": String,
"ContainerId": String,
"Username": String
}
}Properti
Properti | Tipe | Diperlukan | Dapat Diedit | Deskripsi | Kendala |
Parameters | Map | Tidak | Ya | Pasangan nilai-kunci dari parameter kustom yang diteruskan jika perintah mencakup parameter kustom. Sebagai contoh, jika konten perintah adalah echo {{name}}, Anda dapat menggunakan properti Parameters untuk meneruskan pasangan nilai-kunci {"name":"Jack"}. Nilai variabel name dalam echo {{name}} secara otomatis diganti dengan nilai Jack yang dipasangkan untuk menghasilkan perintah baru. Akibatnya, perintah echo Jack dijalankan. | Anda dapat menentukan hingga 10 parameter kustom. Kunci parameter kustom dapat memiliki panjang hingga 64 karakter, dan tidak boleh berupa string kosong. Nilai parameter kustom dapat berupa string kosong. Setelah parameter kustom dan konten perintah asli dikodekan dalam Base64, ukuran total dapat mencapai hingga 16 KB. Nama parameter kustom yang ditentukan dalam nilai properti Parameters harus disertakan dalam pengaturan parameter kustom yang Anda konfigurasi saat membuat perintah. Anda dapat menggunakan string kosong untuk mewakili parameter yang tidak ditentukan. |
Description | String | Tidak | Tidak | Deskripsi perintah. | Deskripsi mendukung semua set karakter dan dapat memiliki panjang hingga 512 karakter. |
Timeout | Integer | Tidak | Ya | Periode timeout untuk menjalankan perintah. | Satuan: detik. Nilai default: 60. Kesalahan timeout terjadi jika perintah tidak dapat dijalankan karena proses perintah melambat atau karena modul tertentu atau Cloud Assistant Agent tidak ada. Saat kesalahan timeout terjadi, proses perintah dihentikan secara paksa. |
ContentEncoding | String | Tidak | Ya | Mode penyandian konten perintah yang ditentukan oleh CommandContent. | Nilai valid:
Catatan Jika Anda menentukan nilai yang tidak valid untuk properti ini, Base64 digunakan untuk menyandikan konten perintah. |
Name | String | Tidak | Tidak | Nama perintah. | Nama mendukung semua set karakter dan dapat memiliki panjang hingga 128 karakter. |
WorkingDir | String | Tidak | Ya | Direktori kerja perintah pada instance ECS. | Nilai default:
|
CommandContent | String | Ya | Ya | Konten perintah. Konten perintah dapat berupa teks biasa atau disandikan dalam Base64. | Setelah konten perintah disandikan dalam Base64, konten tersebut dapat memiliki ukuran hingga 16 KB. Jika Anda mengatur EnableParameter ke true, fitur parameter kustom diaktifkan. Anda dapat mengonfigurasi parameter kustom berdasarkan aturan berikut: Tentukan parameter kustom dalam format {{}}. Di dalam {{}}, spasi dan baris baru sebelum dan sesudah nama parameter diabaikan. Anda dapat menentukan hingga 10 parameter kustom. Nama parameter kustom dapat berisi huruf, angka, tanda hubung (-), dan garis bawah (_). Nama parameter kustom dapat memiliki panjang hingga 64 karakter. |
Type | String | Ya | Ya | Tipe bahasa perintah. | Nilai valid:
|
Frequency | String | Tidak | Tidak | Interval waktu perintah dijalankan. | Tidak ada. |
EnableParameter | Boolean | Tidak | Ya | Menentukan apakah akan menyertakan parameter kustom dalam perintah. | Nilai valid:
|
InstanceIds | List | Ya | Ya | ID instance ECS. | Anda dapat menentukan hingga 20 instance ECS. Instance ECS harus dalam keadaan Berjalan. |
KeepCommand | Boolean | Tidak | Tidak | Menentukan apakah akan mempertahankan perintah setelah dijalankan. | Nilai valid:
|
Sync | Boolean | Tidak | Tidak | Menentukan apakah akan menjalankan perintah dalam mode sinkron. | Nilai valid:
|
Tags | List | Tidak | Ya | Tag. | Anda dapat menambahkan hingga 20 tag. Untuk informasi lebih lanjut, lihat Properti Tags. |
RunAgainOn | List | Tidak | Tidak | Tahapan menjalankan perintah lagi. | Tidak ada. |
WindowsPasswordName | String | Tidak | Tidak | Nama kata sandi yang ingin Anda gunakan untuk menjalankan perintah pada instance Windows. | Nama dapat memiliki panjang hingga 255 karakter. Jika Anda tidak ingin menggunakan pengguna System default untuk menjalankan perintah pada instance Windows, tentukan baik WindowsPasswordName maupun Catatan Jika Anda menggunakan pengguna root instance Linux atau pengguna System instance Windows untuk menjalankan perintah, Anda dapat membiarkan WindowsPasswordName kosong. |
RepeatMode | String | Tidak | Tidak | Mode di mana Anda ingin menjalankan perintah. | Nilai valid:
Nilai default:
Perhatikan hal-hal berikut:
|
Launcher | String | Tidak | Tidak | Peluncur untuk eksekusi skrip. | Nilainya dapat memiliki ukuran hingga 1 KB. |
ResourceGroupId | String | Tidak | Tidak | ID grup sumber daya tempat eksekusi perintah milik. | Perhatikan hal-hal berikut:
|
ContainerName | String | Tidak | Tidak | Nama kontainer. | Perhatikan hal-hal berikut:
|
ContainerId | String | Tidak | Tidak | ID kontainer. | Hanya string heksadesimal 64-bit yang didukung. Anda dapat menggunakan ID kontainer yang diawali dengan Perhatikan hal-hal berikut:
|
Username | String | Tidak | Ya | Nama pengguna yang ingin Anda gunakan untuk menjalankan perintah pada instance ECS. | Nama pengguna dapat memiliki panjang hingga 255 karakter.
Anda juga dapat menentukan nama pengguna lain yang sudah ada pada instance ECS untuk menjalankan perintah. Untuk alasan keamanan, kami merekomendasikan agar Anda menjalankan perintah Cloud Assistant sebagai pengguna biasa. Untuk informasi lebih lanjut, lihat Jalankan perintah Cloud Assistant sebagai pengguna biasa. |
Sintaksis Tags
"Tags": [
{
"Key": String,
"Value": String
}
]Properti Tags
Properti | Tipe | Diperlukan | Dapat Diedit | Deskripsi | Kendala |
Key | String | Ya | Tidak | Kunci tag. | Kunci tag harus memiliki panjang 1 hingga 128 karakter, dan tidak boleh mengandung |
Value | String | Tidak | Tidak | Nilai tag. | Nilai tag dapat memiliki panjang hingga 128 karakter, dan tidak boleh mengandung |
Nilai kembali
Fn::GetAtt
CommandId: ID perintah.
InvokeId: ID eksekusi perintah.
InvokeInstances: Instance ECS tempat perintah dijalankan.
InvokeResults: Hasil eksekusi perintah.
Contoh
Format YAML
ROSTemplateFormatVersion: '2015-09-01'
Parameters:
InstanceId:
Type: String
AssociationProperty: ALIYUN::ECS::Instance::InstanceId
Resources:
RunCommand:
Type: ALIYUN::ECS::RunCommand
Properties:
CommandContent:
Fn::Sub:
|
#!/bin/sh
yum install -y tree
Type: RunShellScript
InstanceIds:
- Ref: InstanceId
Outputs:
CommandId:
Description: ID perintah yang dibuat.
Value:
Fn::GetAtt:
- RunCommand
- CommandId
InvokeId:
Description: ID pemanggilan perintah.
Value:
Fn::GetAtt:
- RunCommand
- InvokeId
Format JSON
{
"ROSTemplateFormatVersion": "2015-09-01",
"Parameters": {
"InstanceId": {
"Type": "String",
"AssociationProperty": "ALIYUN::ECS::Instance::InstanceId"
}
},
"Resources": {
"RunCommand": {
"Type": "ALIYUN::ECS::RunCommand",
"Properties": {
"CommandContent": {
"Fn::Sub":
"#!/bin/sh\nyum install -y tree\n"
},
"Type": "RunShellScript",
"InstanceIds": [
{
"Ref": "InstanceId"
}
]
}
}
},
"Outputs": {
"CommandId": {
"Description": "ID perintah yang dibuat.",
"Value": {
"Fn::GetAtt": [
"RunCommand",
"CommandId"
]
}
},
"InvokeId": {
"Description": "ID pemanggilan perintah.",
"Value": {
"Fn::GetAtt": [
"RunCommand",
"InvokeId"
]
}
}
}
}Ikhtisar UpdatePolicy
Setelah menggunakan ALIYUN::ECS::RunCommand untuk menjalankan perintah pada sekelompok instance ECS, Anda dapat memanfaatkan properti UpdatePolicy untuk memperbarui konfigurasi instance ECS secara batch. Tabel berikut menjelaskan properti UpdatePolicy dan sintaksisnya.
Sintaksis UpdatePolicy
"UpdatePolicy": {
"RollingUpdate": Map
}Properti UpdatePolicy
Properti | Tipe | Diperlukan | Dapat Diedit | Deskripsi | Kendala |
RollingUpdate | Map | Tidak | Ya | Kebijakan pembaruan untuk perintah yang ada. | Untuk informasi lebih lanjut, lihat Properti RollingUpdate. |
Sintaksis RollingUpdate
"RollingUpdate": {
"MaxBatchSize": Integer,
"PauseTime": Integer
}Properti RollingUpdate
Properti | Tipe | Diperlukan | Dapat Diedit | Deskripsi | Kendala |
MaxBatchSize | Integer | Ya | Ya | Jumlah instance ECS tempat Anda ingin menjalankan perintah dalam setiap batch. | Nilai valid: 1 hingga 1000. |
PauseTime | Integer | Tidak | Ya | Interval antara dua eksekusi perintah batch. Nilai default: 0. Satuan: detik. | Nilai valid: 0 hingga 3600. |
Template sebelum dan sesudah pembaruan
Anda dapat menggunakan template berikut untuk menjalankan perintah yang sama pada tiga instance ECS:
{
"ROSTemplateFormatVersion": "2015-09-01",
"Resources": {
"RunCommand": {
"Type": "ALIYUN::ECS::RunCommand",
"Properties": {
"CommandContent": "xxx",
"Type": "RunShellScript",
"Sync": true,
"InstanceIds": [
"i-2zxxxx",
"i-2zxxxx",
"i-2zxxxx",
]
}
}
}
}Setelah stack yang berisi instance ECS dibuat, Anda dapat menambahkan properti UpdatePolicy ke template untuk memperbarui konfigurasi instance ECS:
{
"ROSTemplateFormatVersion": "2015-09-01",
"Resources": {
"RunCommand": {
"Type": "ALIYUN::ECS::RunCommand",
"Properties": {
"CommandContent": "xxx",
"Type": "RunShellScript",
"Sync": true,
"InstanceIds": [
"i-2zxxxx",
"i-2zxxxx",
"i-2zxxxx",
"i-2zxxxx",
"i-2zxxxx",
]
},
"UpdatePolicy": {
"RollingUpdate": {
"MaxBatchSize": 2,
"PauseTime": 10
}
}
}
}
}Dalam contoh kode di atas, MaxBatchSize diatur menjadi 2. Jumlah instance ECS yang ditunjukkan oleh InstanceIds diperbarui dari 3 menjadi 5. Selama proses pembaruan stack, konfigurasi tiga instance ECS asli diperbarui dalam dua batch dengan urutan tertentu. Setiap batch masing-masing mencakup dua dan satu instance. Perintah dijalankan pada dua instance ECS baru secara bersamaan.