Nesta página, explicamos como instalar manualmente o ambiente de convidado em instâncias de máquina virtual (VM). O ambiente de convidado é um conjunto de scripts, daemons e binários que as instâncias precisam para serem executadas no Compute Engine. Para mais informações, consulte Ambiente de convidado.
Na maioria dos casos, quando você usa imagens de SO públicas fornecidas pelo Google, o ambiente de convidado está incluído automaticamente. Para uma lista completa de imagens de SO que incluem automaticamente o ambiente de convidado, consulte Detalhes do sistema operacional.
Se o ambiente de convidado não estiver instalado ou estiver desatualizado, faça a instalação ou atualização dele. Para identificar esses cenários, consulte Quando instalar ou atualizar o ambiente de convidado.
Antes de começar
-
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:
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 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.
Quando instalar ou atualizar o ambiente de convidado
Na maioria dos casos, não é necessário instalar ou atualizar manualmente o ambiente de convidado. Consulte as seções a seguir para saber quando é necessário fazer a instalação ou atualização manual.
Verificar os requisitos de instalação
Antes de instalar o ambiente de convidado, use o procedimento Validar ambiente de convidado para verificar se ele está sendo executado na instância. Se o ambiente de convidado estiver disponível na instância, mas estiver desatualizado, faça a atualização dele.
Talvez seja necessário instalar o ambiente de convidado nestas situações:
A imagem do SO necessária que é fornecida pelo Google não tem o ambiente de convidado instalado.
Você importa uma imagem personalizada ou um disco virtual para o Compute Engine e escolhe impedir a instalação automática do ambiente de convidado.
Ao importar discos virtuais ou imagens personalizadas, você pode permitir que o Compute Engine instale o ambiente de convidado para você. No entanto, se você optar por não instalar esse ambiente durante o processo de importação, precisará fazer a instalação manual dele.
Você migra VMs para o Compute Engine usando o Migrate to Virtual Machines.
Para instalar o ambiente de convidado, consulte Métodos de instalação.
Verificar os requisitos de atualização
Talvez seja necessário atualizar o ambiente de convidado nestas situações:
Você tem instâncias que usam imagens de SO anteriores à
v20141218.Você usa uma imagem do SO que não tem as otimizações do ambiente de convidado para discos SSD locais.
Para atualizar o ambiente de convidado, consulte este link.
Métodos de instalação
É possível instalar o ambiente de convidado de várias maneiras. Escolha uma destas opções:
Ferramenta de importação. A ferramenta de importação é a opção recomendada. No entanto, ela instala o ambiente de convidado e também realiza outras atualizações de configuração na imagem, como a configuração de redes e do carregador de inicialização e a instalação da CLI do Google Cloud. Para instruções, consulte Como tornar uma imagem inicializável.
A ferramenta de importação aceita vários sistemas operacionais e versões. Para mais informações, consulte Detalhes do sistema operacional.
Instalação manual. Escolha uma destas opções:
- Conecte-se à instância usando SSH ou RDP e instale o ambiente de convidado no local.
- Clone o disco de inicialização e instale o ambiente de convidado usando um script de inicialização.
Sistemas operacionais disponíveis
É possível instalar ou atualizar o ambiente de convidado em VMs que usam versões de imagens de SO no ciclo de vida de disponibilidade geral (GA) ou no estágio do ciclo de vida de suporte estendido.
Para conferir uma lista de versões de imagens do SO e o respectivo estágio do ciclo de vida delas no Compute Engine, consulte Detalhes do sistema operacional.
Limitações
Não é possível instalar ou usar manualmente a ferramenta de importação para instalar ambientes de convidado para Fedora CoreOS e sistemas operacionais otimizados para contêineres (COS, na sigla em inglês). Para COS, o Google recomenda usar as imagens públicas fornecidas pelo Google, que incluem o ambiente de convidado como um componente principal.
Instalar o ambiente de convidado
Para instalar manualmente o ambiente de convidado, selecione um dos seguintes métodos, de acordo com sua capacidade de se conectar à instância:
- Se for possível se conectar à instância usando SSH ou RDP, instale o ambiente de convidado no local.
- Se não for possível se conectar à instância, instale o ambiente de convidado clonando o disco de inicialização e usando um script de inicialização.
Instalar o ambiente de convidado no local
Use este método para instalar o ambiente de convidado se for possível se conectar à instância pretendida usando SSH. Se não for possível se conectar à instância para instalar o ambiente de convidado, instale-o clonando o disco de inicialização dele e usando um script de inicialização.
Esse procedimento será útil para imagens importadas se for possível se conectar usando a autenticação SSH baseada em senha. Ele também poderá ser usado para reinstalar o ambiente de convidado se você tiver pelo menos uma conta de usuário com um SSH baseado em chave funcional.
CentOS/RHEL/Rocky
Siga as etapas para sua versão do CentOS/RHEL/Rocky.
Versão 10 e mais recentes
- Verifique se a versão do sistema operacional é aceita.
Determine a versão do CentOS/RHEL/Rocky. Em seguida, crie o arquivo 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/rpm-package-key-v${VERSION_ID%%.*}.gpg EOMAtualize 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, confira o registro do console para garantir que o ambiente de convidado seja carregado assim que o backup for iniciado.
Conecte-se à instância usando SSH para fazer a verificação. Para instruções detalhadas, consulte Conectar-se à instância usando SSH.
Versão 9 ou anterior
- Verifique se a versão do sistema operacional é aceita.
Determine a versão do CentOS/RHEL/Rocky. Em seguida, crie o arquivo 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 EOMAtualize 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, confira o registro do console para garantir que o ambiente de convidado seja carregado assim que o backup for iniciado.
Conecte-se à instância usando SSH para fazer a verificação. Para instruções detalhadas, consulte Conectar-se à instância usando SSH.
Debian
Siga as etapas de acordo com sua versão do Debian.
Debian versão 13 e mais recentes
- Verifique se a versão do sistema operacional é aceita.
Instale a chave GPG do repositório público em
/etc/apt/keyrings:sudo curl https://packages.cloud.google.com/apt/doc/apt-key.gpg -o /etc/apt/keyrings/google-keyring.gpgDetermine o nome da distribuição Debian. Em seguida, crie o arquivo da 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 [signed-by=/etc/apt/keyrings/google-keyring.gpg] http://packages.cloud.google.com/apt google-compute-engine-${VERSION_CODENAME}-stable main EOMAtualize as listas de pacotes:
sudo apt updateInstale os pacotes do ambiente de convidado:
sudo apt install -y gce-configs-trixie sudo apt install -y google-compute-engine google-osconfig-agentReinicie a instância. Em seguida, confira o registro do console para garantir que o ambiente de convidado seja carregado assim que o backup for iniciado.
Conecte-se à instância usando SSH para fazer a verificação. Para instruções detalhadas, consulte Conectar-se à instância usando SSH.
Debian 12 e anteriores
- Verifique se a versão do sistema operacional é aceita.
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 arquivo da 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 EOMAtualize as listas de pacotes:
sudo apt updateInstale os pacotes do ambiente de convidado:
sudo apt install -y google-cloud-packages-archive-keyring sudo apt install -y google-compute-engine google-osconfig-agentReinicie a instância. Em seguida, confira o registro do console para garantir que o ambiente de convidado seja carregado assim que o backup for iniciado.
Conecte-se à instância usando SSH para fazer a verificação. Para instruções detalhadas, consulte Conectar-se à instância usando SSH.
Ubuntu
Verifique se a versão do sistema operacional é aceita.
Ative o repositório Universe. A Canonical publica pacotes referentes ao ambiente de convidado dela 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, confira o registro do console para garantir que o ambiente de convidado seja carregado assim que o backup for iniciado.
Conecte-se à instância usando SSH para fazer a verificação. Para instruções detalhadas, consulte Conectar-se à instância usando SSH.
SLES
Verifique se a versão do sistema operacional é aceita.
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, confira o registro do console para garantir que o ambiente de convidado seja carregado assim que o backup for iniciado.
Conecte-se à instância usando SSH para fazer a verificação. Para instruções detalhadas, consulte Conectar-se à instância usando SSH.
Windows
Antes de começar, verifique se a versão do sistema operacional é aceita.
Para instalar o ambiente de convidado do Windows, execute os comandos a seguir em um prompt elevado do PowerShell, versão 3.0 ou mais recente. O comando
Invoke-WebRequestexige o PowerShell 3.0 ou mais recente.Faça o download e instale
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
GooGetadiciona conteúdos ao ambiente do sistema. Após a instalação, inicie um novo console do PowerShell. Também é possível fornecer o caminho completo para o arquivogooget.exe(C:\ProgramData\GooGet\googet.exe).Abra um novo console 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 principais pacotes 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 opcional do ambiente de convidado do Windows.
googet -noconfirm install google-compute-engine-auto-updater
Uso do 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 outros comandos, execute
googet help.
Clonar o disco de inicialização e usar o script de inicialização
Se não for possível se conectar a uma instância para instalar manualmente o ambiente de convidado, instale-o usando este procedimento, que inclui as etapas abaixo que podem ser realizadas no console do Google Cloud ou no Cloud Shell.
Esse método se aplica 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. Se você não estiver usando o Cloud Shell, instale o processador JSON da linha de comando
jq. Esse processador filtra a saída da gcloud CLI. Ojqestá pré-instalado no Cloud Shell.CentOS/RHEL/Rocky
Siga as etapas para sua versão do CentOS/RHEL/Rocky.
Versão 10 e mais recentes
Verifique se a versão do sistema operacional é aceita.
Crie uma instância para atuar como a instância de resgate. Dê o nome de rescue a ela. Ela não precisa executar o mesmo SO Linux da instância problemática. Neste exemplo, é usado o Debian 9 na instância de resgate.
Pare a instância problemática e crie uma cópia do disco de inicialização correspondente.
Defina um nome de variável para a instância problemática. Essa variável vai simplificar a referência à instância nas etapas posteriores.
export PROB_INSTANCE_NAME=VM_NAME
Substitua VM_NAME pelo nome da instância problemática.
Interrompa a instância problemática.
gcloud compute instances stop "$PROB_INSTANCE_NAME"
Consiga o nome do disco de inicialização da instância com problema.
export PROB_INSTANCE_DISK="$(gcloud compute instances describe \ "$PROB_INSTANCE_NAME" --format='json' | jq -r \ '.disks[] | select(.boot == true) | .source')"
Crie um snapshot do disco de inicialização.
export DISK_SNAPSHOT="${PROB_INSTANCE_NAME}-snapshot" gcloud compute disks snapshot "$PROB_INSTANCE_DISK" \ --snapshot-names "$DISK_SNAPSHOT"Crie um disco com base no snapshot.
export NEW_DISK="${PROB_INSTANCE_NAME}-new-disk" gcloud compute disks create "$NEW_DISK" \ --source-snapshot="$DISK_SNAPSHOT"Exclua o snapshot.
gcloud compute snapshots delete "$DISK_SNAPSHOT"
Anexe o novo disco à instância de resgate e monte o volume raiz dela. Como esse procedimento anexa apenas um disco extra, o identificador de dispositivo do novo disco é
/dev/sdb. Por padrão, o CentOS/RHEL/Rocky Linux usa o primeiro volume em um disco como raiz. Portanto, o identificador do volume será/dev/sdb1. Em configurações personalizadas, uselsblkpara determinar o identificador do volume.gcloud compute instances attach-disk rescue --disk "$NEW_DISK"
Conecte-se à instância de resgate usando SSH.
gcloud compute ssh rescue
Siga as próximas etapas na instância de resgate.
Ative o volume 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/rpm-package-key-v${VERSION_ID%%.*}.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 EOFFaça backup do arquivo
rc.localatual, mova o script temporáriorc.localpara o disco montado e defina a permissão para que ele seja executável na inicialização. O script temporário substitui o script original quando a inicialização é concluída. Para isso, execute este 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"
Desative 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 resgate.
Separe o novo disco da instância de resgate.
gcloud compute instances detach-disk rescue --disk "$NEW_DISK"
Crie uma instância para atuar como substituta. Ao criar a instância de substituição, especifique o novo disco como o de inicialização. É possível criar a instância de substituição usando o console do Google Cloud :
No console do Google Cloud , acesse a página Instâncias de VM.
Clique na instância problemática e selecione Criar semelhante.
Especifique um nome para a instância de substituição. Na seção Disco de inicialização, clique em Alterar e, em seguida, em Discos existentes. Selecione o novo disco.
Clique em Criar. A instância de substituição é iniciada automaticamente depois de ser criada.
Quando a instância de substituição é inicializada, o script temporário
rc.localé executado e instala o ambiente de convidado. Para monitorar o andamento desse script, procure nos registros do console as linhas emitidas pelo script temporáriorc.local. Para conferir os registros, execute o seguinte comando:gcloud compute instances get-serial-port-output REPLACEMENT_VM_NAME
Substitua REPLACEMENT_VM_NAME pelo nome atribuído à instância de substituição.
A instância de substituição também é reinicializada automaticamente quando o script temporário
rc.localé concluído. Durante a segunda reinicialização, é possível conferir o registro do console para garantir que o ambiente de convidado seja carregado.Verifique se é possível estabelecer conexão com a instância usando SSH.
Depois de verificar se a instância de substituição está funcionando, você pode parar ou excluir a instância problemática.
Versão 9 ou anterior
Verifique se a versão do sistema operacional é aceita.
Crie uma instância para atuar como a instância de resgate. Dê o nome de rescue a ela. Ela não precisa executar o mesmo SO Linux da instância problemática. Neste exemplo, é usado o Debian 9 na instância de resgate.
Pare a instância problemática e crie uma cópia do disco de inicialização correspondente.
Defina um nome de variável para a instância problemática. Essa variável vai simplificar a referência à instância nas etapas posteriores.
export PROB_INSTANCE_NAME=VM_NAME
Substitua VM_NAME pelo nome da instância problemática.
Interrompa a instância problemática.
gcloud compute instances stop "$PROB_INSTANCE_NAME"
Consiga o nome do disco de inicialização da instância com problema.
export PROB_INSTANCE_DISK="$(gcloud compute instances describe \ "$PROB_INSTANCE_NAME" --format='json' | jq -r \ '.disks[] | select(.boot == true) | .source')"
Crie um snapshot do disco de inicialização.
export DISK_SNAPSHOT="${PROB_INSTANCE_NAME}-snapshot" gcloud compute disks snapshot "$PROB_INSTANCE_DISK" \ --snapshot-names "$DISK_SNAPSHOT"Crie um disco com base no snapshot.
export NEW_DISK="${PROB_INSTANCE_NAME}-new-disk" gcloud compute disks create "$NEW_DISK" \ --source-snapshot="$DISK_SNAPSHOT"Exclua o snapshot:
gcloud compute snapshots delete "$DISK_SNAPSHOT"
Anexe o novo disco à instância de resgate e monte o volume raiz dela. Como esse procedimento anexa apenas um disco extra, o identificador de dispositivo do novo disco é
/dev/sdb. Por padrão, o CentOS/RHEL/Rocky Linux usa o primeiro volume em um disco como raiz. Portanto, o identificador do volume será/dev/sdb1. Em configurações personalizadas, uselsblkpara determinar o identificador do volume.gcloud compute instances attach-disk rescue --disk "$NEW_DISK"
Conecte-se à instância de resgate usando SSH.
gcloud compute ssh rescue
Siga as próximas etapas na instância de resgate.
Ative o volume 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 EOFFaça backup do arquivo
rc.localatual, mova o script temporáriorc.localpara o disco montado e defina a permissão para que ele seja executável na inicialização. O script temporário substitui o script original quando a inicialização é concluída. Para isso, execute este 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"
Desative 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 resgate.
Separe o novo disco da instância de resgate.
gcloud compute instances detach-disk rescue --disk "$NEW_DISK"
Crie uma instância para atuar como substituta. Ao criar a instância de substituição, especifique o novo disco como o de inicialização. É possível criar a instância de substituição usando o console do Google Cloud :
No console do Google Cloud , acesse a página Instâncias de VM.
Clique na instância problemática e selecione Criar semelhante.
Especifique um nome para a instância de substituição. Na seção Disco de inicialização, clique em Alterar e, em seguida, em Discos existentes. Selecione o novo disco.
Clique em Criar. A instância de substituição é iniciada automaticamente depois de ser criada.
Quando a instância de substituição é inicializada, o script temporário
rc.localé executado e instala o ambiente de convidado. Para monitorar o andamento desse script, procure nos registros do console as linhas emitidas pelo script temporáriorc.local. Para conferir os registros, execute o seguinte comando:gcloud compute instances get-serial-port-output REPLACEMENT_VM_NAME
Substitua REPLACEMENT_VM_NAME pelo nome atribuído à instância de substituição.
A instância de substituição também é reinicializada automaticamente quando o script temporário
rc.localé concluído. Durante a segunda reinicialização, é possível conferir o registro do console para garantir que o ambiente de convidado seja carregado.Verifique se é possível estabelecer conexão com a instância usando SSH.
Depois de verificar se a instância de substituição está funcionando, você pode parar ou excluir a instância problemática.
Debian
Verifique se a versão do sistema operacional é aceita.
Crie uma instância para atuar como a instância de resgate. Dê o nome de rescue a ela. Ela não precisa executar o mesmo SO Linux da instância problemática. Neste exemplo, é usado o Debian 9 na instância de resgate.
Pare a instância problemática e crie uma cópia do disco de inicialização correspondente.
Defina um nome de variável para a instância problemática. Essa variável vai simplificar a referência à instância nas etapas posteriores.
export PROB_INSTANCE_NAME=VM_NAME
Substitua VM_NAME pelo nome da instância problemática.
Interrompa a instância problemática.
gcloud compute instances stop "$PROB_INSTANCE_NAME"
Consiga o nome do disco de inicialização da instância com problema.
export PROB_INSTANCE_DISK="$(gcloud compute instances describe \ "$PROB_INSTANCE_NAME" --format='json' | jq -r \ '.disks[] | select(.boot == true) | .source')"
Crie um snapshot do disco de inicialização.
export DISK_SNAPSHOT="${PROB_INSTANCE_NAME}-snapshot" gcloud compute disks snapshot "$PROB_INSTANCE_DISK" \ --snapshot-names "$DISK_SNAPSHOT"Crie um disco com base no snapshot.
export NEW_DISK="${PROB_INSTANCE_NAME}-new-disk" gcloud compute disks create "$NEW_DISK" \ --source-snapshot="$DISK_SNAPSHOT"Exclua o snapshot:
gcloud compute snapshots delete "$DISK_SNAPSHOT"
Anexe o novo disco à instância de resgate e monte o volume raiz dela. Como esse procedimento anexa apenas um disco extra, o identificador de dispositivo do novo disco é
/dev/sdb. Por padrão, o Debian usa o primeiro volume no disco como raiz. Portanto, o identificador do volume será/dev/sdb1. Em configurações personalizadas, uselsblkpara determinar o identificador do volume.gcloud compute instances attach-disk rescue --disk "$NEW_DISK"
Conecte-se à instância de resgate usando SSH.
gcloud compute ssh rescue
Siga as próximas etapas na instância de resgate.
Ative o volume 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 EOFFaça backup do arquivo
rc.localatual, mova o script temporáriorc.localpara o disco montado e defina a permissão para que ele seja executável na inicialização. O script temporário substitui o script original quando a inicialização é concluída. Para isso, execute este 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"
Desative 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 resgate.
Separe o novo disco da instância de resgate.
gcloud compute instances detach-disk rescue --disk "$NEW_DISK"
Crie uma nova instância para servir como substituta. Ao criar a instância de substituição, especifique o novo disco como o de inicialização. É possível criar a instância de substituição usando o console do Google Cloud :
No console do Google Cloud , acesse a página Instâncias de VM.
Clique na instância problemática e selecione Criar semelhante.
Especifique um nome para a instância de substituição. Na seção Disco de inicialização, clique em Alterar e, em seguida, em Discos existentes. Selecione o novo disco.
Clique em Criar. A instância de substituição é iniciada automaticamente depois de ser criada.
Quando a instância de substituição é inicializada, o script temporário
rc.localé executado e instala o ambiente de convidado. Para monitorar o andamento desse script, procure nos registros do console as linhas emitidas pelo script temporáriorc.local. Para conferir os registros, execute o seguinte comando:gcloud compute instances get-serial-port-output REPLACEMENT_VM_NAME
Substitua REPLACEMENT_VM_NAME pelo nome atribuído à instância de substituição.
A instância de substituição também é reinicializada automaticamente quando o script temporário
rc.localé concluído. Durante a segunda reinicialização, é possível conferir o registro do console para garantir que o ambiente de convidado seja carregado.Verifique se é possível estabelecer conexão com a instância usando SSH.
Depois de verificar se a instância de substituição está funcionando, você pode parar ou excluir a instância problemática.
Ubuntu
Verifique se a versão do sistema operacional é aceita.
Crie uma instância para atuar como a instância de resgate. Dê o nome de rescue a ela. Ela não precisa executar o mesmo SO Linux da instância problemática. Neste exemplo, é usado o Debian 9 na instância de resgate.
Pare a instância problemática e crie uma cópia do disco de inicialização correspondente.
Defina um nome de variável para a instância problemática. Essa variável vai simplificar a referência à instância nas etapas posteriores.
export PROB_INSTANCE_NAME=VM_NAME
Substitua VM_NAME pelo nome da instância problemática.
Interrompa a instância problemática.
gcloud compute instances stop "$PROB_INSTANCE_NAME"
Consiga o nome do disco de inicialização da instância com problema.
export PROB_INSTANCE_DISK="$(gcloud compute instances describe \ "$PROB_INSTANCE_NAME" --format='json' | jq -r \ '.disks[] | select(.boot == true) | .source')"
Crie um snapshot do disco de inicialização.
export DISK_SNAPSHOT="${PROB_INSTANCE_NAME}-snapshot" gcloud compute disks snapshot "$PROB_INSTANCE_DISK" \ --snapshot-names "$DISK_SNAPSHOT"Crie um disco com base no snapshot.
export NEW_DISK="${PROB_INSTANCE_NAME}-new-disk" gcloud compute disks create "$NEW_DISK" \ --source-snapshot="$DISK_SNAPSHOT"Exclua o snapshot:
gcloud compute snapshots delete "$DISK_SNAPSHOT"
Anexe o novo disco à instância de resgate e monte o volume raiz dela. Como esse procedimento anexa apenas um disco extra, o identificador de dispositivo do novo disco é
/dev/sdb. Por padrão, o Ubuntu rotula o volume raiz como 1. Portanto, o identificador do volume será*/dev/sdb*. Em configurações personalizadas, uselsblkpara determinar o identificador do volume.gcloud compute instances attach-disk rescue --disk "$NEW_DISK"
Conecte-se à instância de resgate usando SSH.
gcloud compute ssh rescue
Siga as próximas etapas na instância de resgate.
Ative o volume 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 EOFFaça backup do arquivo
rc.localatual, mova o script temporáriorc.localpara o disco montado e defina a permissão para que ele seja executável na inicialização. O script temporário substitui o script original quando a inicialização é concluída. Para isso, execute este 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"
Desative 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 resgate.
Separe o novo disco da instância de resgate.
gcloud compute instances detach-disk rescue --disk "$NEW_DISK"
Crie uma nova instância para servir como substituta. Ao criar a instância de substituição, especifique o novo disco como o de inicialização. É possível criar a instância de substituição usando o console do Google Cloud :
No console do Google Cloud , acesse a página Instâncias de VM.
Clique na instância problemática e selecione Criar semelhante.
Especifique um nome para a instância de substituição. Na seção Disco de inicialização, clique em Alterar e, em seguida, em Discos existentes. Selecione o novo disco.
Clique em Criar. A instância de substituição é iniciada automaticamente depois de ser criada.
Quando a instância de substituição é inicializada, o script temporário
rc.localé executado e instala o ambiente de convidado. Para monitorar o andamento desse script, procure nos registros do console as linhas emitidas pelo script temporáriorc.local. Para conferir os registros, execute o seguinte comando:gcloud compute instances get-serial-port-output REPLACEMENT_VM_NAME
Substitua REPLACEMENT_VM_NAME pelo nome atribuído à instância de substituição.
A instância de substituição também é reinicializada automaticamente quando o script temporário
rc.localé concluído. Durante a segunda reinicialização, é possível conferir o registro do console para garantir que o ambiente de convidado seja carregado.Verifique se é possível estabelecer conexão com a instância usando SSH.
Depois de verificar se a instância de substituição está funcionando, você pode parar ou excluir a instância problemática.
Atualizar o ambiente de convidado
Se você receber uma mensagem informando que o ambiente de convidado está desatualizado, atualize os pacotes do sistema operacional da seguinte maneira:
CentOS/RHEL/Rocky
Para atualizar os sistemas operacionais 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 operacionais 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 operacionais 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 operacionais SLES, execute os seguintes comandos:
sudo zypper refresh sudo zypper install google-guest-{agent,configs,oslogin} \ google-osconfig-agentWindows
Para atualizar os sistemas operacionais Windows, execute o seguinte comando:
googet update
Validar o ambiente de convidado
Para verificar se um ambiente de convidado está instalado, confira os registros do sistema emitidos no console enquanto uma instância é inicializada ou liste os pacotes instalados durante a conexão com a instância.
Exibir os registros esperados do console para o ambiente de convidado
Nesta tabela, você confere o resumo do resultado esperado dos registros do console emitidos por instâncias com ambientes de convidado ativos durante a inicialização.
Sistema operacional Gerenciamento de serviços Resposta esperada CentOS/RHEL/Rocky Linux
Debian
Ubuntu
SLES
Container-Optimized OS 89 e mais recentessystemd 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)
Container-Optimized OS 85 e anteriores 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 registros do console de uma instância, siga estas etapas.
Console
No console do Google Cloud , acesse a página Instâncias de VM.
gcloud
- Reinicie ou redefina a instância.
Use o subcomando
gcloud compute instances get-serial-port-outputpara se conectar usando a CLI do Google Cloud. Por exemplo:gcloud compute instances get-serial-port-output VM_NAME
Substitua VM_NAME pelo nome da instância que você precisa analisar.
Procure a saída esperada na tabela que precede as etapas.
Exibir serviços carregados por versão do sistema operacional
Nesta tabela, você confere o resumo dos serviços que precisam ser carregados nas instâncias com ambientes de convidado ativos. Você precisa executar o comando para listar os serviços depois de se conectar à instância. Portanto, você só poderá fazer essa verificação se tiver acesso à instância.
Sistema operacional Comando para listar serviços Resposta esperada 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
Container-Optimized OS 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 e mais recentes 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
Exibir pacotes instalados por versão do sistema operacional
Nesta tabela, você confere o resumo dos pacotes que precisam ser instalados nas instâncias com ambientes de convidado ativos. É preciso executar o comando para listar os pacotes instalados depois de se conectar à instância. Portanto, só é possível fazer essa verificação se você tiver acesso à instância.
Para mais informações sobre esses pacotes, consulte Componentes do ambiente de convidado.
Sistema operacional Comando para listar pacotes Resposta esperada CentOS/RHEL/Rocky Linux rpm -qa --queryformat '%{NAME}\n' \ | grep -iE 'google|gce'A lista de pacotes pode variar. Ela também pode incluir componentes como
google-cloud-cli-anthoscli. As imagens do RHEL podem ter pacotes específicos da versão (por exemplo,google-rhui-client-rhel8) ou variantes específicas do SAP.google-osconfig-agent google-compute-engine-oslogin google-guest-agent gce-disk-expand google-compute-engine google-cloud-cli google-cloud-ops-agent
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 googlegoogle-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
A seguir
- Leia as dicas de solução de problemas.
- Saiba mais sobre a aplicação de metadados.
- Saiba mais sobre 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-11-17 UTC.
[[["Fácil de entender","easyToUnderstand","thumb-up"],["Meu problema foi resolvido","solvedMyProblem","thumb-up"],["Outro","otherUp","thumb-up"]],[["Difícil de entender","hardToUnderstand","thumb-down"],["Informações incorretas ou exemplo de código","incorrectInformationOrSampleCode","thumb-down"],["Não contém as informações/amostras de que eu preciso","missingTheInformationSamplesINeed","thumb-down"],["Problema na tradução","translationIssue","thumb-down"],["Outro","otherDown","thumb-down"]],["Última atualização 2025-11-17 UTC."],[],[]] -