Esta página explica como instalar manualmente o ambiente de convidado em instâncias de máquinas virtuais (VMs). O ambiente convidado é uma coleção de scripts, daemons e ficheiros binários que as instâncias requerem para serem executadas no Compute Engine. Para mais informações, consulte o artigo Ambiente de convidado.
Na maioria dos casos, se usar imagens de SO públicas fornecidas pela Google, o ambiente convidado é incluído automaticamente. Para ver uma lista completa das imagens do SO que incluem automaticamente o ambiente convidado, consulte os Detalhes do sistema operativo.
Se o ambiente convidado não estiver instalado ou estiver desatualizado, instale-o ou atualize-o. Para identificar estes cenários, consulte Quando instalar ou atualizar o ambiente convidado.
Antes de começar
-
Se ainda não o tiver feito, configure a autenticação.
A autenticação valida a sua identidade para aceder a Google Cloud 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 Google Cloud console to access Google Cloud services and APIs, you don't need to set up authentication.
gcloud
-
Instale a CLI Google Cloud. Após a instalação, inicialize a CLI gcloud executando o seguinte comando:
gcloud init
Se estiver a usar um fornecedor de identidade (IdP) externo, primeiro tem de iniciar sessão na CLI gcloud com a sua identidade federada.
- Set a default region and zone.
Quando instalar ou atualizar o ambiente convidado
Na maioria dos casos, não precisa de instalar nem atualizar manualmente o ambiente convidado. Reveja as secções seguintes para saber quando pode ter de instalar ou atualizar manualmente.
Verifique os requisitos de instalação
Antes de instalar o ambiente convidado, use o procedimento Validar o ambiente convidado para verificar se o ambiente convidado é executado na sua instância. Se o ambiente convidado estiver disponível na sua instância, mas estiver desatualizado, atualize o ambiente convidado.
Pode ter de instalar o ambiente convidado nas seguintes situações:
A imagem do SO fornecida pela Google necessária não tem o ambiente de convidado instalado.
Importe uma imagem personalizada ou um disco virtual para o Compute Engine e opte por impedir a instalação automática do ambiente convidado.
Quando importa discos virtuais ou imagens personalizadas, pode permitir que o Compute Engine instale o ambiente convidado por si. No entanto, se optar por não instalar o ambiente convidado durante o processo de importação, tem de o instalar manualmente.
Migre VMs para o Compute Engine através do Migrate to Virtual Machines.
Para instalar o ambiente convidado, consulte os métodos de instalação.
Verifique os requisitos de atualização
Pode ter de atualizar o ambiente convidado nas seguintes situações:
Tem instâncias que usam imagens do SO anteriores a
v20141218
.Está a usar uma imagem do SO que não tem as otimizações do ambiente convidado para discos SSD locais.
Para atualizar o ambiente convidado, consulte o artigo Atualize o ambiente convidado.
Métodos de instalação
Pode instalar o ambiente convidado de várias formas. Escolha uma das seguintes opções:
Ferramenta de importação. A ferramenta de importação é a opção recomendada. No entanto, a ferramenta de importação instala o ambiente convidado e também realiza outras atualizações de configuração na imagem, como a configuração de redes, a configuração do carregador de arranque e a instalação da CLI gcloud. Para ver instruções, consulte o artigo Crie uma imagem de arranque.
A ferramenta de importação suporta uma grande variedade de sistemas operativos e versões. Para mais informações, consulte a página de detalhes do sistema operativo.
Instalação manual. Selecione uma das seguintes opções:
- Estabeleça ligação à sua instância através de SSH ou RDP e instale o ambiente convidado no local
- Clone o disco de arranque e instale o ambiente convidado através de um script de arranque
Sistemas operativos compatíveis
Pode instalar ou atualizar o ambiente de convidado em VMs que usam versões de imagens do SO no ciclo de vida de disponibilidade geral (AG) ou na fase do ciclo de vida de apoio técnico alargado.
Para rever uma lista das versões de imagens do SO e a respetiva fase do ciclo de vida no Compute Engine, consulte os detalhes do sistema operativo.
Limitações
Não pode instalar nem usar manualmente a ferramenta de importação para instalar ambientes de convidados para os sistemas operativos Fedora CoreOS e otimizado para contentores (COS). Para o COS, a Google recomenda a utilização das imagens públicas fornecidas pela Google, que incluem o ambiente convidado como um componente essencial.
Instale o ambiente convidado
Para instalar manualmente o ambiente convidado, selecione um dos seguintes métodos, consoante a sua capacidade de estabelecer ligação à instância:
- Se conseguir estabelecer ligação à instância através de SSH ou RDP, instale o ambiente convidado no local.
- Se não conseguir estabelecer ligação à instância, instale o ambiente convidado clonando o respetivo disco de arranque e usando um script de arranque.
Instale o ambiente convidado no local
Use este método para instalar o ambiente convidado se conseguir estabelecer ligação à instância de destino através de SSH. Se não conseguir estabelecer ligação à instância para instalar o ambiente convidado, pode, em alternativa, instalar o ambiente convidado clonando o respetivo disco de arranque e usando um script de arranque.
Este procedimento é útil para imagens importadas se puder estabelecer ligação através da autenticação baseada em palavra-passe SSH. Também pode usá-lo para reinstalar o ambiente de convidado se tiver, pelo menos, uma conta de utilizador com um SSH baseado em chave funcional.
CentOS/RHEL/Rocky
- Confirme se a versão do seu sistema operativo é suportada.
Determine a versão do CentOS/RHEL/Rocky Linux. Em seguida, crie o ficheiro do repositório de origem,
/etc/yum.repos.d/google-cloud.repo
:eval $(grep VERSION_ID /etc/os-release) sudo tee /etc/yum.repos.d/google-cloud.repo << EOM [google-compute-engine] name=Google Compute Engine baseurl=https://packages.cloud.google.com/yum/repos/google-compute-engine-el${VERSION_ID/.*}-x86_64-stable enabled=1 gpgcheck=1 repo_gpgcheck=0 gpgkey=https://packages.cloud.google.com/yum/doc/yum-key.gpg https://packages.cloud.google.com/yum/doc/rpm-package-key.gpg EOM
Atualize as listas de pacotes:
sudo yum makecache sudo yum updateinfo
Instale os pacotes do ambiente de convidado:
sudo yum install -y google-compute-engine google-osconfig-agent
Reinicie a instância. Em seguida, inspecione o registo da consola para garantir que o ambiente de convidado é carregado quando é reiniciado.
Ligue-se à instância através de SSH para validar. Para instruções detalhadas, consulte o artigo sobre como ligar à instância através de SSH.
Debian
- Confirme se a versão do seu sistema operativo é suportada.
Instale a chave GPG do repositório público:
curl https://packages.cloud.google.com/apt/doc/apt-key.gpg | sudo apt-key add -
Determine o nome da distribuição Debian. Em seguida, crie o ficheiro de lista de origem,
/etc/apt/sources.list.d/google-cloud.list
:eval $(grep VERSION_CODENAME /etc/os-release) sudo tee /etc/apt/sources.list.d/google-cloud.list << EOM deb http://packages.cloud.google.com/apt google-compute-engine-${VERSION_CODENAME}-stable main deb http://packages.cloud.google.com/apt google-cloud-packages-archive-keyring-${VERSION_CODENAME} main EOM
Atualize as listas de pacotes:
sudo apt update
Instale os pacotes do ambiente de convidado:
sudo apt install -y google-cloud-packages-archive-keyring sudo apt install -y google-compute-engine google-osconfig-agent
Reinicie a instância. Em seguida, inspecione o registo da consola para garantir que o ambiente de convidado é carregado quando é reiniciado.
Ligue-se à instância através de SSH para validar. Para instruções detalhadas, consulte o artigo sobre como ligar à instância através de SSH.
Ubuntu
Confirme se a versão do seu sistema operativo é suportada.
Ative o repositório Universe. A Canonical publica pacotes para o respetivo ambiente de convidados no repositório Universe.
sudo apt-add-repository universe
Atualize as listas de pacotes:
sudo apt update
Instale os pacotes do ambiente de convidado:
sudo apt install -y google-compute-engine google-osconfig-agent
Reinicie a instância. Em seguida, inspecione o registo da consola para garantir que o ambiente de convidado é carregado quando é reiniciado.
Ligue-se à instância através de SSH para validar. Para instruções detalhadas, consulte o artigo sobre como ligar à instância através de SSH.
SLES
Confirme se a versão do seu sistema operativo é suportada.
Ative o módulo de nuvem pública
product=$(sudo SUSEConnect --list-extensions | grep -o "sle-module-public-cloud.*") [[ -n "$product" ]] && sudo SUSEConnect -p "$product"
Atualize as listas de pacotes:
sudo zypper refresh
Instale os pacotes do ambiente de convidado:
sudo zypper install -y google-guest-{agent,configs,oslogin} \ google-osconfig-agent sudo systemctl enable /usr/lib/systemd/system/google-*
Reinicie a instância. Em seguida, inspecione o registo da consola para garantir que o ambiente de convidado é carregado quando é reiniciado.
Ligue-se à instância através de SSH para validar. Para instruções detalhadas, consulte o artigo sobre como ligar à instância através de SSH.
Windows
Antes de começar, verifique se a versão do seu sistema operativo é suportada.
Para instalar o ambiente convidado do Windows, execute os seguintes comandos numa versão 3.0 ou superior do PowerShell com privilégios elevados. O comando
Invoke-WebRequest
requer a versão 3.0 ou superior do PowerShell.Transfira e instale a app
GooGet
.[Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12; Invoke-WebRequest https://github.com/google/googet/releases/download/v2.18.3/googet.exe -OutFile $env:temp\googet.exe; & "$env:temp\googet.exe" -root C:\ProgramData\GooGet -noconfirm install -sources ` https://packages.cloud.google.com/yuck/repos/google-compute-engine-stable googet; Remove-Item "$env:temp\googet.exe"
Durante a instalação, o
GooGet
adiciona conteúdo ao ambiente do sistema. Após a conclusão da instalação, inicie uma nova consola do PowerShell. Em alternativa, indique o caminho completo para o ficheirogooget.exe
(C:\ProgramData\GooGet\googet.exe).Abra uma nova consola e adicione o repositório
google-compute-engine-stable
.googet addrepo google-compute-engine-stable https://packages.cloud.google.com/yuck/repos/google-compute-engine-stable
Instale os pacotes principais do ambiente de convidado do Windows.
googet -noconfirm install google-compute-engine-windows ` google-compute-engine-sysprep google-compute-engine-metadata-scripts ` google-compute-engine-vss google-osconfig-agent
Instale o pacote de ambiente de convidado do Windows opcional.
googet -noconfirm install google-compute-engine-auto-updater
Usando o comando
googet
.Para ver os pacotes disponíveis, execute o comando
googet available
.Para ver os pacotes instalados, execute o comando
googet installed
.Para atualizar para a versão mais recente do pacote, execute o comando
googet update
.Para ver comandos adicionais, execute
googet help
.
Clone o disco de arranque e use o script de arranque
Se não conseguir estabelecer ligação a uma instância para instalar manualmente o ambiente convidado, instale o ambiente convidado através deste procedimento, que inclui os seguintes passos que pode concluir na Google Cloud consola ou no Cloud Shell.
Este método aplica-se apenas a distribuições Linux. Para o Windows, use um dos outros dois métodos de instalação.
Use o Cloud Shell para executar este procedimento. Para executar este procedimento se não estiver a usar a Cloud Shell, instale o
jq
processador JSON de linha de comandos. Este processador filtra o resultado da CLI gcloud. O Cloud Shell tem ojq
pré-instalado.CentOS/RHEL/Rocky
Confirme se a versão do seu sistema operativo é suportada.
Crie uma nova instância para servir como instância de recuperação. Dê o nome resgate a esta instância. Esta instância de recuperação não tem de executar o mesmo SO Linux que a instância problemática. Este exemplo usa o Debian 9 na instância de resgate.
Pare a instância problemática e crie uma cópia do respetivo disco de arranque.
Defina um nome de variável para a instância problemática. Esta variável simplifica a referência à instância em passos posteriores.
export PROB_INSTANCE_NAME=VM_NAME
Substitua VM_NAME pelo nome da instância problemática.
Pare a instância problemática.
gcloud compute instances stop "$PROB_INSTANCE_NAME"
Obtenha o nome do disco de arranque da instância com problemas.
export PROB_INSTANCE_DISK="$(gcloud compute instances describe \ "$PROB_INSTANCE_NAME" --format='json' | jq -r \ '.disks[] | select(.boot == true) | .source')"
Crie um instantâneo do disco de arranque.
export DISK_SNAPSHOT="${PROB_INSTANCE_NAME}-snapshot" gcloud compute disks snapshot "$PROB_INSTANCE_DISK" \ --snapshot-names "$DISK_SNAPSHOT"
Crie um novo disco a partir da captura de ecrã.
export NEW_DISK="${PROB_INSTANCE_NAME}-new-disk" gcloud compute disks create "$NEW_DISK" \ --source-snapshot="$DISK_SNAPSHOT"
Elimine o instantâneo:
gcloud compute snapshots delete "$DISK_SNAPSHOT"
Associe o novo disco à instância de resgate e monte o volume raiz para a instância de resgate. Uma vez que este procedimento anexa apenas um disco adicional, o identificador do dispositivo do novo disco é /dev/sdb. O CentOS/RHEL/Rocky Linux usa o primeiro volume num disco como o volume de raiz por predefinição. Por isso, o identificador do volume deve ser /dev/sdb1. Para configurações personalizadas, use o
lsblk
para determinar o identificador de volume.gcloud compute instances attach-disk rescue --disk "$NEW_DISK"
Estabeleça ligação à instância de recuperação através de SSH:
gcloud compute ssh rescue
Execute os seguintes passos na instância de recuperação.
Monte o volume de raiz do novo disco.
export NEW_DISK_MOUNT_POINT="/tmp/sdb-root-vol" DEV="/dev/sdb1" sudo mkdir "$NEW_DISK_MOUNT_POINT" sudo mount -o nouuid "$DEV" "$NEW_DISK_MOUNT_POINT"
Crie o script
rc.local
.cat <<'EOF' >/tmp/rc.local #!/bin/bash echo "== Installing Google guest environment for CentOS/RHEL/Rocky Linux ==" sleep 30 # Wait for network. echo "Determining CentOS/RHEL/Rocky Linux version..." eval $(grep VERSION_ID /etc/os-release) if [[ -z $VERSION_ID ]]; then echo "ERROR: Could not determine version of CentOS/RHEL/Rocky Linux." exit 1 fi echo "Updating repo file..." tee "/etc/yum.repos.d/google-cloud.repo" << EOM [google-compute-engine] name=Google Compute Engine baseurl=https://packages.cloud.google.com/yum/repos/google-compute-engine-el${VERSION_ID/.*}-x86_64-stable enabled=1 gpgcheck=1 repo_gpgcheck=0 gpgkey=https://packages.cloud.google.com/yum/doc/yum-key.gpg https://packages.cloud.google.com/yum/doc/rpm-package-key.gpg EOM echo "Running yum makecache..." yum makecache echo "Running yum updateinfo..." yum updateinfo echo "Running yum install google-compute-engine..." yum install -y google-compute-engine rpm -q google-compute-engine if [[ $? -ne 0 ]]; then echo "ERROR: Failed to install ${pkg}." fi echo "Removing this rc.local script." rm /etc/rc.d/rc.local # Move back any previous rc.local: if [[ -f "/etc/moved-rc.local" ]]; then echo "Restoring a previous rc.local script." mv "/etc/moved-rc.local" "/etc/rc.d/rc.local" fi echo "Restarting the instance..." reboot EOF
Faça uma cópia de segurança do ficheiro
rc.local
existente, mova o scriptrc.local
temporário para o disco montado e defina as autorizações para que o script temporário seja executável no arranque. O script temporário substitui o script original quando terminar o arranque. Para o fazer, execute o seguinte comando:if [ -f "$NEW_DISK_MOUNT_POINT/etc/rc.d/rc.local" ]; then sudo mv "$NEW_DISK_MOUNT_POINT/etc/rc.d/rc.local" \ "$NEW_DISK_MOUNT_POINT/etc/moved-rc.local" fi sudo mv /tmp/rc.local "$NEW_DISK_MOUNT_POINT/etc/rc.d/rc.local" sudo chmod 0755 "$NEW_DISK_MOUNT_POINT/etc/rc.d/rc.local" sudo chown root:root "$NEW_DISK_MOUNT_POINT/etc/rc.d/rc.local"
Desmonte o volume raiz do novo disco.
sudo umount "$NEW_DISK_MOUNT_POINT" && sudo rmdir \ "$NEW_DISK_MOUNT_POINT"
Saia da sessão SSH para a instância de recuperação.
Desassocie o novo disco da instância de recuperação.
gcloud compute instances detach-disk rescue --disk "$NEW_DISK"
Crie uma instância para servir como substituição. Quando criar a instância de substituição, especifique o novo disco como o disco de arranque. Pode criar a instância de substituição através da Google Cloud consola:
Na Google Cloud consola, aceda à página Instâncias de VM.
Clique na instância problemática e, de seguida, em Criar semelhante.
Especifique um nome para a instância de substituição. Na secção Disco de arranque, clique em Alterar e, de seguida, em Discos existentes. Selecione o novo disco.
Clique em Criar. A instância de substituição é iniciada automaticamente após a sua criação.
À medida que a instância de substituição é iniciada, o script
rc.local
temporário é executado e instala o ambiente convidado. Para ver o progresso deste script, inspecione os registos da consola para ver as linhas emitidas pelo scriptrc.local
temporário. Para ver os registos, execute o seguinte comando:gcloud compute instances get-serial-port-output REPLACEMENT_VM_NAME
Substitua REPLACEMENT_VM_NAME pelo nome que atribuiu à instância de substituição.
A instância de substituição é reiniciada automaticamente quando o script
rc.local
temporário termina. Durante o segundo reinício, pode inspecionar o registo da consola para se certificar de que o ambiente convidado é carregado.Confirme se consegue estabelecer ligação à instância através de SSH.
Depois de verificar se a instância de substituição está funcional, pode parar ou eliminar a instância problemática.
Debian
Confirme se a versão do seu sistema operativo é suportada
Crie uma nova instância para servir como instância de recuperação. Dê o nome resgate a esta instância. Esta instância de recuperação não tem de executar o mesmo SO Linux que a instância problemática. Este exemplo usa o Debian 9 na instância de recuperação.
Pare a instância problemática e crie uma cópia do respetivo disco de arranque.
Defina um nome de variável para a instância problemática. Esta variável simplifica a referência à instância em passos posteriores.
export PROB_INSTANCE_NAME=VM_NAME
Substitua VM_NAME pelo nome da instância problemática.
Pare a instância problemática.
gcloud compute instances stop "$PROB_INSTANCE_NAME"
Obtenha o nome do disco de arranque da instância com problemas.
export PROB_INSTANCE_DISK="$(gcloud compute instances describe \ "$PROB_INSTANCE_NAME" --format='json' | jq -r \ '.disks[] | select(.boot == true) | .source')"
Crie um instantâneo do disco de arranque.
export DISK_SNAPSHOT="${PROB_INSTANCE_NAME}-snapshot" gcloud compute disks snapshot "$PROB_INSTANCE_DISK" \ --snapshot-names "$DISK_SNAPSHOT"
Crie um novo disco a partir da captura de ecrã.
export NEW_DISK="${PROB_INSTANCE_NAME}-new-disk" gcloud compute disks create "$NEW_DISK" \ --source-snapshot="$DISK_SNAPSHOT"
Elimine o instantâneo:
gcloud compute snapshots delete "$DISK_SNAPSHOT"
Associe o novo disco à instância de resgate e monte o volume raiz para a instância de resgate. Uma vez que este procedimento anexa apenas um disco adicional, o identificador do dispositivo do novo disco é /dev/sdb. O Debian usa o primeiro volume num disco como o volume raiz por predefinição. Por isso, o identificador do volume deve ser /dev/sdb1. Para configurações personalizadas, use o
lsblk
para determinar o identificador de volume.gcloud compute instances attach-disk rescue --disk "$NEW_DISK"
Estabeleça ligação à instância de recuperação através de SSH:
gcloud compute ssh rescue
Execute os seguintes passos na instância de recuperação.
Monte o volume de raiz do novo disco.
export NEW_DISK_MOUNT_POINT="/tmp/sdb-root-vol" DEV="/dev/sdb1" sudo mkdir "$NEW_DISK_MOUNT_POINT" sudo mount "$DEV" "$NEW_DISK_MOUNT_POINT"
Crie o script
rc.local
.cat <<'EOF' >/tmp/rc.local #!/bin/bash echo "== Installing Google guest environment for Debian ==" export DEBIAN_FRONTEND=noninteractive sleep 30 # Wait for network. echo "Determining Debian version..." eval $(grep VERSION_CODENAME /etc/os-release) if [[ -z $VERSION_CODENAME ]]; then echo "ERROR: Could not determine Debian version." exit 1 fi echo "Adding GPG key for Google cloud repo." curl https://packages.cloud.google.com/apt/doc/apt-key.gpg | apt-key add - echo "Updating repo file..." tee "/etc/apt/sources.list.d/google-cloud.list" << EOM deb http://packages.cloud.google.com/apt google-compute-engine-${VERSION_CODENAME}-stable main deb http://packages.cloud.google.com/apt google-cloud-packages-archive-keyring-${VERSION_CODENAME} main EOM echo "Running apt update..." apt update echo "Installing packages..." for pkg in google-cloud-packages-archive-keyring google-compute-engine; do echo "Running apt install ${pkg}..." apt install -y ${pkg} if [[ $? -ne 0 ]]; then echo "ERROR: Failed to install ${pkg}." fi done echo "Removing this rc.local script." rm /etc/rc.local # Move back any previous rc.local: if [[ -f "/etc/moved-rc.local" ]]; then echo "Restoring a previous rc.local script." mv "/etc/moved-rc.local" "/etc/rc.local" fi echo "Restarting the instance..." reboot EOF
Faça uma cópia de segurança do ficheiro
rc.local
existente, mova o scriptrc.local
temporário para o disco montado e defina as autorizações para que o script temporário seja executável no arranque. O script temporário substitui o script original quando terminar o arranque. Para o fazer, execute o seguinte comando:if [[ -f "$NEW_DISK_MOUNT_POINT/etc/rc.local" ]]; then sudo mv "$NEW_DISK_MOUNT_POINT/etc/rc.local" \ "$NEW_DISK_MOUNT_POINT/etc/moved-rc.local" fi sudo mv /tmp/rc.local "$NEW_DISK_MOUNT_POINT/etc/rc.local" sudo chmod 0755 "$NEW_DISK_MOUNT_POINT/etc/rc.local" sudo chown root:root "$NEW_DISK_MOUNT_POINT/etc/rc.local"
Desmonte o volume raiz do novo disco.
sudo umount "$NEW_DISK_MOUNT_POINT" && sudo rmdir "$NEW_DISK_MOUNT_POINT"
Saia da sessão SSH para a instância de recuperação.
Desassocie o novo disco da instância de recuperação.
gcloud compute instances detach-disk rescue --disk "$NEW_DISK"
Crie uma nova instância para servir como substituição. Quando criar a instância de substituição, especifique o novo disco como o disco de arranque. Pode criar a instância de substituição através da Google Cloud consola:
Na Google Cloud consola, aceda à página Instâncias de VM.
Clique na instância problemática e, de seguida, em Criar semelhante.
Especifique um nome para a instância de substituição. Na secção Disco de arranque, clique em Alterar e, de seguida, em Discos existentes. Selecione o novo disco.
Clique em Criar. A instância de substituição é iniciada automaticamente após a sua criação.
À medida que a instância de substituição é iniciada, o script
rc.local
temporário é executado e instala o ambiente convidado. Para ver o progresso deste script, inspecione os registos da consola para ver as linhas emitidas pelo scriptrc.local
temporário. Para ver os registos, execute o seguinte comando:gcloud compute instances get-serial-port-output REPLACEMENT_VM_NAME
Substitua REPLACEMENT_VM_NAME pelo nome que atribuiu à instância de substituição.
A instância de substituição é reiniciada automaticamente quando o script
rc.local
temporário termina. Durante o segundo reinício, pode inspecionar o registo da consola para se certificar de que o ambiente convidado é carregado.Confirme se consegue estabelecer ligação à instância através de SSH.
Depois de verificar se a instância de substituição está funcional, pode parar ou eliminar a instância problemática.
Ubuntu
Confirme se a versão do seu sistema operativo é suportada
Crie uma nova instância para servir como instância de recuperação. Dê o nome resgate a esta instância. Esta instância de recuperação não tem de executar o mesmo SO Linux que a instância problemática. Este exemplo usa o Debian 9 na instância de recuperação.
Pare a instância problemática e crie uma cópia do respetivo disco de arranque.
Defina um nome de variável para a instância problemática. Esta variável simplifica a referência à instância em passos posteriores.
export PROB_INSTANCE_NAME=VM_NAME
Substitua VM_NAME pelo nome da instância problemática.
Pare a instância problemática.
gcloud compute instances stop "$PROB_INSTANCE_NAME"
Obtenha o nome do disco de arranque da instância com problemas.
export PROB_INSTANCE_DISK="$(gcloud compute instances describe \ "$PROB_INSTANCE_NAME" --format='json' | jq -r \ '.disks[] | select(.boot == true) | .source')"
Crie um instantâneo do disco de arranque.
export DISK_SNAPSHOT="${PROB_INSTANCE_NAME}-snapshot" gcloud compute disks snapshot "$PROB_INSTANCE_DISK" \ --snapshot-names "$DISK_SNAPSHOT"
Crie um novo disco a partir da captura de ecrã.
export NEW_DISK="${PROB_INSTANCE_NAME}-new-disk" gcloud compute disks create "$NEW_DISK" \ --source-snapshot="$DISK_SNAPSHOT"
Elimine o instantâneo:
gcloud compute snapshots delete "$DISK_SNAPSHOT"
Associe o novo disco à instância de resgate e monte o volume raiz para a instância de resgate. Uma vez que este procedimento anexa apenas um disco adicional, o identificador do dispositivo do novo disco é /dev/sdb. Por predefinição, o Ubuntu etiqueta o volume raiz como 1. Por conseguinte, o identificador de volume deve ser /dev/sdb1. Para configurações personalizadas, use
lsblk
para determinar o identificador de volume.gcloud compute instances attach-disk rescue --disk "$NEW_DISK"
Estabeleça ligação à instância de recuperação através de SSH:
gcloud compute ssh rescue
Execute os seguintes passos na instância de recuperação.
Monte o volume de raiz do novo disco.
export NEW_DISK_MOUNT_POINT="/tmp/sdb-root-vol" DEV="/dev/sdb1" sudo mkdir "$NEW_DISK_MOUNT_POINT" sudo mount "$DEV" "$NEW_DISK_MOUNT_POINT"
Crie o script
rc.local
.cat <<'EOF' >/tmp/rc.local #!/bin/bash echo "== Installing a Linux guest environment for Ubuntu ==" sleep 30 # Wait for network. echo "Running apt update..." apt update echo "Installing packages..." echo "Running apt install google-compute-engine..." apt install -y google-compute-engine if [[ $? -ne 0 ]]; then echo "ERROR: Failed to install ${pkg}." fi echo "Removing this rc.local script." rm /etc/rc.local # Move back any previous rc.local: if [[ -f "/etc/moved-rc.local" ]]; then echo "Restoring a previous rc.local script." mv "/etc/moved-rc.local" "/etc/rc.local" fi echo "Restarting the instance..." reboot EOF
Faça uma cópia de segurança do ficheiro
rc.local
existente, mova o scriptrc.local
temporário para o disco montado e defina as autorizações para que o script temporário seja executável no arranque. O script temporário substitui o script original quando terminar o arranque. Para o fazer, execute o seguinte comando:if [[ -f "$NEW_DISK_MOUNT_POINT/etc/rc.local" ]]; then sudo mv "$NEW_DISK_MOUNT_POINT/etc/rc.local" \ "$NEW_DISK_MOUNT_POINT/etc/moved-rc.local" fi sudo mv /tmp/rc.local "$NEW_DISK_MOUNT_POINT/etc/rc.local" sudo chmod 0755 "$NEW_DISK_MOUNT_POINT/etc/rc.local" sudo chown root:root "$NEW_DISK_MOUNT_POINT/etc/rc.local"
Desmonte o volume raiz do novo disco.
sudo umount "$NEW_DISK_MOUNT_POINT" && sudo rmdir "$NEW_DISK_MOUNT_POINT"
Saia da sessão SSH para a instância de recuperação.
Desassocie o novo disco da instância de recuperação.
gcloud compute instances detach-disk rescue --disk "$NEW_DISK"
Crie uma nova instância para servir como substituição. Quando criar a instância de substituição, especifique o novo disco como o disco de arranque. Pode criar a instância de substituição através da Google Cloud consola:
Na Google Cloud consola, aceda à página Instâncias de VM.
Clique na instância problemática e, de seguida, em Criar semelhante.
Especifique um nome para a instância de substituição. Na secção Disco de arranque, clique em Alterar e, de seguida, em Discos existentes. Selecione o novo disco.
Clique em Criar. A instância de substituição é iniciada automaticamente após a sua criação.
À medida que a instância de substituição é iniciada, o script
rc.local
temporário é executado e instala o ambiente convidado. Para ver o progresso deste script, inspecione os registos da consola para ver as linhas emitidas pelo scriptrc.local
temporário. Para ver os registos, execute o seguinte comando:gcloud compute instances get-serial-port-output REPLACEMENT_VM_NAME
Substitua REPLACEMENT_VM_NAME pelo nome que atribuiu à instância de substituição.
A instância de substituição é reiniciada automaticamente quando o script
rc.local
temporário termina. Durante o segundo reinício, pode inspecionar o registo da consola para se certificar de que o ambiente convidado é carregado.Confirme se consegue estabelecer ligação à instância através de SSH.
Depois de verificar se a instância de substituição está funcional, pode parar ou eliminar a instância problemática.
Atualize o ambiente convidado
Se receber uma mensagem a indicar que o ambiente convidado está desatualizado, atualize os pacotes do seu sistema operativo da seguinte forma:
CentOS/RHEL/Rocky
Para atualizar os sistemas operativos CentOS, RHEL e Rocky Linux, execute os seguintes comandos:
sudo yum makecache sudo yum install google-compute-engine google-compute-engine-oslogin \ google-guest-agent google-osconfig-agent
Debian
Para atualizar os sistemas operativos Debian, execute os seguintes comandos:
sudo apt update sudo apt install google-compute-engine google-compute-engine-oslogin \ google-guest-agent google-osconfig-agent
Ubuntu
Para atualizar os sistemas operativos Ubuntu, execute os seguintes comandos:
sudo apt update sudo apt install google-compute-engine google-compute-engine-oslogin \ google-guest-agent google-osconfig-agent
SLES
Para atualizar os sistemas operativos SLES, execute os seguintes comandos:
sudo zypper refresh sudo zypper install google-guest-{agent,configs,oslogin} \ google-osconfig-agent
Windows
Para atualizar os sistemas operativos Windows, execute o seguinte comando:
googet update
Valide o ambiente convidado
Pode verificar se um ambiente convidado está instalado inspecionando os registos do sistema emitidos para a consola enquanto uma instância é iniciada ou listando os pacotes instalados enquanto estiver ligada à instância.
Veja os registos da consola esperados para o ambiente de convidado
Esta tabela resume o resultado esperado para os registos da consola emitidos por instâncias com ambientes de convidados funcionais à medida que são iniciados.
Sistema operativo Gestão de serviços Resultado esperado CentOS/RHEL/Rocky Linux
Debian
Ubuntu
SLES
SO otimizado para contentores 89 e mais recentesystemd google_guest_agent: GCE Agent Started (version YYYYMMDD.NN) google_metadata_script_runner: Starting startup scripts (version YYYYMMDD.NN) OSConfigAgent Info: OSConfig Agent (version YYYYMMDD.NN)
SO otimizado para contentores 85 e mais antigo systemd Started Google Compute Engine Accounts Daemon Started Google Compute Engine Network Daemon Started Google Compute Engine Clock Skew Daemon Started Google Compute Engine Instance Setup Started Google Compute Engine Startup Scripts Started Google Compute Engine Shutdown Scripts
Windows GCEGuestAgent: GCE Agent Started (version YYYYMMDD.NN) GCEMetadataScripts: Starting startup scripts (version YYYYMMDD.NN) OSConfigAgent Info: OSConfig Agent (version YYYYMMDD.NN)
Para ver os registos da consola de uma instância, siga estes passos.
Consola
Na Google Cloud consola, aceda à página Instâncias de VM.
- Selecione a instância que precisa de examinar.
- Reinicie ou reponha a instância.
- Em Registos, clique em Porta de série 1 (consola).
- Pesquise o resultado esperado na tabela que precede estes passos.
gcloud
- Reinicie ou reponha a instância.
Use o subcomando
gcloud compute instances get-serial-port-output
para se ligar através da Google Cloud CLI. Por exemplo:gcloud compute instances get-serial-port-output VM_NAME
Substitua VM_NAME pelo nome da instância que tem de examinar.
Pesquise o resultado esperado na tabela que precede estes passos.
Veja os serviços carregados por versão do sistema operativo
Esta tabela resume os serviços que devem ser carregados em instâncias com ambientes de convidado funcionais. Tem de executar o comando para listar os serviços depois de se ligar à instância. Por conseguinte, só pode realizar esta verificação se tiver acesso à instância.
Sistema operativo Comando para listar serviços Resultado esperado CentOS/RHEL/Rocky Linux
Debiansudo systemctl list-unit-files \ | grep google | grep enabled
google-disk-expand.service enabled google-guest-agent.service enabled google-osconfig-agent.service enabled google-shutdown-scripts.service enabled google-startup-scripts.service enabled google-oslogin-cache.timer enabled
Ubuntu sudo systemctl list-unit-files \ | grep google | grep enabled
google-guest-agent.service enabled google-osconfig-agent.service enabled google-shutdown-scripts.service enabled google-startup-scripts.service enabled google-oslogin-cache.timer enabled
SO otimizado para contentores sudo systemctl list-unit-files \ | grep google
var-lib-google.mount disabled google-guest-agent.service disabled google-osconfig-agent.service disabled google-osconfig-init.service disabled google-oslogin-cache.service static google-shutdown-scripts.service disabled google-startup-scripts.service disabled var-lib-google-remount.service static google-oslogin-cache.timer disabled
SLES 12 ou superior sudo systemctl list-unit-files \ | grep google | grep enabled
google-guest-agent.service enabled google-osconfig-agent.service enabled google-shutdown-scripts.service enabled google-startup-scripts.service enabled google-oslogin-cache.timer enabled
Windows Get-Service GCEAgent Get-ScheduledTask GCEStartup
Running GCEAgent GCEAgent \ GCEStartup Ready
Veja os pacotes instalados por versão do sistema operativo
Esta tabela resume os pacotes que devem ser instalados em instâncias com ambientes de convidado funcionais. Tem de executar o comando para listar os pacotes instalados depois de se ligar à instância. Por conseguinte, só pode realizar esta verificação se tiver acesso à instância.
Para mais informações acerca destes pacotes, consulte o artigo Componentes do ambiente de convidados.
Sistema operativo Comando para listar pacotes Resultado esperado CentOS/RHEL/Rocky Linux rpm -qa --queryformat '%{NAME}\n' \ | grep -iE 'google|gce'
google-osconfig-agent google-compute-engine-oslogin google-guest-agent gce-disk-expand google-cloud-sdk google-compute-engine
Debian apt list --installed \ | grep -i google
gce-disk-expand google-cloud-packages-archive-keyring google-cloud-sdk google-compute-engine-oslogin google-compute-engine google-guest-agent google-osconfig-agent
Ubuntu apt list --installed \ | grep -i google
google-compute-engine-oslogin google-compute-engine google-guest-agent google-osconfig-agent
SUSE (SLES) rpm -qa --queryformat '%{NAME}\n' \ | grep -i google
google-guest-configs google-osconfig-agent google-guest-oslogin google-guest-agent
Windows googet installed
certgen googet google-compute-engine-auto-updater google-compute-engine-driver-gga google-compute-engine-driver-netkvm google-compute-engine-driver-pvpanic google-compute-engine-driver-vioscsi google-compute-engine-metadata-scripts google-compute-engine-powershell google-compute-engine-sysprep google-compute-engine-vss google-compute-engine-windows google-osconfig-agent
O que se segue?
- Leia as sugestões de resolução de problemas.
- Saiba mais sobre a aplicação de metadados.
- Saiba mais sobre as chaves SSH.
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-19 UTC.
-