Topik ini menjelaskan cara menjalankan perintah pada beberapa instans Elastic Compute Service (ECS) sekaligus.
Informasi latar belakang
Alibaba Cloud memungkinkan Anda menjalankan perintah pada instans ECS remote, yang merupakan salah satu operasi O&M paling umum di Alibaba Cloud. Misalnya, Anda dapat menjalankan perintah untuk menginstal atau mencopot perangkat lunak, serta memulai dan menghentikan proses pada instans ECS tertentu. Dalam banyak kasus, Anda mungkin juga perlu menjalankan perintah yang sama pada beberapa instans ECS sekaligus dan menggabungkan hasilnya.
Sebagai contoh, Anda dapat menjalankan perintah terkait pada beberapa aplikasi bisnis sekaligus untuk memperbarui lingkungan runtime melalui pembaruan bergilir (rolling updates) atau mengeksekusi kode. Pendekatan ini meningkatkan keandalan penerapan aplikasi.
Solusi praktisnya adalah menyambungkan ke instans ECS melalui Secure Shell (SSH). Namun, hal ini dapat menimbulkan risiko keamanan jika Anda mengakses port SSH instans ECS melalui Internet. Untuk mengatasi masalah tersebut, Anda dapat membuat jump server dan menggunakannya untuk mengakses instans ECS, tetapi pendekatan ini meningkatkan kompleksitas operasional dan biaya.
Ansible adalah alat O&M open source populer di industri, tetapi metode autentikasinya tidak terintegrasi dengan sistem akun Alibaba Cloud. Jika Anda menggunakan Ansible untuk akses jarak jauh, Anda tidak dapat memanfaatkan alat Alibaba Cloud untuk mengontrol akses atau mengaudit catatan operasional Ansible melalui Alibaba Cloud.
Jika Anda menggunakan instans ECS berbasis Windows, Anda dapat menggunakan PowerShell untuk menjalankan perintah. Namun, pendekatan ini menimbulkan tantangan signifikan dalam konfigurasi dan pemeliharaan instans ECS.
Untuk mengatasi isu-isu tersebut, kami merekomendasikan integrasi Alibaba Cloud Operation Orchestration Service (OOS) dengan Cloud Assistant. Integrasi ini memungkinkan Anda menjalankan perintah pada beberapa instans ECS sekaligus. Cloud Assistant menyediakan sejumlah fitur atomik untuk menjalankan perintah pada instans ECS, sedangkan OOS memungkinkan Anda mengelola tugas O&M berjadwal dan berbasis event, memproses beberapa tugas O&M secara bersamaan, serta membuat templat kustom untuk tugas O&M. Dengan demikian, integrasi Cloud Assistant dan OOS menyediakan metode yang aman, mudah, dan efisien untuk menjalankan tugas O&M pada instans ECS.
Persiapan
Pastikan Alibaba Cloud Command Line Interface (CLI) versi 3.0.19 atau lebih baru telah terinstal dan dikonfigurasi. Untuk mengunduh Alibaba Cloud CLI, kunjungi https://github.com/aliyun/aliyun-cli/releases di GitHub. Untuk informasi lebih lanjut tentang konfigurasi, lihat Konfigurasi interaktif (cepat).
Jalankan templat publik
Perintah berikut memberikan contoh cara menjalankan perintah shell echo 123 pada instans ECS Linux i-id45678zxcvb dan i-id45679zxcvb di wilayah China (Beijing) menggunakan terminal shell lokal:
aliyun oos StartExecution --region cn-hangzhou --TemplateName ACS-ECS-BulkyRunCommand --Parameters '{"commandType":"RunShellScript", "commandContent":"echo 123", "targets":{"Type":"ResourceIds", "ResourceIds":["i-id45678zxcvb","i-id45679zxcvb"]}, "rateControl":{"maxErrors":0,"mode":"Concurrency"}, "OOSAssumeRole":"" }'Dalam perintah tersebut, operasi StartExecution dipanggil untuk menjalankan templat publik ACS-ECS-BulkyRunCommand yang mencakup parameter ResourceIds dan commandContent. Jika respons berformat JSON mengembalikan "ExecutionId":"exec-xxxxx", berarti perintah sedang berjalan. Catat nilai parameter ExecutionId tersebut dan gunakan dalam perintah ListExecutions berikut untuk memeriksa progres dan hasilnya:
aliyun oos ListExecutions --region cn-hangzhou --ExecutionId "exec-id123456zxcvb"Jika perintah masih berjalan, parameter Status dalam hasil akan bernilai Running. Parameter TotalTasks menunjukkan jumlah total perintah, sedangkan SuccessTasks menunjukkan jumlah perintah yang berhasil. Selisih antara kedua nilai tersebut menunjukkan jumlah perintah yang masih tertunda.
{
"Execution": {
"Outputs": {},
"TemplateName": "ACS-ECS-BulkyRunCommand",
"Parameters": {
"commandType": "RunShellScript",
"OOSAssumeRole": "",
"rateControl": {
"maxErrors": 0,
"mode": "Concurrency"
},
"targets": {
"ResourceIds": [
"i-id45678zxcvb","i-id45679zxcvb"
],
"Type": "ResourceIds"
},
"commandContent": "echo 123"
},
"Counters": {
"Failed": 0,
"Success": 0,
"Total": 0
},
"ExecutedBy": "aliyun-account1",
"LoopMode": "Automatic",
"Mode": "Automatic",
"TemplateId": "t-123456zxcvb",
"Status": "Running",
"TemplateVersion": "v2",
"SafetyCheck": "Skip",
"StartDate": "2019-10-15T07:22:03Z",
"ExecutionId": "exec-id123456zxcvb",
"CurrentTasks": []
},
"RequestId": "1A9B1817-0530-470C-8640-BADADADB220BD"
}Anda dapat menjalankan perintah ListExecutions secara berulang hingga hasil akhir dikembalikan dalam parameter Outputs. Gambar berikut menunjukkan hasil akhir dari contoh ini.
Buat templat kustom
Anda dapat membuat dan menjalankan templat kustom dengan parameter yang diperlukan telah ditetapkan, sehingga menyederhanakan proses menjalankan perintah. Perintah berikut memberikan contoh cara membuat templat kustom. Anda dapat menyesuaikan templat tersebut sesuai kebutuhan bisnis Anda.
aliyun oos CreateTemplate --region cn-hangzhou --TemplateName sample123 --Content '{
"FormatVersion": "OOS-2019-06-01",
"Tasks": [
{
"Name": "runCommand",
"Action": "ACS::ECS::RunCommand",
"Properties": {
"commandContent": "echo 1234",
"instanceId": "{{ ACS::TaskLoopItem }}",
"commandType": "RunShellScript"
},
"Loop": {
"Items": ["i-id45678zxcvb","i-id45679zxcvb"],
"Outputs": {
"commandOutputs": {
"AggregateType": "Fn::ListJoin",
"AggregateField": "commandOutput"
}
}
},
"Outputs": {
"commandOutput": {
"Type": "String",
"ValueSelector": "invocationOutput"
}
}
}
],
"Outputs": {
"commandOutputs": {
"Type": "List",
"Value": "{{ runCommand.commandOutputs }}"
}
}
}' Setelah templat kustom dibuat, jalankan perintah berikut untuk mengeksekusinya:
aliyun oos StartExecution --region cn-hangzhou --TemplateName sample123 --Parameters '{}' Dalam contoh ini, operasi StartExecution dipanggil untuk menjalankan templat kustom sample123. Anda tidak perlu menentukan parameter tambahan. Operasi ini dilakukan melalui CLI, tetapi Anda juga dapat melakukannya di Konsol OOS.
Informasi tambahan
Alibaba Cloud OOS adalah platform O&M otomatis yang memungkinkan Anda mengelola tugas O&M berjadwal, berbasis event, dan lintas wilayah (cross-region), serta memproses beberapa tugas O&M sekaligus. Selain menjalankan perintah, Anda juga dapat menggunakan OOS untuk melakukan berbagai operasi lain pada instans ECS, seperti membuat, melepas (release), memulai, dan menghentikan instans ECS, memodifikasi konfigurasi, meningkatkan lebar pita jaringan instans ECS, serta menyambungkan disk ke instans ECS. Untuk informasi lebih lanjut tentang OOS, bergabunglah dengan grup DingTalk (Nomor: 23330931) untuk dukungan daring.
Untuk masuk ke Konsol OOS, kunjungi https://oos.console.alibabacloud.com.