Executando Comandos em uma Instância
Você pode configurar, gerenciar e solucionar problemas remotamente das instâncias de computação executando scripts na instância usando o recurso do comando de execução.
Por exemplo, o recurso do comando de execução pode ajudar você a automatizar tarefas como configurar placas de interface de rede virtual (VNICs) secundárias, unir instâncias a um provedor de identidade, solucionar problemas de conectividade SSH ou responder a cenários de recuperação de desastre entre regiões.
Você pode executar comandos em uma instância mesmo quando a instância não tem acesso SSH ou portas de entrada abertas.
A funcionalidade de comando executar usa o plug-in do Compute Instance Run Command gerenciado pelo software Oracle Cloud Agent.
Não use o recurso de comando de execução para fornecer ou recuperar senhas, segredos ou outras informações confidenciais em texto sem formatação. Para fornecer e recuperar informações confidenciais de forma segura, use um local Visão Geral do Serviço Object Storage para armazenar o arquivo de script e uma resposta. Use o Oracle Cloud Infrastructure Vault para gerenciar chaves e credenciais de segredo.
Para obter permissões, consulte Política do Serviço IAM Obrigatória para Trabalhar com Instâncias.
Imagens Suportadas
O recurso do comando de execução é suportado nas instâncias de computação que usam as seguintes imagens da plataforma:
- Oracle Autonomous Linux
- Oracle Linux
- CentOS
- Windows Server
Imagens personalizadas baseadas em uma imagem de plataforma suportada também suportam o recurso de comando de execução.
Regiões Suportadas
A funcionalidade de comando executar é suportada em todas as regiões do realm comercial do Oracle Cloud Infrastructure.
Limitações e Considerações
- Nas instâncias do Linux, o script é executado em um shell Bash por padrão. Para executar o script com outro programa, use
#!/<path_to_program>como a primeira linha do script. -
Nas instâncias do Windows, o script é executado em um shell batch por padrão. Para executar o script com o PowerShell, use
#ps1como primeira linha do script.Consulte um script de exemplo do PowerShellO exemplo a seguir usa o PowerShell para consultar o serviço de metadados da instância e imprimir o OCID da instância:
#ps1 $instance = Invoke-RestMethod -Headers @{'Authorization' = 'Bearer Oracle'} -Uri http://169.254.169.254/opc/v2/instance/ Write-Host ('Instance OCID is ' + $($instance.id)) - O tamanho máximo de um arquivo de script que você carrega diretamente para uma instância em texto sem formatação é 4 KB. Para fornecer um arquivo maior, salve o arquivo em um local do serviço Object Storage.
- A saída de um script quando retornado como texto sem formatação é limitada ao último 1 KB. Para salvar uma resposta maior, salve a saída em um local do serviço Object Storage.
- Quando você usa um local de Armazenamento de Objetos para salvar o arquivo ou resposta de script, a instância deve ter conectividade de saída, como um gateway de NAT (Network Access Translation), gateway de serviços ou gateway de Internet. A instância também deve permitir tráfego de saída na porta 443 para o software Oracle Cloud Agent, o Object Storage e o IAM.
-
Por padrão, é possível executar dois scripts por vez. Para alterar o padrão, atualize o arquivo de configuração do comando de execução:
cat /etc/oracle-cloud-agent/plugins/runcommand/config.ymlDefina os parâmetros a seguir:
logDir: /var/log/oracle-cloud-agent/plugins/runcommand commandExecutionMaxWorkers: <number-of-parallel-scripts> - No máximo, cinco scripts por vez podem estar em andamento. Um script será considerado em andamento caso tenha sido recebido pelo plug-in Compute Instance Run Command, mas ainda não tenha sido excluído da fila.
- Para executar tarefas de longa duração, use o recurso de comando de execução para programar um job cron na instância. A orquestração de comando não é suportada.
- Cada script é executado uma vez. Se quiser que um script seja executado várias vezes, use o cron para configurar uma programação para o script.
- Scripts que solicitam informações não são suportados. Você pode usar o serviço de metadados de instância (IMDS), no entanto, para recuperar de forma programática informações sobre a instância em que o script é executado.
- Quando você criar uma instância a partir de uma imagem Personalizada que já tenha permissões para o plug-in de Comando de Execução da Instância de Computação configurado, substitua
101-oracle-cloud-agent-run-commandpor100-oracle-cloud-agent-run-commandno arquivo de configuração. - Os códigos de saída retornados são códigos de erro padrão do Linux. Um código de saída
0indica sucesso. - Se você aplicar um timeout opcional a um script, o padrão será uma hora. O máximo é 24 horas.
- O tempo máximo durante o qual um script pode ser executado é de um dia.
- Para monitorar os recursos que os scripts consomem, como a utilização de CPU, use métricas.
- O cancelamento de um script é a melhor tentativa. Os comandos não poderão ser cancelados depois de finalizada a execução ou se tiverem expirado.
- Os arquivos de script e as respostas salvos em texto sem formatação são mantidos por sete dias. Os arquivos de script e as respostas salvos em um local do Object Storage são mantidos até que você os exclua.
- Não execute um script que cause a interrupção do software Oracle Cloud Agent ou do plug-in Compute Instance Run Command.
Executando Comandos com Privilégios de Administrador
Se um comando exigir permissões de administrador, você deverá conceder permissões de administrador ao plug-in de Comando de Execução da Instância do Serviço Compute para poder executar o comando. O plug-in é executado como usuário ocarun.
Você pode usar cloud-init (cloudbase-init no Windows) para configurar permissões na ativação da instância ou estabelecer conexão com uma instância depois que ela for iniciada e configurar as permissões manualmente. As etapas para conceder permissões de administrador dependem do sistema operacional.
Para conceder permissões sudo em instâncias Linux
-
Na instância, crie um arquivo da configuração de sudoers para o plug-in Compute Instance Run Command:
vi ./101-oracle-cloud-agent-run-command -
Permita que o usuário
ocarunexecute todos os comandos como sudo adicionando a seguinte linha ao arquivo de configuração:ocarun ALL=(ALL) NOPASSWD:ALLVocê tem a opção de listar comandos específicos. Consulte a man page do Linux para
sudoerse obtenha mais informações. -
Confirme se a sintaxe no arquivo de configuração está correta:
visudo -cf ./101-oracle-cloud-agent-run-commandSe a sintaxe estiver correta, a seguinte mensagem será retornada:
./101-oracle-cloud-agent-run-command: parsed OK -
Adicione o arquivo de configuração a
/etc/sudoers.d:sudo cp ./101-oracle-cloud-agent-run-command /etc/sudoers.d/
Para conceder permissões de administrador em instâncias do Windows
-
Na instância, execute o seguinte comando em PowerShell:
Add-LocalGroupMember -Group "Administrators" -Member "NT SERVICE\OCARUN" | Restart-Service -Name OCARUN -Force
Antes de Começar
- O plug-in do Compute Instance Run Command deve estar ativado na instância e os plug-ins devem estar em execução. Para obter mais informações sobre como ativar e executar plug-ins, consulte Oracle Cloud Agent.
- Você preparou o script que deseja executar. Recomendamos que você teste o comando em um ambiente não de produção antes de implantá-lo em instâncias que executam workflows de produção.
- Para fornecer o arquivo de script de um local do serviço Object Storage, Faça upload do arquivo de imagem para um bucket do serviço Object Storage na mesma região que a instância de destino. Observe o bucket e nome de arquivo ou o URL do serviço Object Storage para o arquivo. Para usar o mesmo comando entre tenancies, crie um URL de solicitação pré-autenticada que apareça para o arquivo.
- Para salvar a saída de comandos em um local do serviço Object Storage, crie um bucket para salvá-lo na mesma região que a instância de destino. Observe o nome do bucket ou o URL do serviço Object Storage do bucket. Opcionalmente, você pode salvar a saída do comando usando uma solicitação pré-autenticada que aponta para um local do serviço Object Storage.
- Para imagens da plataforma que foram liberadas antes de Outubro de 2020, o software Oracle Cloud Agent deve ser atualizado para uma versão que suporte o plug-in do Compute Instance Run Command (versão 1.5.1 ou posterior).
Usando a Console
- Abra o menu de navegação e selecione Compute. Em Compute, selecione Instâncias.
- Clique na instância em que você está interessado.
- Em Recursos, clique em Execução de comando.
- Clique em Criar comando.
- Digite um nome para o comando. Evite digitar informações confidenciais.
- Na caixa Timeout em segundos, informe o tempo necessário para fornecer ao plug-in do Compute Instance Run Command para executar o comando na instância antes de fazer timeout. O temporizador começa quando o plug-in inicia o comando. Para nenhum timeout, digite 0.
-
Na seção Adicionar script, faça upload do script cujo plug-in de Comando de Execução da Instância de Computação deseja executar na instância. Selecione uma das seguintes opções:
- Colar script: Cole o comando na caixa.
- Selecione um arquivo: Faça upload do script como um arquivo de texto (.txt). Navegue até o arquivo cujo upload você deseja fazer ou arraste e solte o arquivo na caixa.
- Importar de um bucket do serviço Object Storage: Selecione o bucket que contém o arquivo de script. Na caixa Nome de objeto, informe o nome do arquivo.
- Importar de um URL do Serviço Object Storage: Informe o URL do Serviço Object Storage para o arquivo do script.
-
Na seção Tipo de saída, selecione o local para salvar a saída do comando:
- Saída como texto: A saída é salva como texto sem formatação. Você pode revisar a saída na página Detalhes da Instância.
- Saída para um bucket do serviço Object Storage: A saída é salva em um bucket do serviço Object Storage. Selecione um bucket. Na caixa Nome de objeto, informe um nome para o arquivo de saída. Evite digitar informações confidenciais.
- Saída para um URL do serviço Object Storage: A saída é salva em um URL do serviço Object Storage. Digite o URL.
- Clique em Criar comando.
Se a saída do comando for salva em um local do serviço Object Storage, faça download do objeto de resposta do bucket no qual ela foi salva ou navegue até o URL de solicitação pré-autenticada do serviço Object Storage.
Se a saída do comando tiver sido salva como arquivo de texto sem formatação, faça o seguinte:
- Abra o menu de navegação e selecione Compute. Em Compute, selecione Instâncias.
- Clique na instância em que você está interessado.
- Em Recursos, clique em Execução de comando.
- Localize o comando na lista, no menu Ações (três pontos), selecione Exibir detalhes do comando.
- Abra o menu de navegação e selecione Compute. Em Compute, selecione Instâncias.
- Clique na instância em que você está interessado.
- Em Recursos, clique em Execução de comando.
- Localize o comando na lista, no menu Ações (três pontos), selecione Cancelar comando. Confirme quando solicitado.
Usando a API
Para obter informações sobre o uso da API e as solicitações de assinatura, consulte Documentação da API REST e Credenciais da Segurança. Para obter informações sobre SDKs, consulte SDKs e a CLI.
Use estas operações de API para trabalhar com o recurso de comando de execução:
Diagnosticando e Solucionando Problemas do Plug-in de Comando de Execução da Instância de Computação
Para solucionar problemas no plug-in Compute Instance Run Command, você pode exibir os logs gerados pelo plug-in. Estabeleça conexão com a instância e use o seguinte:
tail -f /var/log/oracle-cloud-agent/plugins/runcommand/runcommand.logPara maior visibilidade nas operações do plug-in sem precisar se conectar à instância, você pode criar logs personalizados usando o serviço Oracle Cloud Infrastructure Logging.
Erros de Log
Esta seção descreve como resolver os erros que aparecem no arquivo de log.
Falha ao Sondar
Se o plug-in Compute Instance Run Command não estiver fazendo sondagem para comandos, você poderá ver o seguinte erro no arquivo de log:
poll command err: circuitbreaker:[pollCommand] is open, last err:Service error:NotAuthorizedOrNotFound. Authorization failed or requested resource not found. http status code: 404.
Esse erro pode ocorrer quando a política de grupo dinâmico para o recurso de comando de execução não está ativada ou quando a instância foi adicionada recentemente ao grupo dinâmico. Por padrão, as instâncias não pertencem aos grupos de administradores da tenancy; portanto, você precisa definir explicitamente permissões de grupo dinâmico para a instância.
Quando você cria uma instância e a adiciona a um grupo dinâmico, leva até 30 minutos para que a instância comece a sondar comandos. Se você criar o grupo dinâmico primeiro e, em seguida, criar a instância, ela começará a sondar comandos assim que for criada.
Para testar a política de grupo dinâmico assim que você adicionar a instância a um grupo dinâmico, reinicie o serviço manualmente usando um dos seguintes comandos:
Oracle Linux 7.x e Oracle Linux 8.x
sudo systemctl restart oracle-cloud-agentWindows Server
net restart ocarun