Executando scripts de desligamento,Executando scripts de desligamento


Crie e execute scripts de desligamento que executam comandos logo antes de uma instância de máquina virtual (VM) ser interrompida ou reiniciada. Isso é útil se você depende de scripts automatizados para iniciar e encerrar instâncias, permitindo que as instâncias tenham tempo para limpar ou executar tarefas, como exportar logs ou sincronizar com outros sistemas.

Os scripts de desligamento são especialmente úteis para VMs em um grupo de instâncias gerenciadas com um escalonador automático . Se o escalonador automático encerrar uma VM no grupo, o script de desligamento será executado antes da VM parar e o script de desligamento executará quaisquer ações que você definir. O script é executado durante o período de desligamento limitado antes da parada da VM. Por exemplo, seu script de encerramento pode copiar dados processados ​​para o Cloud Storage ou fazer backup de registros.

Os scripts de desligamento funcionam de maneira muito semelhante aos scripts de inicialização. Grande parte da documentação para scripts de inicialização também se aplica a scripts de desligamento.

Para tarefas de desligamento e reinicialização, as VMs sempre executam scripts de desligamento da seguinte forma:

  • Para VMs 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 .
  • Se ainda não o fez, configure a autenticação. Autenticação é o processo pelo qual sua identidade é verificada para acesso a Google Cloud serviços e APIs. Para executar códigos ou amostras em um ambiente de desenvolvimento local, você pode se autenticar no Compute Engine selecionando uma das seguintes opções:

    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

    1. After installing the Google Cloud CLI, initialize it by running the following command:

      gcloud init

      If you're using an external identity provider (IdP), you must first sign in to the gcloud CLI with your federated identity.

    2. Set a default region and zone.
    3. 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.

      1. Install the Google Cloud CLI.
      2. If you're using an external identity provider (IdP), you must first sign in to the gcloud CLI with your federated identity.

      3. To initialize the gcloud CLI, run the following command:

        gcloud init
      4. 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.

        If an authentication error is returned, confirm that you have configured the gcloud CLI to use Workforce Identity Federation.

      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.

        After installing the Google Cloud CLI, initialize it by running the following command:

        gcloud init

        If you're using an external identity provider (IdP), you must first sign in to the gcloud CLI with your federated identity.

      Para mais informações, consulte Autenticar para usar REST na documentação de autenticação do Google Cloud.

Permissões necessárias para esta tarefa

Para executar esta tarefa, você deve ter as seguintes permissões :

  • Todas as permissões necessárias para criar uma instância
  • compute.instances.setMetadata na instância

Especificações

As seções a seguir descrevem as especificações para scripts de desligamento.

Limitações

Existem algumas limitações a serem observadas ao usar scripts de desligamento:

  • O Compute Engine executa scripts de desligamento apenas com base no melhor esforço. Em casos raros, o Compute Engine não pode garantir que o script de encerramento será 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 Computer Configuration/Windows Setting/Scripts (Startup/Shutdown) para iniciar o script após o desligamento do sistema.

Invocação de script de desligamento

Os scripts de encerramento são acionados quando a instância é encerrada após qualquer um dos seguintes eventos:

  • Você faz o seguinte:

  • O Compute Engine interrompe uma instância como parte de uma operação programada de interrupção ou exclusão.

  • O Compute Engine interrompe uma VM Spot ou uma instância preemptiva como parte do processo de preempção .

Um script de desligamento pode ser de qualquer tipo de arquivo. Se houver um script de desligamento presente na instância, o Compute Engine fará o seguinte:

  1. Copia o script para um arquivo local na instância.
  2. Define permissões no arquivo para tornar o script executável.
  3. Executa o arquivo quando a instância é encerrada.

Você poderia, por exemplo, fornecer um script Python em vez de um script bash. Lembre-se de que o Compute Engine executa o script literalmente, independentemente do tipo de script.

Para executar um script que não seja bash, adicione uma linha shebang no topo do arquivo para que o sistema operacional saiba qual interpretador usar. Por exemplo, para um script Python, você pode adicionar uma linha shebang como:

#!/usr/bin/python

Tempo de execução do script de desligamento

Os scripts de encerramento começam a ser executados quando o Compute Engine define o estado da instância como STOPPING . Seus scripts devem ser concluídos antes que a instância seja totalmente interrompida, que é quando seu estado muda para TERMINATED . O tempo que a instância leva para atingir o estado TERMINATED varia dependendo do tipo de instância .

Se os scripts demorarem mais do que o tempo necessário para a instância ser interrompida, o Compute Engine interromperá os scripts à força, o que poderá levar à perda de dados ou a tarefas incompletas. Para evitar isso, interrompa a instância no sistema operacional convidado . Essa abordagem mantém o estado da instância como STOPPING até que os scripts de desligamento terminem de ser executados.

Use um script de desligamento local

Um script de desligamento local é um script que fica no seu computador local. Transmita um script de desligamento local como um arquivo ou forneça o conteúdo diretamente ao Compute Engine.

Os scripts de desligamento podem executar quantas ações forem necessárias, mas se você estiver transmitindo o arquivo localmente, seu script não poderá exceder o limite de comprimento do valor de metadados de 256 KB. Para usar um script que exceda o limite de comprimento, armazene o arquivo no Cloud Storage. Consulte Usar script de desligamento do Cloud Storage para obter mais informações.

Forneça um arquivo de script de desligamento

Você só pode transmitir um arquivo de script de desligamento local por meio da ferramenta de linha de comando gcloud .

gcloud

Para passar um arquivo de script de desligamento local, forneça o sinalizador --metadata-from-file , seguido por um par de chaves de metadados, shutdown-script=PATH/TO/FILE , onde PATH/TO/FILE é um caminho relativo para o script de desligamento. Por exemplo:

gcloud compute instances create example-instance \
    --metadata-from-file shutdown-script=examples/scripts/install.sh

Terraforma

Para especificar um script de desligamento diretamente, use o recurso google_compute_instance com o caminho para o script de desligamento nos metadados.

resource "google_compute_instance" "shutdown_content_from_file" {
  name         = "instance-name-shutdown-content-from-file"
  machine_type = "f1-micro"
  zone         = "us-central1-c"
  metadata = {
    # Shuts down Apache server
    shutdown-script = file("${path.module}/shutdown-script.sh")
  }
  boot_disk {
    initialize_params {
      image = "debian-cloud/debian-11"
    }
  }
  network_interface {
    # A default network is created for all Google Cloud projects
    network = "default"
    access_config {
    }
  }
}

Forneça o conteúdo do script de desligamento diretamente

Como alternativa, você pode passar diretamente o conteúdo do seu script de desligamento.

Console

No console do Google Cloud, especifique um script de desligamento diretamente usando a chave de metadados shutdown-script :

  1. Vá para a página Criar uma instância .

    Vá para Criar uma instância

  2. Especifique os detalhes da VM.

  3. Expanda a seção Opções avançadas .

  4. Expanda Management e faça o seguinte:

    1. Na seção Metadados , clique em Adicionar item .
    2. No campo Chave , insira shutdown-script para a chave de metadados.
    3. No campo Valor , adicione o conteúdo do seu script de desligamento.
  5. Continue com o processo de criação da VM.

gcloud

Usando a CLI do Google Cloud, use a sinalização --metadata para fornecer o conteúdo do seu script de desligamento, seguido pelo par de chaves shutdown-script=CONTENTS , onde CONTENTS é o conteúdo do seu script de desligamento.

gcloud compute instances create example-instance --metadata shutdown-script="#! /bin/bash
> # Shuts down Apache server
> /etc/init.d/apache2 stop"

Terraforma

Para especificar um script de desligamento diretamente, use o recurso google_compute_instance com o script de desligamento nos metadados.

resource "google_compute_instance" "default" {
  name         = "instance-name-shutdown-content-directly"
  machine_type = "f1-micro"
  zone         = "us-central1-c"
  metadata = {
    # Shuts down Apache server
    shutdown-script = "#! /bin/bash /etc/init.d/apache2 stop"
  }
  boot_disk {
    initialize_params {
      image = "debian-cloud/debian-11"
    }
  }
  network_interface {
    # A default network is created for all Google Cloud projects
    network = "default"
    access_config {
    }
  }
}

DESCANSAR

Na API, forneça um script de desligamento como parte da propriedade de metadados em sua solicitação ao criar uma instância. 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"
      }
    ]
  }...
}

Forneça um script de desligamento em instâncias do Windows

Execute scripts de encerramento em instâncias do Windows usando as seguintes chaves de metadados específicas do Windows. Escolha uma das chaves especializadas listadas abaixo. Cada chave deve corresponder ao tipo de script que você deseja executar.

Você pode especificar vários scripts de desligamento passando chaves diferentes para sua instância, mas cada chave só pode ser especificada uma vez por máquina virtual.

As chaves a seguir podem ser usadas com um script de desligamento local, usando 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

Use um script de desligamento do Cloud Storage

Você pode armazenar e usar um script de desligamento do Cloud Storage. Siga as instruções na documentação dos scripts de inicialização , mas substitua startup-script-url por shutdown-script-url .

Para instâncias do Windows, substitua windows-startup-script-url por windows-shutdown-script-url .

Aplicar um script de encerramento às instâncias em execução

Para adicionar um script de encerramento a uma instância em execução, siga as instruções na documentação Aplicando um script de inicialização a instâncias em execução, mas substitua as chaves de metadados por uma das seguintes chaves:

  • shutdown-script : Forneça o conteúdo do script de desligamento diretamente com esta chave. Usando a CLI do Google Cloud, você pode fornecer o caminho para um arquivo de script de desligamento usando a sinalização --metadata-from-file e a chave de metadados shutdown-script .
  • shutdown-script-url : forneça um URL do Cloud Storage para o arquivo de script de desligamento com esta chave.

Visualizando a saída de um script de desligamento

Linux

Você pode visualizar a saída de 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 procedimentos e verificando eventos GCEMetadataScripts :

,

Crie e execute scripts de desligamento que executam comandos logo antes de uma instância de máquina virtual (VM) ser interrompida ou reiniciada. Isso é útil se você depende de scripts automatizados para iniciar e encerrar instâncias, permitindo que as instâncias tenham tempo para limpar ou executar tarefas, como exportar logs ou sincronizar com outros sistemas.

Os scripts de desligamento são especialmente úteis para VMs em um grupo de instâncias gerenciadas com um escalonador automático . Se o escalonador automático encerrar uma VM no grupo, o script de desligamento será executado antes da VM parar e o script de desligamento executará quaisquer ações que você definir. O script é executado durante o período de desligamento limitado antes da parada da VM. Por exemplo, seu script de encerramento pode copiar dados processados ​​para o Cloud Storage ou fazer backup de registros.

Os scripts de desligamento funcionam de maneira muito semelhante aos scripts de inicialização. Grande parte da documentação para scripts de inicialização também se aplica a scripts de desligamento.

Para tarefas de desligamento e reinicialização, as VMs sempre executam scripts de desligamento da seguinte forma:

  • Para VMs 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 .
  • Se ainda não o fez, configure a autenticação. Autenticação é o processo pelo qual sua identidade é verificada para acesso a Google Cloud serviços e APIs. Para executar códigos ou amostras em um ambiente de desenvolvimento local, você pode se autenticar no Compute Engine selecionando uma das seguintes opções:

    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

    1. After installing the Google Cloud CLI, initialize it by running the following command:

      gcloud init

      If you're using an external identity provider (IdP), you must first sign in to the gcloud CLI with your federated identity.

    2. Set a default region and zone.
    3. 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.

      1. Install the Google Cloud CLI.
      2. If you're using an external identity provider (IdP), you must first sign in to the gcloud CLI with your federated identity.

      3. To initialize the gcloud CLI, run the following command:

        gcloud init
      4. 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.

        If an authentication error is returned, confirm that you have configured the gcloud CLI to use Workforce Identity Federation.

      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.

        After installing the Google Cloud CLI, initialize it by running the following command:

        gcloud init

        If you're using an external identity provider (IdP), you must first sign in to the gcloud CLI with your federated identity.

      Para mais informações, consulte Autenticar para usar REST na documentação de autenticação do Google Cloud.

Permissões necessárias para esta tarefa

Para executar esta tarefa, você deve ter as seguintes permissões :

  • Todas as permissões necessárias para criar uma instância
  • compute.instances.setMetadata na instância

Especificações

As seções a seguir descrevem as especificações para scripts de desligamento.

Limitações

Existem algumas limitações a serem observadas ao usar scripts de desligamento:

  • O Compute Engine executa scripts de desligamento apenas com base no melhor esforço. Em casos raros, o Compute Engine não pode garantir que o script de encerramento será 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 Computer Configuration/Windows Setting/Scripts (Startup/Shutdown) para iniciar o script após o desligamento do sistema.

Invocação de script de desligamento

Os scripts de encerramento são acionados quando a instância é encerrada após qualquer um dos seguintes eventos:

  • Você faz o seguinte:

  • O Compute Engine interrompe uma instância como parte de uma operação programada de interrupção ou exclusão.

  • O Compute Engine interrompe uma VM Spot ou uma instância preemptiva como parte do processo de preempção .

Um script de desligamento pode ser de qualquer tipo de arquivo. Se houver um script de desligamento presente na instância, o Compute Engine fará o seguinte:

  1. Copia o script para um arquivo local na instância.
  2. Define permissões no arquivo para tornar o script executável.
  3. Executa o arquivo quando a instância é encerrada.

Você poderia, por exemplo, fornecer um script Python em vez de um script bash. Lembre-se de que o Compute Engine executa o script literalmente, independentemente do tipo de script.

Para executar um script que não seja bash, adicione uma linha shebang no topo do arquivo para que o sistema operacional saiba qual interpretador usar. Por exemplo, para um script Python, você pode adicionar uma linha shebang como:

#!/usr/bin/python

Tempo de execução do script de desligamento

Os scripts de encerramento começam a ser executados quando o Compute Engine define o estado da instância como STOPPING . Seus scripts devem ser concluídos antes que a instância seja totalmente interrompida, que é quando seu estado muda para TERMINATED . O tempo que a instância leva para atingir o estado TERMINATED varia dependendo do tipo de instância .

Se os scripts demorarem mais do que o tempo necessário para a instância ser interrompida, o Compute Engine interromperá os scripts à força, o que poderá levar à perda de dados ou a tarefas incompletas. Para evitar isso, interrompa a instância no sistema operacional convidado . Essa abordagem mantém o estado da instância como STOPPING até que os scripts de desligamento terminem de ser executados.

Use um script de desligamento local

Um script de desligamento local é um script que fica no seu computador local. Transmita um script de desligamento local como um arquivo ou forneça o conteúdo diretamente ao Compute Engine.

Os scripts de desligamento podem executar quantas ações forem necessárias, mas se você estiver transmitindo o arquivo localmente, seu script não poderá exceder o limite de comprimento do valor de metadados de 256 KB. Para usar um script que exceda o limite de comprimento, armazene o arquivo no Cloud Storage. Consulte Usar script de desligamento do Cloud Storage para obter mais informações.

Forneça um arquivo de script de desligamento

Você só pode transmitir um arquivo de script de desligamento local por meio da ferramenta de linha de comando gcloud .

gcloud

Para passar um arquivo de script de desligamento local, forneça o sinalizador --metadata-from-file , seguido por um par de chaves de metadados, shutdown-script=PATH/TO/FILE , onde PATH/TO/FILE é um caminho relativo para o script de desligamento. Por exemplo:

gcloud compute instances create example-instance \
    --metadata-from-file shutdown-script=examples/scripts/install.sh

Terraforma

Para especificar um script de desligamento diretamente, use o recurso google_compute_instance com o caminho para o script de desligamento nos metadados.

resource "google_compute_instance" "shutdown_content_from_file" {
  name         = "instance-name-shutdown-content-from-file"
  machine_type = "f1-micro"
  zone         = "us-central1-c"
  metadata = {
    # Shuts down Apache server
    shutdown-script = file("${path.module}/shutdown-script.sh")
  }
  boot_disk {
    initialize_params {
      image = "debian-cloud/debian-11"
    }
  }
  network_interface {
    # A default network is created for all Google Cloud projects
    network = "default"
    access_config {
    }
  }
}

Forneça o conteúdo do script de desligamento diretamente

Como alternativa, você pode passar diretamente o conteúdo do seu script de desligamento.

Console

No console do Google Cloud, especifique um script de desligamento diretamente usando a chave de metadados shutdown-script :

  1. Vá para a página Criar uma instância .

    Vá para Criar uma instância

  2. Especifique os detalhes da VM.

  3. Expanda a seção Opções avançadas .

  4. Expanda Management e faça o seguinte:

    1. Na seção Metadados , clique em Adicionar item .
    2. No campo Chave , insira shutdown-script para a chave de metadados.
    3. No campo Valor , adicione o conteúdo do seu script de desligamento.
  5. Continue com o processo de criação da VM.

gcloud

Usando a CLI do Google Cloud, use a sinalização --metadata para fornecer o conteúdo do seu script de desligamento, seguido pelo par de chaves shutdown-script=CONTENTS , onde CONTENTS é o conteúdo do seu script de desligamento.

gcloud compute instances create example-instance --metadata shutdown-script="#! /bin/bash
> # Shuts down Apache server
> /etc/init.d/apache2 stop"

Terraforma

Para especificar um script de desligamento diretamente, use o recurso google_compute_instance com o script de desligamento nos metadados.

resource "google_compute_instance" "default" {
  name         = "instance-name-shutdown-content-directly"
  machine_type = "f1-micro"
  zone         = "us-central1-c"
  metadata = {
    # Shuts down Apache server
    shutdown-script = "#! /bin/bash /etc/init.d/apache2 stop"
  }
  boot_disk {
    initialize_params {
      image = "debian-cloud/debian-11"
    }
  }
  network_interface {
    # A default network is created for all Google Cloud projects
    network = "default"
    access_config {
    }
  }
}

DESCANSAR

Na API, forneça um script de desligamento como parte da propriedade de metadados em sua solicitação ao criar uma instância. 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"
      }
    ]
  }...
}

Forneça um script de desligamento em instâncias do Windows

Execute scripts de encerramento em instâncias do Windows usando as seguintes chaves de metadados específicas do Windows. Escolha uma das chaves especializadas listadas abaixo. Cada chave deve corresponder ao tipo de script que você deseja executar.

Você pode especificar vários scripts de desligamento passando chaves diferentes para sua instância, mas cada chave só pode ser especificada uma vez por máquina virtual.

As chaves a seguir podem ser usadas com um script de desligamento local, usando 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

Use um script de desligamento do Cloud Storage

Você pode armazenar e usar um script de desligamento do Cloud Storage. Siga as instruções na documentação dos scripts de inicialização , mas substitua startup-script-url por shutdown-script-url .

Para instâncias do Windows, substitua windows-startup-script-url por windows-shutdown-script-url .

Aplicar um script de encerramento às instâncias em execução

Para adicionar um script de encerramento a uma instância em execução, siga as instruções na documentação Aplicando um script de inicialização a instâncias em execução, mas substitua as chaves de metadados por uma das seguintes chaves:

  • shutdown-script : Forneça o conteúdo do script de desligamento diretamente com esta chave. Usando a CLI do Google Cloud, você pode fornecer o caminho para um arquivo de script de desligamento usando a sinalização --metadata-from-file e a chave de metadados shutdown-script .
  • shutdown-script-url : forneça um URL do Cloud Storage para o arquivo de script de desligamento com esta chave.

Visualizando a saída de um script de desligamento

Linux

Você pode visualizar a saída de 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 procedimentos e verificando eventos GCEMetadataScripts :