Um script de inicialização é um arquivo que executa tarefas durante o processo de inicialização de uma
instância de máquina virtual (VM, na sigla em inglês). Os scripts de inicialização podem ser aplicados a todas as VMs em um projeto
ou a uma única VM. Os scripts de inicialização especificados pelos metadados da VM modificam
os scripts de inicialização especificados pelos metadados do projeto, e os scripts de inicialização
são executados apenas quando uma rede está disponível. Neste documento, descrevemos como usar scripts
de inicialização em instâncias de VM do Linux. Saiba mais sobre como adicionar um
script de inicialização no nível do projeto em gcloud compute project-info add-metadata.
Para scripts de inicialização do Linux, você pode usar um arquivo bash ou não bash. Para usar um arquivo não bash,
designe o intérprete adicionando um #! à parte superior do arquivo. Por
exemplo, para usar um script de inicialização do Python 3, adicione #! /usr/bin/python3 na parte superior
do arquivo.
Se você especificar um script de inicialização usando um dos procedimentos neste documento, o Compute Engine:
- Copiará o script de inicialização na VM 
- Definirá as permissões de execução no script de inicialização 
- Executará o script de inicialização como o usuário - rootquando a VM for inicializada
Para informações sobre as várias tarefas relacionadas a scripts de inicialização e quando executar cada um, consulte a Visão geral.
Pré-requisitos
Para executar scripts armazenados em metadados em uma instância de VM, o ambiente convidado precisa estar instalado e em execução.
- O ambiente de convidado inclui o agente de convidado (por exemplo, google-guest-agent no Linux), que lê o conteúdo do script ou o URL dos metadados da instância e inicia a execução.
- Todas as imagens públicas do Compute Engine vêm com o ambiente convidado pré-instalado.
- Se você criar uma imagem personalizada, precisará instalar manualmente o ambiente convidado do Google para garantir que os scripts de metadados e outros recursos do Google Cloud funcionem corretamente.
Antes de começar
- Leia a visão geral dos scripts de inicialização.
- Leia sobre o servidor de metadados.
- 
  
  Configure a autenticação, caso ainda não tenha feito isso.
  Com isso, você confirma sua identidade para acesso a serviços e APIs do Google Cloud . Para executar código ou exemplos em um ambiente de desenvolvimento local, faça a autenticação no Compute Engine com um destes métodos:
  
   
   
     
   
  
   
   
     
   
  
   
   
     
   
  
 
 
 
  
    
      Select the tab for how you plan to use the samples on this page: ConsoleWhen you use the Google Cloud console to access Google Cloud services and APIs, you don't need to set up authentication. gcloud- 
 
 
  
  
   
   
  
   
   
  
   
   
     
   
  
  
   
   
  
   
   
  
   
   
  
 
 
   
   
      Instale a CLI do Google Cloud. Após a instalação, inicialize a CLI do Google Cloud executando o seguinte comando: gcloud initAo usar um provedor de identidade (IdP) externo, primeiro faça login na gcloud CLI com sua identidade federada. 
- Set a default region and zone.
 RESTPara usar as amostras da API REST desta página em um ambiente de desenvolvimento local, use as credenciais fornecidas para gcloud CLI. Instale a CLI do Google Cloud. Após a instalação, inicialize a CLI do Google Cloud executando o seguinte comando: gcloud initAo usar um provedor de identidade (IdP) externo, primeiro faça login na gcloud CLI com sua identidade federada. Saiba mais em Autenticar para usar REST na documentação de autenticação do Google Cloud . Chaves de metadados para scripts de inicialização do LinuxUm script de inicialização é transmitido para uma VM a partir de um local especificado por uma chave de metadados. Uma chave de metadados especifica se o script de inicialização está armazenado localmente ou no Cloud Storage ou transmitido diretamente para a VM. A chave de metadados usada também pode depender do tamanho do script de inicialização. A tabela a seguir mostra as chaves de metadados que podem ser usadas para scripts de inicialização do Linux e fornece informações sobre qual chave usar com base no local de armazenamento e no tamanho do script de inicialização. Chave de metadados Use para startup-scriptTransmitir um script de inicialização bash ou não bash armazenado localmente ou adicionado diretamente de até 256 KB startup-script-urlTransmitir um script de inicialização bash ou não bash armazenado no Cloud Storage e que seja maior que 256 KB. A string inserida aqui é usada como está para executar gcloud storage. Se astartup-script-urltiver caracteres de espaço, não substitua os espaços por%20nem adicione aspas duplas ("") à stringstartup-script-url.Ordem de execução de scripts de inicialização do LinuxÉ possível usar vários scripts de inicialização. Scripts de inicialização armazenados localmente ou adicionados diretamente são executados antes de scripts de inicialização armazenados no Cloud Storage. A tabela a seguir mostra, com base na chave de metadados, a ordem de execução dos scripts de inicialização do Linux. Chave de metadados Ordem de execução startup-scriptPrimeiro durante cada inicialização após a inicialização inicial startup-script-urlSegundo durante cada inicialização após a inicialização inicial Como transmitir um script de inicialização do Linux diretamenteÉ possível adicionar o conteúdo de um script de inicialização diretamente a uma VM ao criá-la. Os procedimentos a seguir mostram como criar uma VM com um script de inicialização que instala o Apache e cria uma página da Web básica. ConsoleComo transmitir um script de inicialização do Linux diretamente para uma nova VM - No console do Google Cloud , acesse a página Criar uma instância. 
- Para usar um sistema operacional Linux, faça o seguinte: - No menu de navegação, clique em SO e armazenamento. 
- Clique em Alterar. 
- No painel Disco de inicialização, selecione um sistema operacional Linux. 
 
- Para adicionar um script de inicialização do Linux diretamente, faça o seguinte: - No menu de navegação, clique em Avançado. 
- Na seção Automação, insira o seguinte no campo Script de inicialização: - #! /bin/bash apt update apt -y install apache2 cat <<EOF > /var/www/html/index.html <html><body><p>Linux startup script added directly.</p></body></html> EOF
 
- Opcional: especifique outras opções de configuração. Para mais informações, consulte Opções de configuração durante a criação da instância. 
- Para criar e iniciar a instância, clique em Criar. 
 Como transmitir um script de inicialização do Linux diretamente para uma VM existente - No console do Google Cloud , acesse a página Instâncias de VM. 
- Clique no Nome da instância. 
- Clique em Editar. 
- Em Automação, adicione o conteúdo do script de inicialização. 
 Como verificar o script de inicialização Depois que a instância for iniciada, visualize o IP externo em um navegador da Web para verificar se o script de inicialização criou o site. Talvez seja necessário aguardar cerca de um minuto para que o script de inicialização de amostra seja concluído. gcloudComo transmitir um script de inicialização do Linux diretamente para uma nova VM Transmita o conteúdo de um script de inicialização diretamente para uma VM ao criá-la usando o seguinte comando gcloud compute instances create.gcloud compute instances create VM_NAME \ --image-project=debian-cloud \ --image-family=debian-10 \ --metadata=startup-script='#! /bin/bash apt update apt -y install apache2 cat <<EOF > /var/www/html/index.html <html><body><p>Linux startup script added directly.</p></body></html> EOF' Substitua VM_NAME pelo nome da VM. Como transmitir um script de inicialização do Linux diretamente para uma VM existente Adicione o script de inicialização diretamente a uma VM atual usando o seguinte comando gcloud compute instances add-metadata:gcloud compute instances add-metadata VM_NAME \ --zone=ZONE \ --metadata=startup-script='#! /bin/bash apt update apt -y install apache2 cat <<EOF > /var/www/html/index.html <html><body><p>Linux startup script added directly.</p></body></html> EOF'Substitua: - VM_NAME: O nome da VM. 
- ZONE: a zona da VM 
 Como verificar o script de inicialização Depois que a VM for iniciada, visualize o IP externo em um navegador da Web para verificar se o script de inicialização criou o site. Talvez seja necessário aguardar cerca de um minuto para que o script de inicialização de amostra seja concluído. RESTComo transmitir um script de inicialização do Linux diretamente para uma nova VM Transmita o conteúdo de um script de inicialização diretamente para uma VM ao criá-la usando o seguinte método instances.insert.POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instances { ... "networkInterfaces": [ { "accessConfigs": [ { "type": "ONE_TO_ONE_NAT" } ] } ], "metadata": { "items": [ { "key": "startup-script", "value": "#! /bin/bash\napt update\napt -y install apache2\ncat <<EOF > /var/www/html/index.html\n<html><body><p>Linux startup script added directly.</p></body></html>\nEOF" } ] }, ... }Substitua: - PROJECT_ID: o ID do projeto em que a VM está. 
- ZONE: zona em que a VM será criada. 
 Como transmitir um script de inicialização do Linux diretamente para uma VM existente - Receba o valor - metadata.fingerprintda VM usando o método- instances.get:- GET https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instances/VM_NAME - Substitua: - PROJECT_ID: o ID do projeto em que a VM está. 
- ZONE: a zona da VM. 
- VM_NAME: o nome da VM. 
 
- Transmita o script de inicialização usando o valor - fingerprintcom a chave e o valor de metadados do script de inicialização em uma chamada para o método- instances.setMetadata:- POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instances/VM_NAME/setMetadata { "fingerprint": FINGERPRINT, "items": [ { "key": "startup-script", "value": "#! /bin/bash\napt update\napt -y install apache2\ncat <<EOF > /var/www/html/index.html\n<html><body><p>Linux startup script added directly.</p></body></html>\nEOF" } ], ... }- Substitua: - PROJECT_ID: o ID do projeto em que a VM está. 
- ZONE: a zona da VM. 
- VM_NAME: o nome da VM. 
- FINGERPRINT: o valor - metadata.fingerprintrecebido usando o método- instances.get.
 
 Como verificar o script de inicialização Depois que a VM for iniciada, visualize o IP externo em um navegador da Web para verificar se o script de inicialização criou o site. Talvez seja necessário aguardar cerca de um minuto para que o script de inicialização de amostra seja concluído. Como transmitir um script de inicialização do Linux de um arquivo localÉ possível armazenar um script de inicialização em um arquivo local na estação de trabalho e transmitir o arquivo local como metadados para uma VM ao criá-la. Não é possível usar arquivos armazenados em VMs como scripts de inicialização. Antes de transmitir um script de inicialização do Linux de um arquivo local para uma VM, faça o seguinte: - Crie um arquivo local para armazenar o script de inicialização. 
- Observe o caminho relativo da CLI gcloud para o script de inicialização. 
- Adicione o seguinte script de inicialização ao arquivo: - #! /bin/bash apt update apt -y install apache2 cat <<EOF > /var/www/html/index.html <html><body><p>Linux startup script from a local file.</p></body></html> EOF
 gcloudComo transmitir um script de inicialização do Linux de um arquivo local para uma nova VM Crie uma VM e transmita o conteúdo de um arquivo local a ser usado como o script de inicialização utilizando o comando gcloud compute instances createcom a sinalização--metadata-from-file.gcloud compute instances create VM_NAME \ --image-project=debian-cloud \ --image-family=debian-10 \ --metadata-from-file=startup-script=FILE_PATH Substitua: - VM_NAME: o nome da VM 
- FILE_PATH: o caminho relativo para o arquivo de script de inicialização 
 Como transmitir um script de inicialização do Linux de um arquivo local para uma VM atual Transmita um script de inicialização para uma VM atual a partir de um arquivo local usando o seguinte comando gcloud compute instances add-metadata:gcloud compute instances add-metadata VM_NAME \ --zone=ZONE \ --metadata-from-file startup-script=FILE_PATH Substitua: - VM_NAME: O nome da VM. 
- ZONE: a zona da VM 
- FILE_PATH: o caminho relativo para o arquivo de script de inicialização 
 Como verificar o script de inicialização Visualize o IP externo em um navegador da Web para verificar se o script de inicialização criou o site. Talvez seja necessário aguardar cerca de um minuto para que o script de inicialização de amostra seja concluído. Como transmitir um script de inicialização do Linux do Cloud StorageÉ possível armazenar um script de inicialização no Cloud Storage e transmiti-lo para uma VM ao criá-la. Depois de adicionar um script de inicialização ao Cloud Storage, você tem um URL que pode ser utilizado para fazer referência ao script de inicialização ao criar uma VM. Antes de adicionar um script de inicialização a partir de um bucket do Cloud Storage, faça o seguinte: - Crie um arquivo para armazenar o script de inicialização. Este exemplo usa um arquivo bash ( - .sh).
- Adicione o seguinte comando ao arquivo bash, que instala o Apache e cria uma página da Web simples: - #! /bin/bash apt update apt -y install apache2 cat <<EOF > /var/www/html/index.html <html><body><p>Linux startup script from Cloud Storage.</p></body></html> EOF
 Implicações de segurança- Por padrão, os proprietários e editores de projetos podem acessar arquivos do Cloud Storage no mesmo projeto, a menos que haja controles de acesso explícitos que impeçam esse acesso. 
- Se o bucket ou objeto do Cloud Storage for menos seguro que os metadados, haverá risco de escalonamento de privilégios se o script de inicialização for modificado e a VM for reinicializada. Isso ocorre porque, após a reinicialização da VM, o script de inicialização é executado como - roote pode usar as permissões da conta de serviço anexada para acessar outros recursos.
 LimitaçõesConsoleComo transmitir um script de inicialização armazenado no Cloud Storage para uma nova VM - No console do Google Cloud , acesse a página Criar uma instância. 
- Para usar um sistema operacional Linux, faça o seguinte: - No menu de navegação, clique em SO e armazenamento. 
- Na seção Sistema operacional e armazenamento, clique em Mudar. Em seguida, selecione um sistema operacional Linux. 
 
- Para permitir que a instância acesse o bucket do Cloud Storage que contém o script de inicialização do Linux, faça o seguinte: - No menu de navegação, clique em Segurança. 
- Na lista Conta de serviço, selecione uma conta que tenha o papel do IAM Leitor de objetos do Storage ( - roles/storage.objectViewer) no bucket do Cloud Storage.
 
- Para adicionar um script de inicialização do Linux especificando um arquivo no Cloud Storage, faça o seguinte: - No menu de navegação, clique em Avançado. 
- Na seção Metadados, clique em Adicionar item. Os campos Chave e Valor aparecem. 
- No campo Chave, digite - startup-script-url.
- No campo Valor, insira o local do Cloud Storage do arquivo de script de inicialização usando um dos seguintes formatos: - URL autenticado: https://storage.googleapis.com/BUCKET/FILE
- URI do gcloud storage: - gs://BUCKET/FILE- Substitua: 
- BUCKET: o nome do bucket que contém o arquivo de script de inicialização 
- FILE: o nome do arquivo de script de inicialização 
 
- URL autenticado: 
 
- Opcional: especifique outras opções de configuração. Para mais informações, consulte Opções de configuração durante a criação da instância. 
- Para criar e iniciar a instância, clique em Criar. 
 Como transmitir um script de inicialização armazenado no Cloud Storage para uma VM atual - No console do Google Cloud , acesse a página Instâncias de VM. 
- Clique no Nome da instância. 
- Clique em Editar. 
- Em Metadados, adicione os seguintes valores: - Chave: - startup-script-url
- Valor: o local do Cloud Storage do arquivo de script de inicialização usando um dos formatos a seguir: - URL autenticado: https://storage.googleapis.com/BUCKET/FILE
- URI do gcloud storage: gs://BUCKET/FILE
 
- URL autenticado: 
 
 Como verificar o script de inicialização Visualize o IP externo em um navegador da Web para verificar se o script de inicialização criou o site. Talvez seja necessário aguardar cerca de um minuto para que o script de inicialização de amostra seja concluído. gcloudComo transmitir um script de inicialização armazenado no Cloud Storage para uma nova VM Transmita um script de inicialização armazenado no Cloud Storage para uma VM ao criá-la usando o seguinte comando gcloud compute instances create. Para o valor da sinalização--scope, usestorage-ropara que a VM possa acessar o Cloud Storage.gcloud compute instances create VM_NAME \ --image-project=debian-cloud \ --image-family=debian-10 \ --scopes=storage-ro \ --metadata=startup-script-url=CLOUD_STORAGE_URL Substitua: - VM_NAME: o nome da VM. 
- CLOUD_STORAGE_URL: o valor dos metadados. Defina como o local do Cloud Storage do arquivo de script de inicialização usando um dos seguintes formatos: - URL autenticado: https://storage.googleapis.com/BUCKET/FILE
- URI do gcloud storage: gs://BUCKET/FILE
 
- URL autenticado: 
 Como transmitir um script de inicialização armazenado no Cloud Storage para uma VM atual Transmita um script de inicialização armazenado no Cloud Storage para uma VM atual usando o seguinte comando gcloud compute instances add-metadata:gcloud compute instances add-metadata VM_NAME \ --zone=ZONE \ --metadata startup-script-url=CLOUD_STORAGE_URLSubstitua: - VM_NAME: o nome da VM. 
- ZONE: a zona da VM. 
- CLOUD_STORAGE_URL: o valor dos metadados. Defina como o local do Cloud Storage do arquivo de script de inicialização usando um dos seguintes formatos: - URL autenticado: https://storage.googleapis.com/BUCKET/FILE
- URI do gcloud storage: gs://BUCKET/FILE
 
- URL autenticado: 
 Como verificar o script de inicialização Visualize o IP externo em um navegador da Web para verificar se o script de inicialização criou o site. Talvez seja necessário aguardar cerca de um minuto para que o script de inicialização de amostra seja concluído. RESTComo transmitir um script de inicialização armazenado no Cloud Storage para uma nova VM Transmita um script de inicialização armazenado no Cloud Storage para uma VM ao criá-la usando o seguinte método instances.insert. No camposcopes, adicionehttps://www.googleapis.com/auth/devstorage.read_onlypara que a VM possa acessar o Cloud Storage.POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instances { ... "networkInterfaces": [ { "accessConfigs": [ { "type": "ONE_TO_ONE_NAT" } ] } ], "serviceAccounts": [ { "email": "default", "scopes": [ "https://www.googleapis.com/auth/devstorage.read_only" ] } ], "metadata": { "items": [ { "key": "startup-script-url", "value": "CLOUD_STORAGE_URL" } ] }, ... }Substitua: - PROJECT_ID: o ID do projeto; 
- ZONE: zona em que a VM será criada. 
- CLOUD_STORAGE_URL: o valor dos metadados. Defina como o local do Cloud Storage do arquivo de script de inicialização usando um dos seguintes formatos: - URL autenticado: https://storage.googleapis.com/BUCKET/FILE
- URI do gcloud storage: gs://BUCKET/FILE
 
- URL autenticado: 
 Como transmitir um script de inicialização armazenado no Cloud Storage para uma VM atual - Receba o valor - metadata.fingerprintda VM usando o método- instances.get:- GET https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instances/VM_NAME - Substitua: - PROJECT_ID: o ID do projeto; 
- ZONE: a zona da VM; 
- VM_NAME: o nome da VM 
 
- Transmita o script de inicialização usando o valor - fingerprintcom a chave e o valor de metadados do script de inicialização em uma chamada para o método- instances.setMetadata:- POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instances/VM_NAME/setMetadata { "fingerprint": FINGERPRINT, "items": [ { "key": "startup-script-url", "value": "CLOUD_STORAGE_URL" } ], ... }- Substitua: - PROJECT_ID: o ID do projeto; 
- ZONE: a zona da VM. 
- VM_NAME: o nome da VM. 
- FINGERPRINT: o valor - metadata.fingerprintrecebido usando o método- instances.get.
- CLOUD_STORAGE_URL: o valor dos metadados. Defina como o local do Cloud Storage do arquivo de script de inicialização usando um dos seguintes formatos: - URL autenticado: https://storage.googleapis.com/BUCKET/FILE
- URI do gcloud storage: gs://BUCKET/FILE
 
- URL autenticado: 
 
 Como verificar o script de inicialização Visualize o IP externo em um navegador da Web para verificar se o script de inicialização criou o site. Talvez seja necessário aguardar cerca de um minuto para que o script de inicialização de amostra seja concluído. Como acessar metadados de um script de inicialização do LinuxEm um script de inicialização, é possível acessar valores de metadados. Por exemplo, é possível usar o mesmo script para várias VMs e parametrizar cada script individualmente transmitindo valores de metadados diferentes para cada VM. Para acessar um valor de metadados personalizado em um script de inicialização, faça o seguinte: - Crie um script de inicialização que consulte o valor de uma chave de metadados. Por exemplo, o script de inicialização de arquivo bash ( - .sh) a seguir consulta o valor da chave de metadados- foo.- #! /bin/bash METADATA_VALUE=$(curl http://metadata.google.internal/computeMetadata/v1/instance/attributes/foo -H "Metadata-Flavor: Google") apt update apt -y install apache2 cat <<EOF > /var/www/html/index.html <html><body><p>Accessing metadata value of foo: $METADATA_VALUE</p></body></html> EOF 
- Defina o valor da chave de metadados - fooao criar uma VM usando o seguinte comando- gcloud compute instances create. Neste exemplo, o script de inicialização é transmitido para a VM a partir de um arquivo local.- gcloud- gcloud compute instances create VM_NAME \ --image-project=debian-cloud \ --image-family=debian-10 \ --metadata-from-file=startup-script=FILE_PATH \ --metadata=foo=bar - Substitua: - VM_NAME: o nome da VM 
- FILE_PATH: o caminho relativo para o arquivo de script de inicialização 
 - Para mais informações sobre como especificar um par de chave-valor/chave de metadados, consulte Como configurar metadados personalizados. 
- Na estação de trabalho local, veja o IP externo em um navegador da Web para verificar se o script de inicialização gera o valor - foo. Talvez seja necessário aguardar cerca de um minuto para que o script de inicialização de amostra seja concluído.
 Como executar um script de inicialização do Linux novamenteExecute novamente um script de inicialização: 
- Executando o seguinte comando: - sudo google_metadata_script_runner startup
 Como visualizar a saída de um script de inicialização do LinuxÉ possível visualizar a saída em um script de inicialização do Linux seguindo um destes procedimentos: - Conectando-se à instância e executando o comando a seguir: - sudo journalctl -u google-startup-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.
 A seguir- Saiba como usar scripts de inicialização em VMs do Windows. 
- Saiba como resolver problemas de inicialização de VMs. 
- Saiba como adicionar um script de desligamento. 
- Saiba mais sobre como armazenar e recuperar metadados. 
 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 2025-10-19 UTC. -