En esta página, se describe cómo instalar de forma manual el entorno de invitado para instancias de máquinas virtuales (VM) que ejecutan imágenes personalizadas en Compute Engine.
En la mayoría de los casos, si usas las VM creadas con las imágenes públicas que proporciona Google, no debes instalar un entorno invitado. Para obtener información sobre cuándo usar el entorno invitado, consulta Cuándo instalar o actualizar de forma manual el entorno invitado.
Antes de instalar de forma manual el entorno invitado, usa el procedimiento Valida el entorno invitado para comprobar si el entorno invitado se está ejecutando en tu VM. Si el entorno invitado está disponible en la VM, pero está desactualizado, actualiza el entorno invitado.
Antes de comenzar
-
Si deseas usar los ejemplos de Google Cloud CLI en esta guía, haz lo siguiente:
- Puedes instalar herramientas locales o usar Cloud Shell.
- Usa herramientas locales
- Instala Google Cloud CLI.
- Instala el procesador JSON de la línea de comandos de jq:
puedes usar este procesador para filtrar el resultado de
gcloud
.
- Usa Cloud Shell, que tiene preinstalados la CLI de gcloud y
jq
: Abrir Cloud Shell
- Usa herramientas locales
- Configura las propiedades predeterminadas.
gcloud config set compute/zone ZONE
gcloud config set compute/region REGION
gcloud config set project PROJECT
Métodos de instalación
Hay varias formas de instalar el entorno invitado. Elige una de las siguientes opciones:
Herramienta de importación. Es la opción recomendada. Sin embargo, ten en cuenta que la herramienta de importación instala el entorno invitado y, también, otras actualizaciones de configuración en la imagen, como la configuración de las redes, la configuración del bootloader y la instalación de Google Cloud CLI. A fin de obtener instrucciones para usar la herramienta de importación, revisa la documentación sobre 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 Detalles de los sistemas operativos.
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.
La instalación manual del entorno de invitado está disponible para los siguientes sistemas operativos:
- Ubuntu 16.04 o superior
- CentOS 7 o una versión posterior
- SUSE Linux Enterprise Server (SLES) 12 SP4 o una versión posterior y 15 SP1 o una versión posterior
- Red Hat Enterprise Linux (RHEL) 7 o una versión posterior
- Debian 9 o una versión posterior
- Windows Server 2019
- Windows Server 2016
- Windows Server 2012 R2
- Versiones anuales del canal de Windows Server
- SQL Server en Windows Server
- Windows lleva tu propia licencia:
- Windows 8
- Windows 10
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. Si necesitas uno de estos sistemas operativos, te recomendamos que uses las imágenes públicas, dado que un entorno de invitado se incluye como una parte principal de todas las imágenes públicas.
Instala el entorno de invitado
Instala el entorno de invitado in situ
Usa este método para instalar el entorno de invitado si puedes conectarte a la instancia de destino mediante SSH. Si no puedes hacerlo, clona el disco de arranque y usa una secuencia de comandos de inicio para lograrlo.
Este procedimiento resulta útil para imágenes importadas si puedes conectarte mediante la autenticación basada en contraseña de SSH. También se puede usar para reinstalar el entorno de invitado si tienes al menos una cuenta de usuario con SSH funcional basado en claves.
CentOS/RHEL
- Asegúrate de que la versión del sistema operativo sea compatible.
Determina la versión de CentOS/RHEL y crea el archivo de 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 y, luego, inspecciona el registro de la consola para asegurarte de que el entorno invitado se cargue cuando comience a crearse la copia de seguridad.
Verifica si puedes conectarte a la instancia mediante SSH.
Debian
- Asegúrate de que la versión del sistema operativo sea compatible.
Instala la clave GPG pública del repositorio:
curl https://packages.cloud.google.com/apt/doc/apt-key.gpg | sudo apt-key add -
Determina el nombre de la distribución de Debian y 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 y, luego, inspecciona el registro de la consola para asegurarte de que el entorno invitado se cargue cuando comience a crearse la copia de seguridad.
Verifica si puedes conectarte a la instancia mediante SSH.
Ubuntu
Asegúrate de que la versión del 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 y, luego, inspecciona el registro de la consola para asegurarte de que el entorno invitado se cargue cuando comience a crearse la copia de seguridad.
Verifica si puedes conectarte a la instancia mediante SSH.
SLES
Asegúrate de que la versión del 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 y, luego, inspecciona el registro de la consola para asegurarte de que el entorno invitado se cargue cuando comience a crearse la copia de seguridad.
Verifica si puedes conectarte a la instancia mediante SSH.
Windows
Antes de comenzar, asegúrate de que la versión del 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
en las instrucciones a continuación requiere una versión de PowerShell superior a 3.0.
Descarga y, luego, instala
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 la instalación,
GooGet
agrega contenido al entorno del sistema. Una vez completada la instalación, inicia una nueva consola de PowerShell o 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 se pueden realizar en Google Cloud Console o Cloud Shell.
Este método muestra el procedimiento solo para distribuciones de Linux. En Windows, usa uno de los otros dos métodos de instalación.
Usa Cloud Shell para ejecutar este procedimiento:
CentOS/RHEL
Asegúrate de que la 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. Esto facilita 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 usa el primer volumen de un disco como el volumen raíz de forma predeterminada, por lo que el identificador de volumen debería ser /dev/sdb1. Para casos personalizados, usa
lsblk
a fin de 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 ==" 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
Mueve la secuencia de comandos
rc.local
al volumen raíz del disco nuevo y establece los permisos. Mueve cualquier secuencia de comandosrc.local
existente a un lado. La secuencia de comandos temporal la reemplazará cuando finalice.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 Google Cloud Console:
En Google Cloud Console, 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.
Cuando estés seguro de que la instancia de reemplazo es funcional, puedes detener o borrar la instancia problemática.
Debian
Asegúrate de que la 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. Esto facilita 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 manera predeterminada, por lo que el identificador de volumen debería ser /dev/sdb1. Para casos personalizados, usa
lsblk
a fin de 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
Mueve la secuencia de comandos
rc.local
al volumen raíz del disco nuevo y establece los permisos. Mueve cualquier secuencia de comandosrc.local
existente a un lado. La secuencia de comandos temporal la reemplazará cuando finalice.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 Google Cloud Console:
En Google Cloud Console, 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.
Cuando estés seguro de que la instancia de reemplazo es funcional, puedes detener o borrar la instancia problemática.
Ubuntu
Asegúrate de que la 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. Esto facilita 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 manera predeterminada, por lo que el identificador de volumen debería ser /dev/sdb1. Para casos personalizados, usa
lsblk
a fin de 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
Mueve la secuencia de comandos
rc.local
al volumen raíz del disco nuevo y establece los permisos. Mueve cualquier secuencia de comandosrc.local
existente a un lado. La secuencia de comandos temporal la reemplazará cuando finalice.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 Google Cloud Console:
En Google Cloud Console, 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.
Cuando estés seguro de 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.
CentOS/RHEL
Para actualizar los sistemas operativos CentOS y RHEL, 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 invitado
Para determinar la presencia de un entorno invitado, puedes inspeccionar los registros del sistema que se emiten a la consola cuando se inicia una instancia o crear una lista de los paquetes instalados cuando te conectas a la instancia.
Registros esperados de la consola para el entorno de 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 Debian Ubuntu SLES Container-Optimized OS 89 y versiones posteriores |
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 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 Google Cloud Console, ve a la página Instancias de VM.
- Haz clic en la instancia que debes examinar.
- Reinicia o restablece la instancia.
- En Registros, haz clic en Puerto en serie 1 (consola).
- Usa la tabla anterior como referencia para buscar el resultado esperado.
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.
Usa la tabla anterior como referencia para buscar el resultado esperado.
Servicios cargados para el entorno de invitado
En esta tabla, se muestra un resumen de los servicios que se deben cargar en las instancias con entornos invitados activos. El comando para mostrar la lista de los servicios se debe ejecutar después de que te conectas a la instancia; por lo tanto, esta verificación solo se puede realizar si tienes acceso a ella.
Sistema operativo | Comando para mostrar la lista de los servicios | Resultado esperado |
---|---|---|
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 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 |
Paquetes instalados para el entorno de invitado
En esta tabla, se muestra un resumen de los paquetes que se deben instalar en las instancias con entornos invitados activos. El comando para mostrar la lista de los paquetes instalados se debe ejecutar después de que te conectas a la instancia; por lo tanto, esta verificación solo se puede realizar si tienes acceso a ella.
Sistema operativo | Comando para mostrar la lista de los paquetes | Resultado esperado |
---|---|---|
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 |
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.