En esta página, se explica cómo instalar de forma manual el entorno de invitado en instancias de máquina virtual (VM). El entorno invitado es una colección de secuencias de comandos, daemons y objetos binarios que las instancias requieren para ejecutarse en Compute Engine. Para obtener más información, consulta Entorno invitado.
En la mayoría de los casos, si usas imágenes públicas de SO proporcionadas por Google, el entorno invitado se incluye automáticamente. Para obtener una lista completa de las imágenes del SO que incluyen automáticamente el entorno invitado, consulta Detalles de los sistemas operativos.
Si el entorno invitado no está instalado o está desactualizado, instálalo o actualízalo. Para identificar estas situaciones, consulta Cuándo instalar o actualizar el entorno invitado.
Antes de comenzar
-
Si aún no lo hiciste, configura la autenticación.
La autenticación verifica tu identidad para acceder a los servicios y las APIs de Google Cloud . Para ejecutar código o muestras desde un entorno de desarrollo local, puedes autenticarte en Compute Engine seleccionando una de las siguientes opciones:
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
-
Instala Google Cloud CLI. Después de la instalación, inicializa Google Cloud CLI ejecutando el siguiente comando:
gcloud init
Si usas un proveedor de identidad externo (IdP), primero debes acceder a gcloud CLI con tu identidad federada.
- Set a default region and zone.
Cuándo instalar o actualizar el entorno invitado
En la mayoría de los casos, no es necesario instalar o actualizar el entorno invitado de forma manual. Revisa las siguientes secciones para saber cuándo es posible que debas instalar o actualizar manualmente.
Verifica los requisitos de instalación
Antes de instalar el entorno invitado, usa el procedimiento Valida el entorno invitado para comprobar si se ejecuta en tu instancia. Si el entorno invitado está disponible en la instancia, pero está desactualizado, actualiza el entorno invitado.
Es posible que debas instalar el entorno de invitado en las siguientes situaciones:
La imagen de SO proporcionada por Google que necesitas no tiene instalado el entorno de invitado.
Importas una imagen personalizada o un disco virtual a Compute Engine y eliges evitar la instalación automática del entorno invitado.
Cuando importas discos virtuales o imágenes personalizadas, puedes permitir que Compute Engine instale el entorno invitado por ti. Sin embargo, si decides no instalar el entorno invitado durante el proceso de importación, debes instalarlo de forma manual.
Migras VMs a Compute Engine con Migrate to Virtual Machines.
Para instalar el entorno invitado, consulta Métodos de instalación.
Verifica los requisitos de actualización
Es posible que debas actualizar el entorno invitado en las siguientes situaciones:
Tienes instancias que usan imágenes de SO anteriores a
v20141218
.Usas una imagen de SO que no tiene las optimizaciones del entorno de invitado para los discos SSD locales.
Para actualizar el entorno invitado, consulta Actualiza el entorno invitado.
Métodos de instalación
Puedes instalar el entorno invitado de varias maneras. Elige una de las siguientes opciones:
Herramienta de importación. La herramienta de importación es la opción recomendada. Sin embargo, la herramienta de importación instala el entorno invitado y también realiza otras actualizaciones de configuración en la imagen, como la configuración de redes, la configuración del bootloader y la instalación de Google Cloud CLI. Para obtener instrucciones, consulta Cómo hacer que una imagen se pueda iniciar.
La herramienta de importación admite una amplia variedad de sistemas operativos y versiones. Para obtener más información, consulta la página de detalles del sistema operativo.
Instalación manual. Elige una de las siguientes opciones:
- Conéctate a la instancia mediante SSH o RDP y, luego, instala el entorno de invitado in situ.
- Clona el disco de arranque y, luego, instala el entorno de invitado con una secuencia de comandos de inicio.
Sistemas operativos compatibles
Puedes instalar o actualizar el entorno invitado en las VMs que usan versiones de imágenes del SO en el ciclo de vida de disponibilidad general (AG) o en la etapa de ciclo de vida de asistencia extendida.
Para revisar una lista de las versiones de imagen de SO y su etapa del ciclo de vida en Compute Engine, consulta Detalles del sistema operativo.
Limitaciones
No puedes instalar o usar de forma manual la herramienta de importación para instalar entornos invitados de los sistemas operativos Fedora CoreOS y optimizados para contenedores (COS). En el caso de COS, Google recomienda usar las imágenes públicas que proporciona Google, que incluyen el entorno invitado como un componente principal.
Instalar el entorno invitado
Para instalar manualmente el entorno invitado, selecciona uno de los siguientes métodos, según tu capacidad para conectarte a la instancia:
- Si puedes conectarte a la instancia con SSH o RDP, instala el entorno de invitado in situ.
- Si no puedes conectarte a la instancia, clona el disco de arranque y usa una secuencia de comandos de inicio para instalar el entorno invitado.
Instala el entorno de invitado in situ
Usa este método para instalar el entorno invitado si puedes conectarte a la instancia de destino mediante SSH. Si no puedes conectarte a la instancia para instalar el entorno invitado, clona el disco de arranque de la instancia y usa una secuencia de comandos de inicio para realizar la instalación.
Este procedimiento resulta útil para imágenes importadas si puedes conectarte mediante la autenticación basada en contraseña de SSH. También puedes usarlo para reinstalar el entorno invitado si tienes al menos una cuenta de usuario con un SSH funcional basado en claves.
CentOS/RHEL/Rocky
- Verifica que la versión de tu sistema operativo sea compatible.
Determina la versión de CentOS/RHEL/Rocky Linux. Luego, crea el archivo del repositorio de origen,
/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
Actualiza las listas de paquetes:
sudo yum makecache sudo yum updateinfo
Instala los paquetes del entorno de invitado:
sudo yum install -y google-compute-engine google-osconfig-agent
Reinicia la instancia. Luego, inspecciona el registro de la consola para asegurarte de que el entorno invitado se cargue cuando comience a crearse la copia de seguridad.
Conéctate a la instancia con SSH para verificarlo. Para obtener instrucciones detalladas, consulta Conéctate a la instancia a través de SSH.
Debian
- Verifica que la versión de tu sistema operativo sea compatible.
Instala la clave GPG del repositorio público:
curl https://packages.cloud.google.com/apt/doc/apt-key.gpg | sudo apt-key add -
Determina el nombre de la distribución de Debian. Luego, crea el archivo de lista de origen
/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
Actualiza las listas de paquetes:
sudo apt update
Instala los paquetes del entorno de invitado:
sudo apt install -y google-cloud-packages-archive-keyring sudo apt install -y google-compute-engine google-osconfig-agent
Reinicia la instancia. Luego, inspecciona el registro de la consola para asegurarte de que el entorno invitado se cargue cuando comience a crearse la copia de seguridad.
Conéctate a la instancia con SSH para verificarlo. Para obtener instrucciones detalladas, consulta Conéctate a la instancia a través de SSH.
Ubuntu
Verifica que la versión de tu sistema operativo sea compatible.
Habilita el repositorio Universe. Canonical publica paquetes para su entorno invitado en el repositorio de Universe.
sudo apt-add-repository universe
Actualiza las listas de paquetes:
sudo apt update
Instala los paquetes del entorno de invitado:
sudo apt install -y google-compute-engine google-osconfig-agent
Reinicia la instancia. Luego, inspecciona el registro de la consola para asegurarte de que el entorno invitado se cargue cuando comience a crearse la copia de seguridad.
Conéctate a la instancia con SSH para verificarlo. Para obtener instrucciones detalladas, consulta Conéctate a la instancia a través de SSH.
SLES
Verifica que la versión de tu sistema operativo sea compatible.
Activa el Módulo de nube pública.
product=$(sudo SUSEConnect --list-extensions | grep -o "sle-module-public-cloud.*") [[ -n "$product" ]] && sudo SUSEConnect -p "$product"
Actualiza las listas de paquetes:
sudo zypper refresh
Instala los paquetes del entorno de invitado:
sudo zypper install -y google-guest-{agent,configs,oslogin} \ google-osconfig-agent sudo systemctl enable /usr/lib/systemd/system/google-*
Reinicia la instancia. Luego, inspecciona el registro de la consola para asegurarte de que el entorno invitado se cargue cuando comience a crearse la copia de seguridad.
Conéctate a la instancia con SSH para verificarlo. Para obtener instrucciones detalladas, consulta Conéctate a la instancia a través de SSH.
Windows
Antes de comenzar, verifica que la versión de tu sistema operativo sea compatible.
Para instalar el entorno de invitado de Windows, ejecuta los siguientes comandos en un símbolo del sistema de PowerShell elevado versión 3.0 o superior. El comando
Invoke-WebRequest
requiere PowerShell versión 3.0 o posterior.Descarga y, luego, instala
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 la instalación,
GooGet
agrega contenido al entorno del sistema. Una vez que se complete la instalación, inicia una consola nueva de PowerShell. Como alternativa, proporciona la ruta de acceso completa al archivogooget.exe
(C:\ProgramData\GooGet\googet.exe).Abre una consola nueva y agrega el repositorio
google-compute-engine-stable
.googet addrepo google-compute-engine-stable https://packages.cloud.google.com/yuck/repos/google-compute-engine-stable
Instala los paquetes principales del entorno invitado de Windows.
googet -noconfirm install google-compute-engine-windows ` google-compute-engine-sysprep google-compute-engine-metadata-scripts ` google-compute-engine-vss google-osconfig-agent
Instala el paquete opcional del entorno invitado de Windows.
googet -noconfirm install google-compute-engine-auto-updater
Usa el comando
googet
.Para ver los paquetes disponibles, ejecuta el comando
googet available
.Para ver los paquetes instalados, ejecuta el comando
googet installed
.Para actualizar a la última versión del paquete, ejecuta el comando
googet update
.Para ver los comandos adicionales, ejecuta
googet help
.
Clona el disco de arranque y usa una secuencia de comandos de inicio
Si no puedes conectarte a una instancia para instalar el entorno invitado de forma manual, instálalo con este procedimiento, que incluye los siguientes pasos que puedes completar en la consola de Google Cloud o en Cloud Shell.
Este método solo se aplica a las distribuciones de Linux. En Windows, usa uno de los otros dos métodos de instalación.
Usa Cloud Shell para ejecutar este procedimiento. Para ejecutar este procedimiento si no usas Cloud Shell, instala el procesador JSON de la línea de comandos de
jq
. Este procesador filtra el resultado de gcloud CLI. Cloud Shell tienejq
preinstalado.CentOS/RHEL/Rocky
Verifica que tu versión del sistema operativo sea compatible.
Crea una instancia nueva para que funcione como la instancia de recuperación. Nombra esta instancia como recuperación. Esta instancia de recuperación no necesita ejecutar el mismo SO Linux que la instancia problemática. En este ejemplo, se usa Debian 9 en la instancia de recuperación.
Detén la instancia problemática y crea una copia de su disco de arranque.
Establece un nombre de variable para la instancia problemática. Esta variable simplifica la referencia a la instancia en pasos posteriores.
export PROB_INSTANCE_NAME=VM_NAME
Reemplaza VM_NAME con el nombre de la instancia problemática.
Detén la instancia problemática.
gcloud compute instances stop "$PROB_INSTANCE_NAME"
Obtén el nombre del disco de arranque para la instancia problemática.
export PROB_INSTANCE_DISK="$(gcloud compute instances describe \ "$PROB_INSTANCE_NAME" --format='json' | jq -r \ '.disks[] | select(.boot == true) | .source')"
Crea una instantánea del disco de arranque.
export DISK_SNAPSHOT="${PROB_INSTANCE_NAME}-snapshot" gcloud compute disks snapshot "$PROB_INSTANCE_DISK" \ --snapshot-names "$DISK_SNAPSHOT"
Crea un disco nuevo a partir de la instantánea.
export NEW_DISK="${PROB_INSTANCE_NAME}-new-disk" gcloud compute disks create "$NEW_DISK" \ --source-snapshot="$DISK_SNAPSHOT"
Borra la instantánea:
gcloud compute snapshots delete "$DISK_SNAPSHOT"
Vincula el disco nuevo a la instancia de recuperación y activa el volumen raíz de la instancia de recuperación. Dado que este procedimiento solo vincula un disco adicional, el identificador de dispositivo del disco nuevo es /dev/sdb. CentOS/RHEL/Rocky Linux usa el primer volumen de un disco como el volumen raíz de forma predeterminada; por lo tanto, el identificador de volumen debería ser /dev/sdb1. Para las configuraciones personalizadas, usa
lsblk
para determinar el identificador de volumen.gcloud compute instances attach-disk rescue --disk "$NEW_DISK"
Conéctate a la instancia de recuperación mediante SSH:
gcloud compute ssh rescue
Realiza los siguientes pasos en la instancia de recuperación.
Activa el volumen raíz del disco nuevo.
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"
Crea la secuencia de comandos
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
Crea una copia de seguridad del archivo
rc.local
existente, mueve la secuencia de comandosrc.local
temporal a su lugar en el disco conectado y establece los permisos para que la secuencia de comandos temporal se pueda ejecutar durante el arranque. La secuencia de comandos temporal reemplaza la secuencia de comandos original cuando finaliza el arranque. Para ello, ejecuta el siguiente 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"
Desactiva el volumen raíz del disco nuevo.
sudo umount "$NEW_DISK_MOUNT_POINT" && sudo rmdir \ "$NEW_DISK_MOUNT_POINT"
Sal de la sesión SSH en la instancia de recuperación.
Desvincula el disco nuevo de la instancia de recuperación.
gcloud compute instances detach-disk rescue --disk "$NEW_DISK"
Crea una instancia para que sirva como reemplazo. Cuando crees la instancia de reemplazo, especifica el disco nuevo como el disco de arranque. Puedes crear la instancia de reemplazo con la consola de Google Cloud :
En la Google Cloud consola, ve a la página Instancias de VM.
Haz clic en la instancia problemática y, luego, en Crear similar.
Especifica un nombre para la instancia de reemplazo. En la sección Disco de arranque, haz clic en Cambiar y, luego, en Discos existentes. Selecciona el disco nuevo.
Haz clic en Crear. Una vez que se crea, la instancia de reemplazo se inicia de forma automática.
A medida que se inicia la instancia de reemplazo, la secuencia de comandos temporal
rc.local
ejecuta y, también, instala el entorno invitado. Para mirar el progreso de esta secuencia de comandos, inspecciona los registros de la consola en busca de líneas que emite la secuencia de comandos temporalrc.local
. Para ver los registros, ejecuta el siguiente comando:gcloud compute instances get-serial-port-output REPLACEMENT_VM_NAME
Reemplaza REPLACEMENT_VM_NAME por el nombre que le asignaste a la instancia de reemplazo.
La instancia de reemplazo también se reinicia de manera automática cuando finaliza la secuencia de comandos temporal
rc.local
. Durante el segundo reinicio, puedes inspeccionar el registro de la consola para asegurarte de que se cargue el entorno invitado.Verifica si puedes conectarte a la instancia mediante SSH.
Después de verificar que la instancia de reemplazo es funcional, puedes detener o borrar la instancia problemática.
Debian
Verifica que tu versión del sistema operativo sea compatible.
Crea una instancia nueva para que funcione como la instancia de recuperación. Nombra esta instancia como recuperación. Esta instancia de recuperación no necesita ejecutar el mismo SO Linux que la instancia problemática. En este ejemplo, se usa Debian 9 en la instancia de recuperación.
Detén la instancia problemática y crea una copia de su disco de arranque.
Establece un nombre de variable para la instancia problemática. Esta variable simplifica la referencia a la instancia en pasos posteriores.
export PROB_INSTANCE_NAME=VM_NAME
Reemplaza VM_NAME con el nombre de la instancia problemática.
Detén la instancia problemática.
gcloud compute instances stop "$PROB_INSTANCE_NAME"
Obtén el nombre del disco de arranque para la instancia problemática.
export PROB_INSTANCE_DISK="$(gcloud compute instances describe \ "$PROB_INSTANCE_NAME" --format='json' | jq -r \ '.disks[] | select(.boot == true) | .source')"
Crea una instantánea del disco de arranque.
export DISK_SNAPSHOT="${PROB_INSTANCE_NAME}-snapshot" gcloud compute disks snapshot "$PROB_INSTANCE_DISK" \ --snapshot-names "$DISK_SNAPSHOT"
Crea un disco nuevo a partir de la instantánea.
export NEW_DISK="${PROB_INSTANCE_NAME}-new-disk" gcloud compute disks create "$NEW_DISK" \ --source-snapshot="$DISK_SNAPSHOT"
Borra la instantánea:
gcloud compute snapshots delete "$DISK_SNAPSHOT"
Vincula el disco nuevo a la instancia de recuperación y activa el volumen raíz de la instancia de recuperación. Dado que este procedimiento solo vincula un disco adicional, el identificador de dispositivo del disco nuevo es /dev/sdb. Debian usa el primer volumen de un disco como el volumen raíz de forma predeterminada; por lo tanto, el identificador de volumen debería ser /dev/sdb1. Para las configuraciones personalizadas, usa
lsblk
para determinar el identificador de volumen.gcloud compute instances attach-disk rescue --disk "$NEW_DISK"
Conéctate a la instancia de recuperación mediante SSH:
gcloud compute ssh rescue
Realiza los siguientes pasos en la instancia de recuperación.
Activa el volumen raíz del disco nuevo.
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"
Crea la secuencia de comandos
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
Crea una copia de seguridad del archivo
rc.local
existente, mueve la secuencia de comandosrc.local
temporal a su lugar en el disco conectado y establece los permisos para que la secuencia de comandos temporal se pueda ejecutar durante el arranque. La secuencia de comandos temporal reemplaza la secuencia de comandos original cuando finaliza el arranque. Para ello, ejecuta el siguiente 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"
Desactiva el volumen raíz del disco nuevo.
sudo umount "$NEW_DISK_MOUNT_POINT" && sudo rmdir "$NEW_DISK_MOUNT_POINT"
Sal de la sesión SSH en la instancia de recuperación.
Desvincula el disco nuevo de la instancia de recuperación.
gcloud compute instances detach-disk rescue --disk "$NEW_DISK"
Crea una instancia nueva para que funcione como la instancia de reemplazo. Cuando crees la instancia de reemplazo, especifica el disco nuevo como el disco de arranque. Puedes crear la instancia de reemplazo con la consola de Google Cloud :
En la Google Cloud consola, ve a la página Instancias de VM.
Haz clic en la instancia problemática y, luego, en Crear similar.
Especifica un nombre para la instancia de reemplazo. En la sección Disco de arranque, haz clic en Cambiar y, luego, en Discos existentes. Selecciona el disco nuevo.
Haz clic en Crear. Una vez que se crea, la instancia de reemplazo se inicia de forma automática.
A medida que se inicia la instancia de reemplazo, la secuencia de comandos temporal
rc.local
ejecuta y, también, instala el entorno invitado. Para mirar el progreso de esta secuencia de comandos, inspecciona los registros de la consola en busca de líneas que emite la secuencia de comandos temporalrc.local
. Para ver los registros, ejecuta el siguiente comando:gcloud compute instances get-serial-port-output REPLACEMENT_VM_NAME
Reemplaza REPLACEMENT_VM_NAME por el nombre que le asignaste a la instancia de reemplazo.
La instancia de reemplazo también se reinicia de manera automática cuando finaliza la secuencia de comandos temporal
rc.local
. Durante el segundo reinicio, puedes inspeccionar el registro de la consola para asegurarte de que se cargue el entorno invitado.Verifica si puedes conectarte a la instancia mediante SSH.
Después de verificar que la instancia de reemplazo es funcional, puedes detener o borrar la instancia problemática.
Ubuntu
Verifica que tu versión del sistema operativo sea compatible.
Crea una instancia nueva para que funcione como la instancia de recuperación. Nombra esta instancia como recuperación. Esta instancia de recuperación no necesita ejecutar el mismo SO Linux que la instancia problemática. En este ejemplo, se usa Debian 9 en la instancia de recuperación.
Detén la instancia problemática y crea una copia de su disco de arranque.
Establece un nombre de variable para la instancia problemática. Esta variable simplifica la referencia a la instancia en pasos posteriores.
export PROB_INSTANCE_NAME=VM_NAME
Reemplaza VM_NAME con el nombre de la instancia problemática.
Detén la instancia problemática.
gcloud compute instances stop "$PROB_INSTANCE_NAME"
Obtén el nombre del disco de arranque para la instancia problemática.
export PROB_INSTANCE_DISK="$(gcloud compute instances describe \ "$PROB_INSTANCE_NAME" --format='json' | jq -r \ '.disks[] | select(.boot == true) | .source')"
Crea una instantánea del disco de arranque.
export DISK_SNAPSHOT="${PROB_INSTANCE_NAME}-snapshot" gcloud compute disks snapshot "$PROB_INSTANCE_DISK" \ --snapshot-names "$DISK_SNAPSHOT"
Crea un disco nuevo a partir de la instantánea.
export NEW_DISK="${PROB_INSTANCE_NAME}-new-disk" gcloud compute disks create "$NEW_DISK" \ --source-snapshot="$DISK_SNAPSHOT"
Borra la instantánea:
gcloud compute snapshots delete "$DISK_SNAPSHOT"
Vincula el disco nuevo a la instancia de recuperación y activa el volumen raíz de la instancia de recuperación. Dado que este procedimiento solo vincula un disco adicional, el identificador de dispositivo del disco nuevo es /dev/sdb. Ubuntu etiqueta su volumen raíz 1 de forma predeterminada; por lo tanto, el identificador de volumen debería ser /dev/sdb1. Para configuraciones personalizadas, usa
lsblk
para determinar el identificador de volumen.gcloud compute instances attach-disk rescue --disk "$NEW_DISK"
Conéctate a la instancia de recuperación mediante SSH:
gcloud compute ssh rescue
Realiza los siguientes pasos en la instancia de recuperación.
Activa el volumen raíz del disco nuevo.
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"
Crea la secuencia de comandos
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
Crea una copia de seguridad del archivo
rc.local
existente, mueve la secuencia de comandosrc.local
temporal a su lugar en el disco conectado y establece los permisos para que la secuencia de comandos temporal se pueda ejecutar durante el arranque. La secuencia de comandos temporal reemplaza la secuencia de comandos original cuando finaliza el arranque. Para ello, ejecuta el siguiente 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"
Desactiva el volumen raíz del disco nuevo.
sudo umount "$NEW_DISK_MOUNT_POINT" && sudo rmdir "$NEW_DISK_MOUNT_POINT"
Sal de la sesión SSH en la instancia de recuperación.
Desvincula el disco nuevo de la instancia de recuperación.
gcloud compute instances detach-disk rescue --disk "$NEW_DISK"
Crea una instancia nueva para que funcione como la instancia de reemplazo. Cuando crees la instancia de reemplazo, especifica el disco nuevo como el disco de arranque. Puedes crear la instancia de reemplazo con la consola de Google Cloud :
En la Google Cloud consola, ve a la página Instancias de VM.
Haz clic en la instancia problemática y, luego, en Crear similar.
Especifica un nombre para la instancia de reemplazo. En la sección Disco de arranque, haz clic en Cambiar y, luego, en Discos existentes. Selecciona el disco nuevo.
Haz clic en Crear. Una vez que se crea, la instancia de reemplazo se inicia de forma automática.
A medida que se inicia la instancia de reemplazo, la secuencia de comandos temporal
rc.local
ejecuta y, también, instala el entorno invitado. Para mirar el progreso de esta secuencia de comandos, inspecciona los registros de la consola en busca de líneas que emite la secuencia de comandos temporalrc.local
. Para ver los registros, ejecuta el siguiente comando:gcloud compute instances get-serial-port-output REPLACEMENT_VM_NAME
Reemplaza REPLACEMENT_VM_NAME por el nombre que le asignaste a la instancia de reemplazo.
La instancia de reemplazo también se reinicia de manera automática cuando finaliza la secuencia de comandos temporal
rc.local
. Durante el segundo reinicio, puedes inspeccionar el registro de la consola para asegurarte de que se cargue el entorno invitado.Verifica si puedes conectarte a la instancia mediante SSH.
Después de verificar que la instancia de reemplazo es funcional, puedes detener o borrar la instancia problemática.
Actualiza el entorno invitado
Si recibes un mensaje que notifica que el entorno invitado está desactualizado, actualiza los paquetes para tu sistema operativo de la siguiente manera:
CentOS/RHEL/Rocky
Para actualizar los sistemas operativos CentOS, RHEL y Rocky Linux, ejecuta los siguientes comandos:
sudo yum makecache sudo yum install google-compute-engine google-compute-engine-oslogin \ google-guest-agent google-osconfig-agent
Debian
Ejecuta los siguientes comandos para actualizar los sistemas operativos de Debian:
sudo apt update sudo apt install google-compute-engine google-compute-engine-oslogin \ google-guest-agent google-osconfig-agent
Ubuntu
Ejecuta los siguientes comandos para actualizar los sistemas operativos de Ubuntu:
sudo apt update sudo apt install google-compute-engine google-compute-engine-oslogin \ google-guest-agent google-osconfig-agent
SLES
Para actualizar los sistemas operativos SLES, ejecuta los siguientes comandos:
sudo zypper refresh sudo zypper install google-guest-{agent,configs,oslogin} \ google-osconfig-agent
Windows
Para actualizar los sistemas operativos Windows, ejecuta el siguiente comando:
googet update
Valida el entorno de invitado
Para verificar si se instaló un entorno invitado, puedes inspeccionar los registros del sistema que se emiten en la consola cuando se inicia una instancia o crear una lista de los paquetes instalados cuando te conectas a la instancia.
Consulta los registros esperados de la consola para el entorno invitado
En esta tabla se muestra un resumen del resultado esperado de los registros de la consola que emiten las instancias con entornos invitados activos cuando se inician.
Sistema operativo Administración de servicio Resultado esperado CentOS/RHEL/Rocky Linux
Debian
Ubuntu
SLES
Container-Optimized OS 89 y versiones posterioressystemd 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 y versiones 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)
Si deseas ver los registros de la consola de una instancia, sigue estos pasos.
Console
En la Google Cloud consola, ve a la página Instancias de VM.
- Selecciona la instancia que necesitas examinar.
- Reinicia o restablece la instancia.
- En Registros, haz clic en Puerto en serie 1 (consola).
- Busca el resultado esperado en la tabla que precede a estos pasos.
gcloud
- Reinicia o restablece la instancia.
Usa el subcomando
gcloud compute instances get-serial-port-output
para conectarte con Google Cloud CLI. Por ejemplo:gcloud compute instances get-serial-port-output VM_NAME
Reemplaza VM_NAME por el nombre de la instancia que debes examinar.
Busca el resultado esperado en la tabla que precede a estos pasos.
Consulta los servicios cargados por versión del sistema operativo
En esta tabla, se muestra un resumen de los servicios que se deben cargar en las instancias con entornos invitados activos. Debes ejecutar el comando para mostrar la lista de los servicios después de conectarte a la instancia. Por lo tanto, solo puedes realizar esta verificación si tienes acceso a la instancia.
Sistema operativo Comando para mostrar la lista de los servicios 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
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 o posterior 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
Consulta los paquetes instalados por versión del sistema operativo
En esta tabla, se muestra un resumen de los paquetes que se deben instalar en las instancias con entornos invitados activos. Debes ejecutar el comando para mostrar la lista de los paquetes instalados después de conectarte a la instancia. Por lo tanto, solo puedes realizar esta verificación si tienes acceso a la instancia.
Para obtener más información sobre estos paquetes, consulta Componentes del entorno invitado.
Sistema operativo Comando para mostrar la lista de los paquetes 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
Qué sigue
- Lee las sugerencias para solucionar problemas.
- Obtén más información sobre cómo aplicar metadatos.
- Obtén información sobre las Llaves SSH.
Salvo que se indique lo contrario, el contenido de esta página está sujeto a la licencia Atribución 4.0 de Creative Commons, y los ejemplos de código están sujetos a la licencia Apache 2.0. Para obtener más información, consulta las políticas del sitio de Google Developers. Java es una marca registrada de Oracle o sus afiliados.
Última actualización: 2025-09-10 (UTC)
-