En esta página se explica cómo instalar manualmente el entorno invitado en instancias de máquinas virtuales (VM). El entorno de invitado es un conjunto de secuencias de comandos, daemons y archivos binarios que las instancias necesitan para ejecutarse en Compute Engine. Para obtener más información, consulta Entorno de invitado.
En la mayoría de los casos, si usas imágenes de SO públicas proporcionadas por Google, el entorno invitado se incluye automáticamente. Para ver una lista completa de imágenes de SO que incluyen automáticamente el entorno invitado, consulta Detalles del sistema operativo.
Si el entorno invitado no está instalado o está obsoleto, instálalo o actualízalo. Para identificar estos casos, consulta Cuándo instalar o actualizar el entorno de invitado.
Antes de empezar
-
Si aún no lo has hecho, configura la autenticación.
La autenticación verifica tu identidad para acceder a Google Cloud servicios y APIs. Para ejecutar código o ejemplos 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 la CLI de Google Cloud ejecutando el siguiente comando:
gcloud init
Si utilizas un proveedor de identidades (IdP) externo, primero debes iniciar sesión en la CLI de gcloud con tu identidad federada.
- Set a default region and zone.
Cuándo instalar o actualizar el entorno de invitado
En la mayoría de los casos, no es necesario instalar ni actualizar manualmente el entorno invitado. Consulta las siguientes secciones para saber cuándo es posible que tengas que instalar o actualizar manualmente.
Comprobar los requisitos de instalación
Antes de instalar el entorno invitado, sigue el procedimiento para validar el entorno invitado y comprueba si se ejecuta en tu instancia. Si el entorno de invitado está disponible en tu instancia, pero está obsoleto, actualiza el entorno de invitado.
Es posible que tengas que instalar el entorno de invitado en las siguientes situaciones:
La imagen del SO proporcionada por Google que necesitas no tiene instalado el entorno invitado.
Importa una imagen personalizada o un disco virtual en Compute Engine y elige evitar la instalación automática del entorno invitado.
Cuando importas discos virtuales o imágenes personalizadas, puedes dejar que Compute Engine instale el entorno de invitado por ti. Sin embargo, si decides no instalar el entorno de invitado durante el proceso de importación, debes instalarlo manualmente.
Migra las VMs a Compute Engine con Migrate to Virtual Machines.
Para instalar el entorno de invitado, consulta Métodos de instalación.
Comprobar los requisitos de las actualizaciones
Es posible que tengas que 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 invitado para los discos SSD locales.
Para actualizar el entorno invitado, consulta Actualizar el entorno invitado.
Métodos de instalación
Puedes instalar el entorno de invitado de varias formas. 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 configurar redes, configurar el gestor de arranque e instalar la CLI de Google Cloud. Para obtener instrucciones, consulta el artículo Crear una imagen de arranque.
La herramienta de importación es compatible con una gran 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 estas opciones:
- Conéctate a tu instancia mediante SSH o RDP y instala el entorno invitado en el mismo lugar.
- Clona tu disco de arranque y instala el entorno invitado con una secuencia de comandos de inicio
Sistemas operativos compatibles
Puedes instalar o actualizar el entorno de invitado en las VMs que usen versiones de imágenes de SO en la fase del ciclo de vida de disponibilidad general (GA) o en la fase del ciclo de vida de asistencia ampliada.
Para consultar una lista de versiones de imágenes de SO y su fase del ciclo de vida en Compute Engine, consulta Detalles del sistema operativo.
Limitaciones
No puedes instalar manualmente ni usar la herramienta de importación para instalar entornos invitados en los sistemas operativos Fedora CoreOS y Container-Optimized OS (COS). En el caso de COS, Google recomienda usar las imágenes públicas proporcionadas por Google, que incluyen el entorno de invitado como componente principal.
Instalar el entorno de 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 mediante SSH o RDP, instala el entorno invitado en el mismo lugar.
- Si no puedes conectarte a la instancia, instala el entorno invitado clonando su disco de arranque y usando una secuencia de comandos de inicio.
Instalar el entorno de invitado en el mismo lugar
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, puedes instalar el entorno invitado clonando su disco de arranque y usando una secuencia de comandos de inicio.
Este procedimiento es útil para las imágenes importadas si puedes conectarte mediante la autenticación basada en contraseñas de SSH. También puedes usarlo para reinstalar el entorno invitado si tienes al menos una cuenta de usuario con una clave funcional de SSH.
CentOS/RHEL/Rocky
- Comprueba que la versión de tu sistema operativo sea compatible.
Determina la versión de CentOS, RHEL o Rocky Linux. A continuación, 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. A continuación, inspecciona su registro de la consola para asegurarte de que el entorno de invitado se carga cuando se reinicia.
Conéctate a la instancia mediante SSH para verificarlo. Para obtener instrucciones detalladas, consulta el artículo sobre cómo conectarse a la instancia mediante SSH.
Debian
- Comprueba 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. A continuación, crea el archivo de lista de fuentes:
/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. A continuación, inspecciona su registro de la consola para asegurarte de que el entorno de invitado se carga cuando se reinicia.
Conéctate a la instancia mediante SSH para verificarlo. Para obtener instrucciones detalladas, consulta el artículo sobre cómo conectarse a la instancia mediante SSH.
Ubuntu
Comprueba que la versión de tu sistema operativo sea compatible.
Habilita el repositorio Universe. Canonical publica paquetes para su entorno de invitado en el repositorio 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. A continuación, inspecciona su registro de la consola para asegurarte de que el entorno de invitado se carga cuando se reinicia.
Conéctate a la instancia mediante SSH para verificarlo. Para obtener instrucciones detalladas, consulta el artículo sobre cómo conectarse a la instancia mediante SSH.
SLES
Comprueba 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. A continuación, inspecciona su registro de la consola para asegurarte de que el entorno de invitado se carga cuando se reinicia.
Conéctate a la instancia mediante SSH para verificarlo. Para obtener instrucciones detalladas, consulta el artículo sobre cómo conectarse a la instancia mediante SSH.
Windows
Antes de empezar, comprueba que tu versión del sistema operativo sea compatible.
Para instalar el entorno invitado de Windows, ejecuta los siguientes comandos en un símbolo del sistema de PowerShell elevado de la versión 3.0 o posterior. El comando
Invoke-WebRequest
requiere PowerShell 3.0 o una versión posterior.Descarga e 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
añade contenido al entorno del sistema. Una vez completada la instalación, inicia una nueva consola de PowerShell. También puedes proporcionar la ruta completa del archivogooget.exe
(C:\ProgramData\GooGet\googet.exe).Abre una nueva consola y añade 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 de 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 de invitado de Windows.
googet -noconfirm install google-compute-engine-auto-updater
Usar 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 versión más reciente del paquete, ejecuta el comando
googet update
.Para ver más comandos, ejecuta
googet help
.
Clonar el disco de arranque y usar una secuencia de comandos de inicio
Si no puedes conectarte a una instancia para instalar manualmente el entorno invitado, sigue este procedimiento para instalarlo. Incluye los siguientes pasos, que puedes completar en la Google Cloud consola 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
jq
procesador JSON de línea de comandos. Este procesador filtra la salida de la CLI de gcloud. Cloud Shell tienejq
preinstalado.CentOS/RHEL/Rocky
Comprueba que la versión de tu sistema operativo sea compatible.
Crea una instancia que sirva como instancia de recuperación. Asigna el nombre rescue a esta instancia. Esta instancia de recuperación no tiene por qué ejecutar el mismo SO Linux que la instancia problemática. En este ejemplo se usa Debian 9 en la instancia de rescate.
Detén la instancia que da problemas y crea una copia de su disco de arranque.
Asigna un nombre de variable a la instancia problemática. Esta variable simplifica la referencia a la instancia en pasos posteriores.
export PROB_INSTANCE_NAME=VM_NAME
Sustituye VM_NAME por el nombre de la instancia que da problemas.
Detén la instancia que da problemas.
gcloud compute instances stop "$PROB_INSTANCE_NAME"
Obtén el nombre del disco de arranque de 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 captura 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 a partir de la instantánea.
export NEW_DISK="${PROB_INSTANCE_NAME}-new-disk" gcloud compute disks create "$NEW_DISK" \ --source-snapshot="$DISK_SNAPSHOT"
Elimina la captura:
gcloud compute snapshots delete "$DISK_SNAPSHOT"
Conecta el nuevo disco a la instancia de rescate y monta el volumen raíz de la instancia de rescate. Como este procedimiento solo vincula un disco adicional, el identificador del dispositivo del nuevo disco es /dev/sdb. CentOS, RHEL y Rocky Linux usan el primer volumen de un disco como volumen raíz de forma predeterminada. Por lo tanto, el identificador de volumen debe 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 rescate mediante SSH:
gcloud compute ssh rescue
Sigue estos pasos en la instancia de rescate.
Monta el volumen raíz del nuevo 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"
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
, mueve el archivo temporalrc.local
al disco montado y define los permisos para que el archivo temporal se pueda ejecutar al arrancar. La secuencia de comandos temporal sustituye a la original cuando termina de iniciarse. 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"
Desmonta el volumen raíz del nuevo disco.
sudo umount "$NEW_DISK_MOUNT_POINT" && sudo rmdir \ "$NEW_DISK_MOUNT_POINT"
Cierra la sesión SSH de la instancia de rescate.
Desconecta el nuevo disco de la instancia de rescate.
gcloud compute instances detach-disk rescue --disk "$NEW_DISK"
Crea una instancia para que sirva de sustitución. Cuando crees la instancia de sustitución, especifica el nuevo disco como disco de arranque. Puedes crear la instancia de sustitución con la Google Cloud consola:
En la consola de Google Cloud , ve a la página Instancias de VM.
Haz clic en la instancia que da problemas y, a continuación, en Crear similar.
Especifica un nombre para la instancia de sustitución. En la sección Disco de arranque, haz clic en Cambiar y, a continuación, en Discos existentes. Selecciona el nuevo disco.
Haz clic en Crear. La instancia de sustitución se inicia automáticamente después de crearse.
Mientras se inicia la instancia de sustitución, se ejecuta la secuencia de comandos temporal
rc.local
e instala el entorno de invitado. Para ver el progreso de esta secuencia de comandos, inspecciona los registros de la consola para ver las líneas emitidas por la secuencia de comandos temporalrc.local
. Para ver los registros, ejecuta el siguiente comando:gcloud compute instances get-serial-port-output REPLACEMENT_VM_NAME
Sustituye REPLACEMENT_VM_NAME por el nombre que hayas asignado a la instancia de sustitución.
La instancia de sustitución se reinicia automáticamente 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 carga el entorno invitado.Comprueba que puedes conectarte a la instancia mediante SSH.
Una vez que hayas verificado que la instancia de sustitución funciona correctamente, puedes detener o eliminar la instancia problemática.
Debian
Comprueba que la versión de tu sistema operativo sea compatible.
Crea una instancia que sirva como instancia de recuperación. Asigna el nombre rescue a esta instancia. Esta instancia de recuperación no tiene por qué ejecutar el mismo SO Linux que la instancia problemática. En este ejemplo se usa Debian 9 en la instancia de rescate.
Detén la instancia que da problemas y crea una copia de su disco de arranque.
Asigna un nombre de variable a la instancia problemática. Esta variable simplifica la referencia a la instancia en pasos posteriores.
export PROB_INSTANCE_NAME=VM_NAME
Sustituye VM_NAME por el nombre de la instancia que da problemas.
Detén la instancia que da problemas.
gcloud compute instances stop "$PROB_INSTANCE_NAME"
Obtén el nombre del disco de arranque de 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 captura 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 a partir de la instantánea.
export NEW_DISK="${PROB_INSTANCE_NAME}-new-disk" gcloud compute disks create "$NEW_DISK" \ --source-snapshot="$DISK_SNAPSHOT"
Elimina la captura:
gcloud compute snapshots delete "$DISK_SNAPSHOT"
Conecta el nuevo disco a la instancia de rescate y monta el volumen raíz de la instancia de rescate. Como este procedimiento solo vincula un disco adicional, el identificador del dispositivo del nuevo disco es /dev/sdb. Debian usa el primer volumen de un disco como volumen raíz de forma predeterminada, por lo que el identificador de volumen debe 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 rescate mediante SSH:
gcloud compute ssh rescue
Sigue estos pasos en la instancia de rescate.
Monta el volumen raíz del nuevo 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"
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
, mueve el archivo temporalrc.local
al disco montado y define los permisos para que el archivo temporal se pueda ejecutar al arrancar. La secuencia de comandos temporal sustituye a la original cuando termina de iniciarse. 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"
Desmonta el volumen raíz del nuevo disco.
sudo umount "$NEW_DISK_MOUNT_POINT" && sudo rmdir "$NEW_DISK_MOUNT_POINT"
Cierra la sesión SSH de la instancia de rescate.
Desconecta el nuevo disco de la instancia de rescate.
gcloud compute instances detach-disk rescue --disk "$NEW_DISK"
Crea una instancia que sustituya a la anterior. Cuando crees la instancia de sustitución, especifica el nuevo disco como disco de arranque. Puedes crear la instancia de sustitución con la Google Cloud consola:
En la consola de Google Cloud , ve a la página Instancias de VM.
Haz clic en la instancia que da problemas y, a continuación, en Crear similar.
Especifica un nombre para la instancia de sustitución. En la sección Disco de arranque, haz clic en Cambiar y, a continuación, en Discos existentes. Selecciona el nuevo disco.
Haz clic en Crear. La instancia de sustitución se inicia automáticamente después de crearse.
Mientras se inicia la instancia de sustitución, se ejecuta la secuencia de comandos temporal
rc.local
e instala el entorno de invitado. Para ver el progreso de esta secuencia de comandos, inspecciona los registros de la consola para ver las líneas emitidas por la secuencia de comandos temporalrc.local
. Para ver los registros, ejecuta el siguiente comando:gcloud compute instances get-serial-port-output REPLACEMENT_VM_NAME
Sustituye REPLACEMENT_VM_NAME por el nombre que asignaste a la instancia de sustitución.
La instancia de sustitución se reinicia automáticamente 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 carga el entorno invitado.Comprueba que puedes conectarte a la instancia mediante SSH.
Una vez que hayas verificado que la instancia de sustitución funciona correctamente, puedes detener o eliminar la instancia problemática.
Ubuntu
Comprueba que la versión de tu sistema operativo sea compatible.
Crea una instancia que sirva como instancia de recuperación. Asigna el nombre rescue a esta instancia. Esta instancia de recuperación no tiene por qué ejecutar el mismo SO Linux que la instancia problemática. En este ejemplo se usa Debian 9 en la instancia de rescate.
Detén la instancia que da problemas y crea una copia de su disco de arranque.
Asigna un nombre de variable a la instancia problemática. Esta variable simplifica la referencia a la instancia en pasos posteriores.
export PROB_INSTANCE_NAME=VM_NAME
Sustituye VM_NAME por el nombre de la instancia que da problemas.
Detén la instancia que da problemas.
gcloud compute instances stop "$PROB_INSTANCE_NAME"
Obtén el nombre del disco de arranque de 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 captura 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 a partir de la instantánea.
export NEW_DISK="${PROB_INSTANCE_NAME}-new-disk" gcloud compute disks create "$NEW_DISK" \ --source-snapshot="$DISK_SNAPSHOT"
Elimina la captura:
gcloud compute snapshots delete "$DISK_SNAPSHOT"
Conecta el nuevo disco a la instancia de rescate y monta el volumen raíz de la instancia de rescate. Como este procedimiento solo vincula un disco adicional, el identificador del dispositivo del nuevo disco es /dev/sdb. Ubuntu etiqueta su volumen raíz 1 de forma predeterminada, por lo que el identificador de volumen debe 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 rescate mediante SSH:
gcloud compute ssh rescue
Sigue estos pasos en la instancia de rescate.
Monta el volumen raíz del nuevo 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"
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
, mueve el archivo temporalrc.local
al disco montado y define los permisos para que el archivo temporal se pueda ejecutar al arrancar. La secuencia de comandos temporal sustituye a la original cuando termina de iniciarse. 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"
Desmonta el volumen raíz del nuevo disco.
sudo umount "$NEW_DISK_MOUNT_POINT" && sudo rmdir "$NEW_DISK_MOUNT_POINT"
Cierra la sesión SSH de la instancia de rescate.
Desconecta el nuevo disco de la instancia de rescate.
gcloud compute instances detach-disk rescue --disk "$NEW_DISK"
Crea una instancia que sustituya a la anterior. Cuando crees la instancia de sustitución, especifica el nuevo disco como disco de arranque. Puedes crear la instancia de sustitución con la Google Cloud consola:
En la consola de Google Cloud , ve a la página Instancias de VM.
Haz clic en la instancia que da problemas y, a continuación, en Crear similar.
Especifica un nombre para la instancia de sustitución. En la sección Disco de arranque, haz clic en Cambiar y, a continuación, en Discos existentes. Selecciona el nuevo disco.
Haz clic en Crear. La instancia de sustitución se inicia automáticamente después de crearse.
Mientras se inicia la instancia de sustitución, se ejecuta la secuencia de comandos temporal
rc.local
e instala el entorno de invitado. Para ver el progreso de esta secuencia de comandos, inspecciona los registros de la consola para ver las líneas emitidas por la secuencia de comandos temporalrc.local
. Para ver los registros, ejecuta el siguiente comando:gcloud compute instances get-serial-port-output REPLACEMENT_VM_NAME
Sustituye REPLACEMENT_VM_NAME por el nombre que hayas asignado a la instancia de sustitución.
La instancia de sustitución se reinicia automáticamente 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 carga el entorno invitado.Comprueba que puedes conectarte a la instancia mediante SSH.
Una vez que hayas verificado que la instancia de sustitución funciona correctamente, puedes detener o eliminar la instancia problemática.
Actualizar el entorno de invitado
Si recibes un mensaje que indica que el entorno invitado está obsoleto, actualiza los paquetes de 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
Para actualizar los sistemas operativos Debian, ejecuta los siguientes comandos:
sudo apt update sudo apt install google-compute-engine google-compute-engine-oslogin \ google-guest-agent google-osconfig-agent
Ubuntu
Para actualizar los sistemas operativos Ubuntu, ejecuta los siguientes comandos:
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
Validar el entorno de invitado
Puedes comprobar si se ha instalado un entorno invitado inspeccionando los registros del sistema que se emiten en la consola mientras se inicia una instancia o enumerando los paquetes instalados mientras estás conectado a la instancia.
Ver los registros de consola esperados del entorno invitado
En esta tabla se resume la salida esperada de los registros de consola emitidos por las instancias con entornos de invitado que funcionan correctamente al iniciarse.
Sistema operativo Gestión de servicios 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)
Para ver los registros de la consola de una instancia, sigue estos pasos.
Consola
En la consola de Google Cloud , ve a la página Instancias de VM.
- Selecciona la instancia que quieras examinar.
- Reinicia o restablece la instancia.
- En Registros, haz clic en Puerto 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
Sustituye VM_NAME por el nombre de la instancia que quieras examinar.
Busca el resultado esperado en la tabla que precede a estos pasos.
Ver los servicios cargados por versión del sistema operativo
En esta tabla se resumen los servicios que se deben cargar en las instancias con entornos de invitado operativos. Debes ejecutar el comando para enumerar los servicios después de conectarte a la instancia. Por lo tanto, solo puedes realizar esta comprobación si tienes acceso a la instancia.
Sistema operativo Comando para mostrar 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+ 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
Ver los paquetes instalados por versión del sistema operativo
En esta tabla se resumen los paquetes que se deben instalar en las instancias con entornos de invitado operativos. Debes ejecutar el comando para enumerar los paquetes instalados después de conectarte a la instancia. Por lo tanto, solo puedes realizar esta comprobación si tienes acceso a la instancia.
Para obtener más información sobre estos paquetes, consulta Componentes del entorno de invitado.
Sistema operativo Comando para enumerar 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
Siguientes pasos
- Consulta los consejos para solucionar problemas.
- Consulta más información sobre cómo aplicar metadatos.
- Consulta información sobre las claves SSH.
A menos que se indique lo contrario, el contenido de esta página está sujeto a la licencia Reconocimiento 4.0 de Creative Commons y las muestras de código están sujetas a la licencia Apache 2.0. Para obtener más información, consulta las políticas del sitio web de Google Developers. Java es una marca registrada de Oracle o sus afiliados.
Última actualización: 2025-09-10 (UTC).
-