Crie e execute scripts de desligamento que executam comandos antes que uma instância de máquina virtual (VM) seja interrompida ou reiniciada. Isso é útil quando você conta com scripts automatizados para iniciar e encerrar instâncias para que elas tenham tempo de limpar ou fazer tarefas, como exportar registros ou fazer a sincronização com outros sistemas.
Os scripts de desligamento são úteis principalmente para VMs em um grupo gerenciado de instâncias com um escalonador automático. Se o escalonador automático encerra uma VM no grupo, o script de desligamento é executado antes de a VM ser interrompida e o script de desligamento executa todas as ações definidas por você. O script é executado durante o período de desligamento limitado antes da interrupção da instância. Por exemplo, o script de desligamento pode copiar dados processados no Cloud Storage ou fazer backup de todos os registros.
As funções dos scripts de desligamento são similares às dos scripts de inicialização. Grande parte da documentação de scripts de inicialização também se aplica aos scripts de desligamento.
Para tarefas de desligamento e reinicialização, as VMs sempre executam scripts de desligamento da seguinte maneira:
- Para VMs do Linux, usando o usuário
root
. - Para VMs do Windows, usando a conta
System
.
Antes de começar
- Saiba mais sobre scripts de inicialização.
- Entenda o que é o servidor de metadados.
-
Configure a autenticação, caso ainda não tenha feito isso.
A autenticação é
o processo de verificação da sua identidade para acesso a serviços e APIs do Google Cloud.
Para executar códigos ou amostras de um ambiente de desenvolvimento local, autentique-se no
Compute Engine da seguinte maneira.
Select the tab for how you plan to use the samples on this page:
Console
When you use the Google Cloud console to access Google Cloud services and APIs, you don't need to set up authentication.
gcloud
-
Install the Google Cloud CLI, then initialize it by running the following command:
gcloud init
- Set a default region and zone.
- Install the Google Cloud CLI.
-
To initialize the gcloud CLI, run the following command:
gcloud init
-
If you're using a local shell, then create local authentication credentials for your user account:
gcloud auth application-default login
You don't need to do this if you're using Cloud Shell.
- Todas as permissões necessárias para criar uma instância
compute.instances.setMetadata
na instância- Os scripts de desligamento têm um tempo limitado para concluir a execução antes que a instância seja interrompida:
- Instâncias sob demanda: 90 segundos depois que você parar ou excluir uma instância
- Instâncias preemptivas: 30 segundos depois da instância preemptiva
- O Compute Engine só executa scripts de desligamento com base no melhor esforço. Em casos raros, o Compute Engine não pode garantir que o script de desligamento seja concluído.
- No Windows, a Política de Grupo Local é usada para iniciar o script de desligamento.
- O pacote de instalação define a configuração da Política de Grupo Local
Computer Configuration/Windows Setting/Scripts (Startup/Shutdown)
para iniciar o script após o encerramento do sistema.
- O pacote de instalação define a configuração da Política de Grupo Local
- Quando uma instância é desligada devido a uma solicitação
instances.delete
ouinstances.stop
à API. - Quando o Compute Engine interrompe uma instância preemptiva como parte do processo preemptivo.
- Quando uma instância é desligada devido a uma solicitação ao sistema convidado, como
sudo shutdown
ousudo reboot
. - Ao desligar uma instância manualmente usando o console do Google Cloud ou a ferramenta
gcloud compute
. - copia o script para um arquivo local na instância;
- define as permissões no arquivo para torná-lo executável;
- executa o arquivo quando a instância é interrompida.
Acesse a página Criar uma instância.
Especifique os detalhes da VM.
Expanda a seção Opções avançadas.
Expanda Gerenciamento e faça o seguinte:
- Na seção Metadados, clique em Adicionar item.
- No campo Chave, insira
shutdown-script
para a chave de metadados. - No campo Valor, adicione o conteúdo do script de desligamento.
Continue com o processo de criação da VM.
shutdown-script
: use essa chave para inserir diretamente o conteúdo do script de desligamento. Com a CLI do Google Cloud, é possível inserir o caminho para um arquivo de script de desligamento usando a sinalização--metadata-from-file
e a chave de metadadosshutdown-script
.shutdown-script-url
: use essa chave para inserir um URL do Cloud Storage para o arquivo de script de desligamento.Conectando-se à instância e executando o comando a seguir:
sudo journalctl -u google-shutdown-scripts.service
Como visualizar a saída pela porta serial 1 no console do Google Cloud e verificar se há eventos
google_metadata_script_runner
.IAP Desktop em uma estação de trabalho do Windows. Para mais informações, consulte o repositório GoogleCloudPlatform/iap-desktop no GitHub.
Porta serial 1 no Console do Google Cloud. Para mais informações, consulte Como visualizar a saída da porta serial.
Registro do aplicativo do Visualizador de eventos do Windows.
IAP Desktop em uma estação de trabalho do Windows. Para mais informações, consulte o repositório GoogleCloudPlatform/iap-desktop no GitHub.
Terraform
Para usar os exemplos do Terraform nesta página em um ambiente de desenvolvimento local, instale e inicialize a gcloud CLI e, em seguida, configure o Application Default Credentials com suas credenciais de usuário.
Confira mais informações em Set up authentication for a local development environment.
REST
Para usar as amostras da API REST nesta página em um ambiente de desenvolvimento local, use as credenciais fornecidas para gcloud CLI.
Install the Google Cloud CLI, then initialize it by running the following command:
gcloud init
Para mais informações, consulte Autenticar para usar REST na documentação de autenticação do Google Cloud.
Permissões exigidas para a tarefa
Para executar esta tarefa, é preciso ter a permissão a seguir:
Especificações
Limitações
Existem algumas limitações a serem observadas ao usar scripts de desligamento:
Invocação de script de desligamento
Os scripts de desligamento são acionados por determinados eventos da Interface avançada de energia e configuração (ACPI, na sigla em inglês), como reinicializações ou encerramentos. Há muitas maneiras de reiniciar ou interromper uma instância, mas apenas algumas ações acionam a execução do script de desligamento. Esse script é executado como parte das seguintes ações:
O script de desligamento não será executado se a instância for redefinida usando
instances().reset
.Um script de desligamento pode ser de qualquer tipo de arquivo. Quando há um script de desligamento, o Compute Engine:
Por exemplo, é possível fornecer um script Python em vez de um script bash. Lembre-se de que o Compute Engine executa o script na íntegra, independentemente do tipo.
Para executar um script que não é bash, adicione uma linha shebang na parte superior do arquivo para permitir que o sistema operacional saiba qual intérprete usar. Por exemplo, para um script Python, adicione uma linha shebang como:
#!/usr/bin/python
Tempo de execução do script de desligamento
Antes de uma instância ser encerrada ou reiniciada, a execução do script de desligamento precisa ocorrer dentro um período de tempo limitado. Durante esse período, o Compute Engine tenta executar o script de desligamento. Se a conclusão do script demorar mais do que o período limitado, a instância será interrompida automaticamente e todas as tarefas em execução serão encerradas. Se você desligar ou reiniciar uma instância fazendo uma solicitação ao sistema operacional convidado com o comando
sudo shutdown
, o limite não será aplicado.A duração do período de desligamento é diferente, dependendo do tipo de instância. Instâncias preemptivas têm um período de desligamento mais curto do que instâncias normais. Para mais informações sobre os limites de tempo de desligamento em cada tipo de instância, consulte Período de desligamento.
Em geral, é necessário que a conclusão da execução do script de desligamento ocorra dentro do período de desligamento para que o sistema operacional tenha tempo de concluir o processo de desligamento e liberar buffers para o disco.
Usar um script de desligamento local
Um script de desligamento local é um script que reside no computador local. Transfira um script de desligamento local como um arquivo ou fornecendo o conteúdo diretamente ao Compute Engine.
Scripts de desligamento podem executar quantas ações forem necessárias. No entanto, se você estiver transferindo o arquivo localmente, o script não poderá exceder o limite de 256 KB. Para usar um script que exceda o limite de tamanho, armazene o arquivo no Cloud Storage. Consulte Usar um script de desligamento do Cloud Storage para mais informações.
Fornecer um arquivo de script de desligamento
Um arquivo de script de desligamento local só pode ser transferido por meio da ferramenta de linha de comando
gcloud
.gcloud
Para transferir um arquivo de script de desligamento local, use a sinalização
--metadata-from-file
seguida por um par de chaves de metadados,shutdown-script=PATH/TO/FILE
, em quePATH/TO/FILE
é um caminho relativo para o script de desligamento. Exemplo:gcloud compute instances create example-instance \ --metadata-from-file shutdown-script=examples/scripts/install.sh
Terraform
Para especificar um script de encerramento diretamente, use o recurso
google_compute_instance
com o caminho para o script de encerramento nos metadados.Fornecer conteúdo do script desligamento diretamente
Como alternativa, transfira diretamente o conteúdo do script de desligamento.
Console
No console do Google Cloud, especifique um script de desligamento diretamente usando a chave de metadados
shutdown-script
:gcloud
Com a CLI do Google Cloud, use a sinalização
--metadata
para inserir o conteúdo do script de desligamento, seguido pelo par de chavesshutdown-script=CONTENTS
, em queCONTENTS
é o conteúdo do script de desligamento.gcloud compute instances create example-instance --metadata shutdown-script="#! /bin/bash > # Shuts down Apache server > /etc/init.d/apache2 stop"
Terraform
Para especificar um script de encerramento diretamente, use o recurso
google_compute_instance
com o script de encerramento nos metadados.REST
Na API, quando você criar uma instância, forneça um script de desligamento como parte da propriedade de metadados em sua solicitação. Use
shutdown-script
como chave de metadados:POST https://compute.googleapis.com/compute/v1/projects/myproject/zones/us-central1-a/instances {... "metadata": { "items": [ { "key": "shutdown-script", "value": "#! /bin/bash\n\n# Shuts down Apache server\n/etc/init.d/apache2 stop" } ] }... }
Inserir um script de desligamento em instâncias do Windows
Execute scripts de desligamento em instâncias do Windows usando as seguintes chaves de metadados específicas do Windows. Escolha entre as chaves especializadas listadas abaixo. Cada chave deve corresponder ao tipo de script que você quer executar.
É possível especificar vários scripts de desligamento passando chaves diferentes para a instância, mas cada chave só pode ser definida uma vez por máquina virtual.
As chaves a seguir podem ser utilizadas com um script de desligamento local, seguindo as mesmas instruções acima.
Scripts de desligamento cmd
Scripts de desligamento bat
Scripts de desligamento ps1
windows-shutdown-script-cmd
windows-shutdown-script-bat
windows-shutdown-script-ps1
Usar um script de desligamento do Cloud Storage
É possível armazenar e usar um script de desligamento do Cloud Storage. Siga as instruções da documentação Scripts de inicialização, mas substitua
startup-script-url
porshutdown-script-url
.Para instâncias do Windows, substitua
windows-startup-script-url
porwindows-shutdown-script-url
.Aplicar um script de desligamento a instâncias em execução
Para adicionar um script de desligamento a uma instância em execução, siga as instruções da documentação Como aplicar um script de desligamento a instâncias em execução, mas substitua as chaves de metadados por uma das chaves a seguir:
Como visualizar a saída de um script de desligamento
Linux
É possível visualizar a saída em um script de desligamento do Linux seguindo um destes procedimentos:
Windows
Visualize a saída de um script de desligamento do Windows Server usando qualquer um dos seguintes itens e verificando eventos
GCEMetadataScripts
:Exceto em caso de indicação contrária, o conteúdo desta página é licenciado de acordo com a Licença de atribuição 4.0 do Creative Commons, e as amostras de código são licenciadas de acordo com a Licença Apache 2.0. Para mais detalhes, consulte as políticas do site do Google Developers. Java é uma marca registrada da Oracle e/ou afiliadas.
Última atualização 2024-09-24 UTC.
-