Nesta página, você aprende a instalar manualmente o ambiente de convidado para instâncias de máquina virtual (VM) que executam imagens personalizadas no Compute Engine.
Na maioria dos casos, se você usa VMs criadas por meio de imagens públicas fornecidas pelo Google, não é necessário instalar um ambiente de convidado. Para informações sobre quando usar o ambiente convidado, consulte Quando instalar ou atualizar manualmente o ambiente convidado.
Antes de instalar manualmente o ambiente de convidado, use o procedimento Validar o ambiente de convidado para verificar se esse ambiente está sendo executado na VM. Se o ambiente do convidado estiver disponível na VM, mas desatualizado, atualize o ambiente do convidado.
Antes de começar
-
Se você quiser usar os exemplos da CLI do Google Cloud neste guia:
- Você pode instalar ferramentas locais ou usar o Cloud Shell.
- Usar ferramentas locais
- Instale o Google Cloud CLI.
- Instale o processador JSON da linha de comando jq (em inglês): use esse processador para filtrar a saída
gcloud
.
- Use o Cloud Shell, que tem a CLI gcloud e
jq
pré-instaladas: Abrir o Cloud Shell
- Usar ferramentas locais
- Defina as propriedades padrão.
gcloud config set compute/zone ZONE
gcloud config set compute/region REGION
gcloud config set project PROJECT
Métodos de instalação
Há várias maneiras de instalar o ambiente de convidado. Escolha uma das seguintes opções:
Ferramenta de importação. Essa é a opção recomendada. No entanto, lembre-se de que a ferramenta de importação não apenas instala o ambiente convidado, mas também faz outras atualizações de configuração na imagem, como configurar redes, configurar o carregador de inicialização e instalar a CLI do Google Cloud. Para instruções sobre como usá-la, consulte Como tornar uma imagem inicializável.
A ferramenta de importação é compatível com uma grande variedade de 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.
A instalação manual do ambiente de convidado está disponível para os sistemas operacionais a seguir:
- Ubuntu 16.04 ou posterior
- CentOS 7 ou posterior
- SUSE Linux Enterprise Server (SLES) 12 SP4 ou posterior e 15 SP1 ou posterior
- Red Hat Enterprise Linux (RHEL) 7 ou posterior
- Debian 9 ou posterior
- Windows Server 2019
- Windows Server 2016
- Windows Server 2012 R2
- Lançamentos do canal semi-anual do Windows Server
- SQL Server no Windows Server
- Traga sua própria licença do Windows:
- Windows 8
- Windows 10
Limitações
Não é possível instalar ou usar manualmente a ferramenta de importação para instalar ambientes convidados para Fedora CoreOS e sistemas operacionais otimizados para contêineres. Se você precisar de um desses sistemas operacionais, recomendamos o uso de imagens públicas, pois um ambiente de convidado é incluído como parte principal de todas as imagens públicas.
Como instalar o ambiente convidado
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 de destino usando SSH. Caso contrário, instale o ambiente de convidado clonando o disco de inicialização dele e usando um script de inicialização.
Esse procedimento será útil para imagens importadas se você puder 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 SSH funcional baseado em chave.
CentOS/RHEL
- Garanta que a versão do seu sistema operacional seja compatível.
Determine a versão do CentOS/RHEL e crie o arquivo de 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 e inspecione o respectivo registro do console para garantir que o ambiente de convidado seja carregado assim que iniciar o backup.
Verifique se é possível se conectar à instância usando SSH.
Debian
- Garanta que a versão do seu sistema operacional seja compatível.
Instale a chave GPG pública de repositório:
curl https://packages.cloud.google.com/apt/doc/apt-key.gpg | sudo apt-key add -
Determine o nome da distribuição Debian e crie o arquivo da lista de fontes,
/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 e inspecione o respectivo registro do console para garantir que o ambiente de convidado seja carregado assim que iniciar o backup.
Verifique se é possível se conectar à instância usando SSH.
Ubuntu
Garanta que a versão do seu sistema operacional seja compatível.
Ative o repositório Universe (em inglês). 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 e inspecione o respectivo registro do console para garantir que o ambiente de convidado seja carregado assim que iniciar o backup.
Verifique se é possível se conectar à instância usando SSH.
SLES
Garanta que a versão do seu sistema operacional seja compatível.
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 e inspecione o respectivo registro do console para garantir que o ambiente de convidado seja carregado assim que iniciar o backup.
Verifique se é possível se conectar à instância usando SSH.
Windows
Antes de começar, tenha certeza que a versão do seu sistema operacional é compatível.
Para instalar o ambiente de convidado do Windows, execute os comandos a seguir em um prompt elevado do PowerShell, versão 3.0 ou superior. O comando Invoke-WebRequest
nas instruções abaixo requer uma versão do PowerShell posterior à 3.0.
Faça o download e instale
GooGet
.[Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12; Invoke-WebRequest https://github.com/google/googet/releases/download/v2.13.0/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 instalação, inicie um novo console do PowerShell ou forneça 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 ambiente de convidado usando este procedimento, que inclui as seguintes etapas que podem ser concluídas no console do Google Cloud ou no Cloud Shell.
Este método mostra o procedimento apenas para distribuições Linux. Para o Windows, use um dos outros dois métodos de instalação.
Use o Cloud Shell para executar este procedimento:
CentOS/RHEL
Garanta que a versão do seu sistema operacional seja compatível.
Crie uma nova instância que sirva como a 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. Assim, fica mais fácil consultá-la 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 novo disco a partir do 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 ative o volume raiz dela. Como esse procedimento apenas anexa um disco extra, o identificador de dispositivo do novo disco será /dev/sdb. Por padrão, o CentOS/RHEL usa o primeiro volume no disco como raiz. Desse modo, o identificador do volume será /dev/sdb1. Em casos específicos, use
lsblk
para 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 ==" sleep 30 # Wait for network. echo "Determining CentOS/RHEL version..." eval $(grep VERSION_ID /etc/os-release) if [[ -z $VERSION_ID ]]; then echo "ERROR: Could not determine version of CentOS/RHEL." 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
Mova o script
rc.local
para o volume raiz do novo disco e defina as permissões. Separe qualquer scriptrc.local
existente. O script temporário o substituirá quando for concluído.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 que sirva 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 VMs.
Clique na instância problemática e, em seguida, 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 criada.
Quando a instância de substituição é inicializada, o script temporário
rc.local
é executado e instala o ambiente de convidado. Para ver o andamento desse script, inspecione nos registros do console as linhas emitidas pelo script temporáriorc.local
. Para ver 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 substituta.
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 inspecionar o registro do console para garantir que o ambiente de convidado seja carregado.Verifique se é possível se conectar à instância usando SSH.
Depois que você estiver satisfeito com o funcionamento da instância de substituição, será possível interromper ou excluir a instância problemática.
Debian
Garanta que a versão do seu sistema operacional seja compatível.
Crie uma nova instância para servir como a 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.
Interrompa 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. Assim, fica mais fácil consultá-la 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 novo disco a partir do 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 ative o volume raiz dela. Como esse procedimento apenas anexa um disco extra, o identificador de dispositivo do novo disco será /dev/sdb. Por padrão, o Debian usa o primeiro volume no disco como raiz. Desse modo, o identificador do volume será /dev/sdb1. Em casos específicos, use
lsblk
para 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 EOF
Mova o script
rc.local
para o volume raiz do novo disco e defina as permissões. Separe qualquer scriptrc.local
existente. O script temporário o substituirá quando for concluído.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 VMs.
Clique na instância problemática e, em seguida, 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 criada.
Quando a instância de substituição é inicializada, o script temporário
rc.local
é executado e instala o ambiente de convidado. Para ver o andamento desse script, inspecione nos registros do console as linhas emitidas pelo script temporáriorc.local
. Para ver 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 substituta.
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 inspecionar o registro do console para garantir que o ambiente de convidado seja carregado.Verifique se é possível se conectar à instância usando SSH.
Depois que você estiver satisfeito com o funcionamento da instância de substituição, será possível interromper ou excluir a instância problemática.
Ubuntu
Garanta que a versão do seu sistema operacional seja compatível.
Crie uma nova instância para servir como a 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.
Interrompa 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. Assim, fica mais fácil consultá-la 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 novo disco a partir do 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 ative o volume raiz dela. Como esse procedimento apenas anexa um disco extra, o identificador de dispositivo do novo disco será /dev/sdb. Por padrão, o Ubuntu marca o volume raiz como 1. Desse modo, o identificador do volume será /dev/sdb1. Em casos específicos, use
lsblk
para 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 EOF
Mova o script
rc.local
para o volume raiz do novo disco e defina as permissões. Separe qualquer scriptrc.local
existente. O script temporário o substituirá quando for concluído.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 VMs.
Clique na instância problemática e, em seguida, 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 criada.
Quando a instância de substituição é inicializada, o script temporário
rc.local
é executado e instala o ambiente de convidado. Para ver o andamento desse script, inspecione nos registros do console as linhas emitidas pelo script temporáriorc.local
. Para ver 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 substituta.
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 inspecionar o registro do console para garantir que o ambiente de convidado seja carregado.Verifique se é possível se conectar à instância usando SSH.
Depois que você estiver satisfeito com o funcionamento da instância de substituição, será possível interromper ou excluir a instância problemática.
Como atualizar o ambiente de convidado
Se você estiver recebendo uma mensagem informando que o ambiente de convidado está desatualizado, atualize os pacotes do sistema operacional.
CentOS/RHEL
Para atualizar os sistemas operacionais CentOS e RHEL, 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-agent
Windows
Para atualizar sistemas operacionais Windows, execute o seguinte comando:
googet update
Como validar o ambiente de convidado
A presença de um ambiente de convidado pode ser determinada pela inspeção de registros do sistema emitidos no console enquanto uma instância é iniciada ou pela listagem dos pacotes instalados durante a conexão com a instância.
Registros esperados do console para o ambiente de convidado
Nesta tabela, você vê 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 Debian Ubuntu SLES Container-Optimized OS 89 e mais recente |
systemd | GCEGuestAgent Info: GCE Agent Started (version YYYYMMDD.NN) GCEMetadataScripts: 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 VMs.
gcloud
- Reinicie ou redefina a instância.
Use o subcomando
gcloud compute instances get-serial-port-output
para se conectar usando a CLI do Google Cloud. Exemplo:gcloud compute instances get-serial-port-output VM_NAME
Substitua VM_NAME pelo nome da instância que você precisa examinar.
Procure o resultado esperado mencionado na tabela acima.
Serviços carregados para o ambiente de convidado
Nesta tabela, você vê o resumo dos serviços que precisam ser carregados nas instâncias com ambientes de convidado ativos. O comando para listar serviços precisa ser executado após a conexão com a instância. Portanto, esta verificação poderá ser realizada somente se você tiver acesso a ela.
Sistema operacional | Comando para listar serviços | Resposta esperada |
---|---|---|
CentOS/RHEL Debian |
sudo 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 ou versões 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 |
Pacotes instalados para o ambiente de convidado
Nesta tabela, você vê o resumo dos pacotes que precisam ser instalados nas instâncias com ambientes de convidado ativos. O comando para listar pacotes instalados precisa ser executado após a conexão com a instância. Portanto, esta verificação poderá ser realizada somente se você tiver acesso a ela.
Sistema operacional | Comando para listar pacotes | Resposta esperada |
---|---|---|
CentOS/RHEL | rpm -qa --queryformat '%{NAME}\n' \ |grep -iE google\|gce | 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 -iE '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 -iE "google" |
google-compute-engine-oslogin google-compute-engine google-guest-agent google-osconfig-agent |
SUSE (SLES) | rpm -qa --queryformat '%{NAME}\n' \ |grep -iE 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 |
A seguir
- Leia as dicas de solução de problemas.
- Saiba mais sobre a aplicação de metadados.
- Saiba mais sobre chaves SSH.