Todos os produtos
Search
Central de documentação

CloudOps Orchestration Service:Execute um comando em várias instâncias do ECS simultaneamente

Última atualização: Aug 21, 2026

Este tópico descreve como executar um comando em várias instâncias do Elastic Compute Service (ECS) simultaneamente.

Informações gerais

O Alibaba Cloud permite executar comandos em uma instância remota do ECS. Essa é uma das operações de O&M mais comuns na plataforma. Por exemplo, você pode executar um comando para instalar ou desinstalar software, ou iniciar e parar processos em uma instância específica. Frequentemente, também é necessário aplicar o mesmo comando em múltiplas instâncias do ECS e consolidar os resultados.

Um caso de uso típico envolve a atualização simultânea de ambientes de runtime em diversas aplicações empresariais, seja por meio de atualizações contínuas (rolling updates) ou da execução de códigos. Essa abordagem aumenta significativamente a confiabilidade da implantação de aplicações.

Uma solução tradicional consiste em conectar-se às instâncias via Secure Shell (SSH). No entanto, expor a porta SSH de uma instância na internet traz riscos potenciais de segurança. Para mitigar esse problema, muitas organizações implementam jump servers como intermediários de acesso, o que eleva a complexidade operacional e os custos associados.

Embora o Ansible seja uma ferramenta de O&M open source popular no mercado, seu mecanismo de autenticação não se integra ao sistema de contas do Alibaba Cloud. Consequentemente, ao utilizá-lo para acessos remotos, você perde a capacidade de controlar permissões ou auditar registros operacionais usando as ferramentas nativas da plataforma.

No caso de instâncias Windows do ECS, o PowerShell oferece suporte à execução de comandos, mas sua configuração e manutenção podem apresentar desafios consideráveis.

Para resolver essas questões, recomendamos integrar o Operation Orchestration Service (OOS) do Alibaba Cloud com o Cloud Assistant. Essa combinação viabiliza a execução de comandos em lote nas instâncias do ECS. O Cloud Assistant fornece recursos atômicos essenciais para essa finalidade, enquanto o OOS gerencia tarefas de O&M agendadas ou orientadas por eventos, processa múltiplas operações simultaneamente e possibilita a criação de modelos personalizados. Assim, a integração entre Cloud Assistant e OOS oferece um método seguro, simples e eficiente para realizar tarefas de O&M em instâncias do ECS.

Preparações

Verifique se a Alibaba Cloud Command Line Interface (CLI) V3.0.19 ou superior está instalada e configurada. Para baixe a CLI do Alibaba Cloud, acesse https://github.com/aliyun/aliyun-cli/releases no GitHub. Para mais detalhes sobre a configuração, consulte Configuração interativa (rápida).

Executar um modelo público

O exemplo abaixo demonstra como executar o comando shell echo 123 nas instâncias Linux do ECS i-id45678zxcvb e i-id45679zxcvb, localizadas na região China (Beijing), utilizando um terminal shell local:

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":"" }'

Neste cenário, a operação StartExecution aciona o modelo público ACS-ECS-BulkyRunCommand, passando os parâmetros ResourceIds e commandContent. Caso a resposta em formato JSON retorne "ExecutionId":"exec-xxxxx", a execução está em andamento. Anote o valor do parâmetro ExecutionId e utilize-o no comando ListExecutions a seguir para acompanhar o progresso e obter o resultado final:

aliyun oos ListExecutions --region cn-hangzhou --ExecutionId "exec-id123456zxcvb"

Enquanto o comando estiver em processamento, o parâmetro Status retornará o valor Running. O campo TotalTasks exibe a quantidade total de comandos disparados, enquanto SuccessTasks mostra quantos foram concluídos com êxito. A diferença entre esses dois números representa as execuções pendentes.

{
        "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"
}

Execute o comando ListExecutions periodicamente até que o parâmetro Outputs apresente o resultado definitivo. A figura a seguir ilustra o resultado final deste exemplo.

Crie um modelo personalizado

Você pode criar e executar modelos personalizados com parâmetros predefinidos para simplificar o fluxo de execução de comandos. O trecho abaixo exemplifica a criação de um modelo desse tipo, que pode ser adaptado conforme as necessidades do seu negócio.

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 }}"
}
}
}'                

Após criar o modelo personalizado, utilize o comando abaixo para executá-lo:

aliyun oos StartExecution --region cn-hangzhou --TemplateName sample123 --Parameters '{}'                

Neste caso, a operação StartExecution dispara o modelo personalizado sample123 sem exigir parâmetros adicionais. Embora os exemplos acima utilizem a CLI, todas essas operações também estão disponíveis diretamente no console do OOS.

Informações adicionais

O OOS do Alibaba Cloud é uma plataforma automatizada de O&M que permite orquestrar tarefas agendadas, baseadas em eventos ou entre diferentes regiões, além de processar múltiplas ações simultaneamente. Além da execução de comandos, o serviço suporta diversas outras operações em instâncias do ECS, incluindo criação, liberação, inicialização e parada de instâncias, ajuste de configurações, upgrade de largura de banda de rede e anexação de discos. Para obter suporte online e tirar dúvidas sobre o OOS, participe do grupo no DingTalk (Número: 23330931).

Para acessar o console do OOS, visite https://oos.console.alibabacloud.com.