Um script de arranque é um ficheiro que executa tarefas durante o processo de arranque de uma instância de máquina virtual (VM). Os scripts de arranque podem aplicar-se a todas as VMs num projeto ou a uma única VM. Os scripts de inicialização especificados pelos metadados ao nível da VM substituem os scripts de inicialização especificados pelos metadados ao nível do projeto, e os scripts de inicialização só são executados quando uma rede está disponível. Este documento descreve como usar scripts de arranque em instâncias de VMs Linux. Para obter informações sobre como adicionar um script de arranque ao nível do projeto, consulte o artigo gcloud compute project-info add-metadata
.
Para scripts de arranque do Linux, pode usar um ficheiro bash ou não bash. Para usar um ficheiro que não seja bash, designe o intérprete adicionando um #!
na parte superior do ficheiro. Por exemplo, para usar um script de arranque do Python 3, adicione #! /usr/bin/python3
na parte superior do ficheiro.
Se especificar um script de arranque através de um dos procedimentos neste documento, o Compute Engine faz o seguinte:
Copia o script de arranque para a VM
Define as autorizações de execução no script de arranque
Executa o script de arranque como o utilizador
root
quando a VM é iniciada
Para obter informações sobre as várias tarefas relacionadas com scripts de arranque e quando executar cada uma delas, consulte a Vista geral.
Antes de começar
- Leia a vista geral dos scripts de arranque.
- Leia acerca do servidor de metadados.
-
Se ainda não o tiver feito, configure a autenticação.
A autenticação valida a sua identidade para aceder a Trusted Cloud by S3NS serviços e APIs. Para executar código ou exemplos a partir de um ambiente de desenvolvimento local, pode autenticar-se 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 Trusted Cloud console to access Trusted Cloud by S3NS services and APIs, you don't need to set up authentication.
gcloud
-
Instale a CLI Google Cloud e, em seguida, inicie sessão na CLI gcloud com a sua identidade federada. Depois de iniciar sessão, inicialize a CLI gcloud executando o seguinte comando:
gcloud init
- Set a default region and zone.
REST
Para usar os exemplos da API REST nesta página num ambiente de desenvolvimento local, usa as credenciais que fornece à CLI gcloud.
Instale a CLI Google Cloud e, em seguida, inicie sessão na CLI gcloud com a sua identidade federada. Depois de iniciar sessão, inicialize a CLI gcloud executando o seguinte comando:
gcloud init
Para mais informações, consulte o artigo Autenticar para usar REST na Trusted Cloud documentação de autenticação.
Chaves de metadados para scripts de arranque do Linux
Um script de arranque é transmitido a uma VM a partir de uma localização especificada por uma chave de metadados. Uma chave de metadados especifica se o script de arranque é armazenado localmente, armazenado no Cloud Storage ou transmitido diretamente para a VM. A chave de metadados que usa também pode depender do tamanho do script de arranque.
A tabela seguinte mostra as chaves de metadados que pode usar para scripts de arranque do Linux e fornece informações sobre a chave a usar com base na localização de armazenamento e no tamanho do script de arranque.
Chave de metadados Use para startup-script
Transmitir um script de arranque bash ou não bash armazenado localmente ou adicionado diretamente e com um tamanho máximo de 256 KB startup-script-url
Transmitir um script de arranque bash ou não bash armazenado no Cloud Storage e com um tamanho superior a 256 KB. A string que introduzir aqui é usada tal como está para executar gcloud storage
. Se ostartup-script-url
contiver carateres de espaço, não substitua os espaços por%20
nem adicione aspas (""
) à stringstartup-script-url
.Ordem de execução dos scripts de arranque do Linux
Pode usar vários scripts de arranque. Os scripts de arranque armazenados localmente ou adicionados são executados diretamente antes dos scripts de arranque armazenados no Cloud Storage. A tabela seguinte mostra, com base na chave de metadados, a ordem de execução dos scripts de arranque do Linux.
Chave de metadados Ordem de execução startup-script
Primeiro, durante cada arranque após o arranque inicial startup-script-url
Segundos durante cada arranque após o arranque inicial Transmitir um script de arranque do Linux diretamente
Pode adicionar o conteúdo de um script de arranque diretamente a uma VM quando cria a VM. Os procedimentos seguintes mostram como criar uma VM com um script de arranque que instala o Apache e cria uma página Web básica.
Consola
Transmitir um script de arranque do Linux diretamente para uma nova VM
Na Trusted Cloud consola, aceda à página Criar uma instância.
Para usar um sistema operativo Linux, faça o seguinte:
No menu de navegação, clique em SO e armazenamento.
Clique em Alterar.
No painel Disco de arranque apresentado, selecione um sistema operativo Linux.
Para adicionar diretamente um script de arranque do Linux, faça o seguinte:
No menu de navegação, clique em Avançadas.
Na secção Automatização, introduza o seguinte no campo Script de arranque:
#! /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 o artigo Opções de configuração durante a criação da instância.
Para criar e iniciar a instância, clique em Criar.
Transmitir um script de arranque do Linux diretamente a uma VM existente
Na Trusted Cloud consola, aceda à página Instâncias de VM.
Clique no Nome da instância.
Clique em Edit.
Em Automatização, adicione o conteúdo do script de arranque.
A validar o script de arranque
Depois de a instância ser iniciada, veja o IP externo num navegador de Internet para verificar se o script de arranque criou o Website. Pode ter de aguardar cerca de 1 minuto para que o script de arranque de exemplo termine.
gcloud
Transmitir um script de arranque do Linux diretamente para uma nova VM
Transmita o conteúdo de um script de arranque diretamente para uma VM quando a criar usando o seguinte
gcloud compute instances create
comando.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.
Transmitir um script de arranque do Linux diretamente a uma VM existente
Adicione o script de arranque diretamente a uma VM existente através do seguinte
gcloud compute instances add-metadata
comando: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 o seguinte:
VM_NAME: o nome da VM
ZONE: a zona da VM
A validar o script de arranque
Depois de iniciar a VM, veja o IP externo num navegador de Internet para verificar se o script de arranque criou o Website. Pode ter de aguardar cerca de 1 minuto para que o script de arranque de exemplo termine.
REST
Transmitir um script de arranque do Linux diretamente para uma nova VM
Transmita o conteúdo de um script de arranque diretamente para uma VM quando a criar através do seguinte
instances.insert
método.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 o seguinte:
PROJECT_ID: o ID do projeto onde a VM existe.
ZONE: a zona na qual criar a VM.
Transmitir um script de arranque do Linux diretamente a uma VM existente
Obtenha o valor
metadata.fingerprint
da VM através do métodoinstances.get
:GET https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instances/VM_NAME
Substitua o seguinte:
PROJECT_ID: o ID do projeto onde a VM existe.
ZONE: a zona da VM.
VM_NAME: o nome da VM.
Transmita o script de arranque através do valor
fingerprint
, juntamente com a chave e o valor dos metadados para o script de arranque, numa chamada ao métodoinstances.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 o seguinte:
PROJECT_ID: o ID do projeto onde a VM existe.
ZONE: a zona da VM.
VM_NAME: o nome da VM.
FINGERPRINT: o valor
metadata.fingerprint
obtido através do métodoinstances.get
.
A validar o script de arranque
Depois de iniciar a VM, veja o IP externo num navegador de Internet para verificar se o script de arranque criou o Website. Pode ter de aguardar cerca de 1 minuto para que o script de arranque de exemplo termine.
Transmitir um script de arranque do Linux a partir de um ficheiro local
Pode armazenar um script de arranque num ficheiro local na sua estação de trabalho e transmitir o ficheiro local como metadados a uma VM quando a cria. Não pode usar ficheiros armazenados em VMs como scripts de arranque.
Antes de transmitir um script de arranque do Linux de um ficheiro local para uma VM, faça o seguinte:
Crie um ficheiro local para armazenar o script de arranque.
Tenha em atenção o caminho relativo da CLI gcloud para o script de arranque.
Adicione o seguinte script de arranque ao ficheiro:
#! /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
gcloud
Transferir um script de arranque do Linux de um ficheiro local para uma nova VM
Crie uma VM e transmita o conteúdo de um ficheiro local para ser usado como o script de arranque através do comando
gcloud compute instances create
com a flag--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 o seguinte:
VM_NAME: o nome da VM
FILE_PATH: o caminho relativo para o ficheiro de script de arranque
Transmitir um script de arranque do Linux de um ficheiro local para uma VM existente
Transmita um script de arranque a uma VM existente a partir de um ficheiro local através do seguinte
gcloud compute instances add-metadata
comando:gcloud compute instances add-metadata VM_NAME \ --zone=ZONE \ --metadata-from-file startup-script=FILE_PATH
Substitua o seguinte:
VM_NAME: o nome da VM
ZONE: a zona da VM
FILE_PATH: o caminho relativo para o ficheiro de script de arranque
A validar o script de arranque
Veja o IP externo num navegador de Internet para verificar se o script de arranque criou o Website. Pode ter de aguardar cerca de 1 minuto para que o script de arranque de exemplo termine.
Transmitir um script de arranque do Linux a partir do Cloud Storage
Pode armazenar um script de arranque no Cloud Storage e transmiti-lo a uma VM quando a criar. Depois de adicionar um script de arranque ao Cloud Storage, tem um URL que pode usar para referenciar o script de arranque quando cria uma VM.
Antes de adicionar um script de arranque a partir de um contentor do Cloud Storage, faça o seguinte:
Crie um ficheiro para armazenar o script de arranque. Este exemplo usa um ficheiro bash (
.sh
).Adicione o seguinte ao ficheiro bash, que instala o Apache e cria uma página 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 predefinição, os proprietários e os editores de projetos podem aceder aos ficheiros do Cloud Storage no mesmo projeto, a menos que existam controlos de acesso explícitos que o impeçam.
Se o objeto ou o contentor do Cloud Storage for menos seguro do que os metadados, existe um risco de escalada de privilégios se o script de arranque for modificado e a VM for reiniciada. Isto deve-se ao facto de, após o reinício da VM, o script de arranque ser executado como
root
e, em seguida, poder usar as autorizações da conta de serviço anexada para aceder a outros recursos.
Limitações
- O SO otimizado para contentores tem suporte limitado ou nenhum suporte para algumas funcionalidades.
Consola
Transmitir um script de arranque armazenado no Cloud Storage a uma nova VM
Na Trusted Cloud consola, aceda à página Criar uma instância.
Para usar um sistema operativo Linux, faça o seguinte:
No menu de navegação, clique em SO e armazenamento.
Na secção Sistema operativo e armazenamento, clique em Alterar. Em seguida, selecione um sistema operativo Linux.
Para permitir que a instância aceda ao contentor do Cloud Storage que contém o script de arranque do Linux, faça o seguinte:
No menu de navegação, clique em Segurança.
Na lista Conta de serviço, selecione uma conta de serviço que tenha a função do IAM Storage Object Viewer (
roles/storage.objectViewer
) no contentor do Cloud Storage.
Para adicionar um script de arranque do Linux especificando um ficheiro no Cloud Storage, faça o seguinte:
No menu de navegação, clique em Avançadas.
Na secção Metadados, clique em
Adicionar item. São apresentados os campos Chave e Valor.No campo Chave, introduza
startup-script-url
.No campo Valor, introduza a localização do Cloud Storage do ficheiro de script de arranque usando um dos seguintes formatos:
- URL autenticado:
https://storage.googleapis.com/BUCKET/FILE
URI do gcloud storage:
gs://BUCKET/FILE
Substitua o seguinte:
BUCKET: o nome do contentor que contém o ficheiro do script de arranque
FILE: o nome do ficheiro do script de arranque
- URL autenticado:
Opcional: especifique outras opções de configuração. Para mais informações, consulte o artigo Opções de configuração durante a criação da instância.
Para criar e iniciar a instância, clique em Criar.
Transmitir um script de arranque armazenado no Cloud Storage a uma VM existente
Na Trusted Cloud consola, aceda à página Instâncias de VM.
Clique no Nome da instância.
Clique em Edit.
Em Metadados, adicione os seguintes valores:
Chave:
startup-script-url
Value: a localização do ficheiro de script de arranque no Cloud Storage usando um dos seguintes formatos:
- URL autenticado:
https://storage.googleapis.com/BUCKET/FILE
- URI do gcloud storage:
gs://BUCKET/FILE
- URL autenticado:
A validar o script de arranque
Veja o IP externo num navegador de Internet para verificar se o script de arranque criou o Website. Pode ter de aguardar cerca de 1 minuto para que o script de início de exemplo termine.
gcloud
Transmitir um script de arranque armazenado no Cloud Storage a uma nova VM
Transmita um script de arranque armazenado no Cloud Storage a uma VM quando a criar através do seguinte
gcloud compute instances create
comando. Para o valor da flag--scope
, usestorage-ro
para que a VM possa aceder ao 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 o seguinte:
VM_NAME: o nome da VM.
CLOUD_STORAGE_URL: o valor de metadados. Definido para a localização do Cloud Storage do ficheiro de script de arranque com um dos seguintes formatos:
- URL autenticado:
https://storage.googleapis.com/BUCKET/FILE
- URI do gcloud storage:
gs://BUCKET/FILE
- URL autenticado:
Transmitir um script de arranque armazenado no Cloud Storage a uma VM existente
Transmita um script de arranque armazenado no Cloud Storage para uma VM existente através do seguinte
gcloud compute instances add-metadata
comando:gcloud compute instances add-metadata VM_NAME \ --zone=ZONE \ --metadata startup-script-url=CLOUD_STORAGE_URL
Substitua o seguinte:
VM_NAME: o nome da VM.
ZONE: a zona da VM.
CLOUD_STORAGE_URL: o valor de metadados. Definido para a localização do Cloud Storage do ficheiro de script de arranque com um dos seguintes formatos:
- URL autenticado:
https://storage.googleapis.com/BUCKET/FILE
- URI do gcloud storage:
gs://BUCKET/FILE
- URL autenticado:
A validar o script de arranque
Veja o IP externo num navegador de Internet para verificar se o script de arranque criou o Website. Pode ter de aguardar cerca de 1 minuto para que o script de início de exemplo termine.
REST
Transmitir um script de arranque armazenado no Cloud Storage a uma nova VM
Transmita um script de arranque armazenado no Cloud Storage a uma VM quando a criar através do seguinte
instances.insert
método. No camposcopes
, adicionehttps://www.googleapis.com/auth/devstorage.read_only
para que a VM possa aceder ao 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 o seguinte:
PROJECT_ID: o ID do projeto.
ZONE: a zona na qual criar a VM.
CLOUD_STORAGE_URL: o valor de metadados. Definido para a localização do Cloud Storage do ficheiro de script de arranque com um dos seguintes formatos:
- URL autenticado:
https://storage.googleapis.com/BUCKET/FILE
- URI do gcloud storage:
gs://BUCKET/FILE
- URL autenticado:
Transmitir um script de arranque armazenado no Cloud Storage a uma VM existente
Obtenha o valor
metadata.fingerprint
da VM através do métodoinstances.get
:GET https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instances/VM_NAME
Substitua o seguinte:
PROJECT_ID: o ID do projeto
ZONE: a zona da VM
VM_NAME: o nome da VM
Transmita o script de arranque através do valor
fingerprint
, juntamente com a chave e o valor dos metadados para o script de arranque, numa chamada ao métodoinstances.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 o seguinte:
PROJECT_ID: o ID do projeto.
ZONE: a zona da VM.
VM_NAME: o nome da VM.
FINGERPRINT: o valor
metadata.fingerprint
obtido através do métodoinstances.get
.CLOUD_STORAGE_URL: o valor de metadados. Defina a localização do ficheiro de script de arranque no Cloud Storage com um dos seguintes formatos:
- URL autenticado:
https://storage.googleapis.com/BUCKET/FILE
- URI do gcloud storage:
gs://BUCKET/FILE
- URL autenticado:
A validar o script de arranque
Veja o IP externo num navegador de Internet para verificar se o script de arranque criou o Website. Pode ter de aguardar cerca de 1 minuto para que o script de início de exemplo termine.
Aceder a metadados a partir de um script de arranque do Linux
Num script de arranque, pode aceder aos valores dos metadados. Por exemplo, pode usar o mesmo script para várias VMs e parametrizar cada script individualmente transmitindo diferentes valores de metadados a cada VM.
Para aceder a um valor de metadados personalizado a partir de um script de arranque, faça o seguinte:
Crie um script de arranque que consulte o valor de uma chave de metadados. Por exemplo, o script de arranque do ficheiro bash (
.sh
) seguinte consulta o valor da chave de metadadosfoo
.#! /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
foo
quando criar uma VM através do seguintegcloud compute instances create
comando. Para este exemplo, o script de arranque é transmitido à VM a partir de um ficheiro 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 o seguinte:
VM_NAME: o nome da VM
FILE_PATH: o caminho relativo para o ficheiro de script de arranque
Para mais informações sobre como especificar um par de chave/valor de metadados, consulte o artigo Definir metadados personalizados.
Na sua estação de trabalho local, veja o IP externo num navegador de Internet para verificar se o script de arranque produz o valor de
foo
. Pode ter de aguardar cerca de 1 minuto para que o script de arranque de exemplo termine.
Voltar a executar um script de arranque do Linux
Volte a executar um script de arranque fazendo o seguinte:
Executando o seguinte comando:
sudo google_metadata_script_runner startup
Ver a saída de um script de arranque do Linux
Pode ver o resultado de um script de arranque do Linux através de qualquer uma das seguintes ações:
Estabelecer ligação à instância e executar o seguinte comando:
sudo journalctl -u google-startup-scripts.service
Ver a saída através da porta série 1 na Trusted Cloud consola e verificar a existência de eventos
google_metadata_script_runner
.
O que se segue?
Saiba como usar scripts de arranque em VMs do Windows.
Saiba como resolver problemas de arranque da VM.
Saiba como adicionar um script de encerramento.
Saiba mais sobre como armazenar e obter 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-09-30 UTC.
[[["Fácil de entender","easyToUnderstand","thumb-up"],["Meu problema foi resolvido","solvedMyProblem","thumb-up"],["Outro","otherUp","thumb-up"]],[["Não contém as informações de que eu preciso","missingTheInformationINeed","thumb-down"],["Muito complicado / etapas demais","tooComplicatedTooManySteps","thumb-down"],["Desatualizado","outOfDate","thumb-down"],["Problema na tradução","translationIssue","thumb-down"],["Problema com as amostras / o código","samplesCodeIssue","thumb-down"],["Outro","otherDown","thumb-down"]],["Última atualização 2025-09-30 UTC."],[],[],null,[]] -