Questa pagina descrive come installare manualmente l'ambiente guest per le istanze di macchine virtuali (VM) che eseguono immagini personalizzate su Compute Engine.
Nella maggior parte dei casi, se utilizzi VM create utilizzando immagini pubbliche fornite da Google, non è necessario installare un ambiente guest. Per informazioni su quando utilizzare l'ambiente guest, consulta Quando installare o aggiornare manualmente l'ambiente guest.
Prima di installare manualmente l'ambiente guest, utilizza la procedura Convalida l'ambiente guest per verificare se l'ambiente guest è in esecuzione sulla VM. Se è disponibile sulla VM, ma è obsoleto, aggiornalo.
Prima di iniziare
-
Se non l'hai ancora fatto, configura l'autenticazione.
L'autenticazione è
il processo di verifica dell'identità per poter accedere a Google Cloud servizi e API.
Per eseguire codice o esempi da un ambiente di sviluppo locale, puoi autenticarti su
Compute Engine selezionando una delle seguenti opzioni:
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
-
Install the Google Cloud CLI. After installation, initialize the Google Cloud CLI by running the following command:
gcloud init
If you're using an external identity provider (IdP), you must first sign in to the gcloud CLI with your federated identity.
- Set a default region and zone.
Metodi di installazione
Esistono diversi modi per installare l'ambiente guest. Scegli una delle seguenti opzioni.
Strumento di importazione. È l'opzione consigliata. Tuttavia, tieni presente che lo strumento di importazione non solo installa l'ambiente guest, ma esegue anche altri aggiornamenti di configurazione sull'immagine, ad esempio la configurazione delle reti, del bootloader e l'installazione di Google Cloud CLI. Per istruzioni su come utilizzare lo strumento di importazione, consulta Come rendere un'immagine avviabile.
Lo strumento di importazione supporta una vasta gamma di sistemi operativi e versioni. Per saperne di più, consulta i dettagli del sistema operativo.
Installazione manuale Scegli una delle opzioni seguenti:
- Connettiti all'istanza utilizzando SSH o RDP e installa l'ambiente guest in loco
- Clona il disco di avvio e installa l'ambiente guest utilizzando uno script di avvio
Sistemi operativi supportati
Puoi installare manualmente l'ambiente guest sulle VM che utilizzano le versioni delle immagini sistema operativo che si trovano nel ciclo di vita di disponibilità generale (GA) o nella fase del ciclo di vita del supporto esteso. Per visualizzare un elenco delle versioni delle immagini sistema operativo e della relativa fase del ciclo di vita su Compute Engine, consulta Dettagli del sistema operativo.
Limitazioni
Non puoi installare manualmente o utilizzare lo strumento di importazione per installare ambienti guest per Fedora CoreOS e sistemi operativi container-optimized. Se hai bisogno di uno di questi sistemi operativi, ti consigliamo di utilizzare le immagini pubbliche, perché includono già un ambiente guest.
Installazione dell'ambiente guest
Installa l'ambiente guest in loco
Utilizza questo metodo per installare l'ambiente guest se puoi connetterti all'istanza target tramite SSH. Se non riesci a connetterti all'istanza per installare l'ambiente guest, puoi invece installarlo clonandone il disco di avvio e utilizzando uno script di avvio.
Questa procedura è utile per le immagini importate se puoi connetterti utilizzando l'autenticazione basata su password SSH. Può essere utilizzato anche per reinstallare l'ambiente guest se hai almeno un account utente con SSH basato su chiavi funzionale.
CentOS/RHEL/Rocky
- Assicurati che la versione del tuo sistema operativo sia supportata.
Determina la versione di CentOS/RHEL/Rocky Linux e crea il file del repository di origine,
/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
Aggiorna gli elenchi di pacchetti:
sudo yum makecache sudo yum updateinfo
Installa i pacchetti dell'ambiente guest:
sudo yum install -y google-compute-engine google-osconfig-agent
Riavvia l'istanza ed esamina il relativo log della console per assicurarti che l'ambiente guest venga caricato al riavvio.
Verifica di poterti connettere all'istanza tramite SSH.
Debian
- Assicurati che la versione del tuo sistema operativo sia supportata.
Installa la chiave GPG del repository pubblico:
curl https://packages.cloud.google.com/apt/doc/apt-key.gpg | sudo apt-key add -
Determina il nome della distribuzione Debian e crea il file dell'elenco di origine,
/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
Aggiorna gli elenchi di pacchetti:
sudo apt update
Installa i pacchetti dell'ambiente guest:
sudo apt install -y google-cloud-packages-archive-keyring sudo apt install -y google-compute-engine google-osconfig-agent
Riavvia l'istanza ed esamina il relativo log della console per assicurarti che l'ambiente guest venga caricato al riavvio.
Verifica di poterti connettere all'istanza tramite SSH.
Ubuntu
Assicurati che la versione del tuo sistema operativo sia supportata.
Attiva il repository Universe. Canonical pubblica i pacchetti per il proprio ambiente guest nel repository Universe.
sudo apt-add-repository universe
Aggiorna gli elenchi di pacchetti:
sudo apt update
Installa i pacchetti dell'ambiente guest:
sudo apt install -y google-compute-engine google-osconfig-agent
Riavvia l'istanza ed esamina il relativo log della console per assicurarti che l'ambiente guest venga caricato al riavvio.
Verifica di poterti connettere all'istanza tramite SSH.
SLES
Assicurati che la versione del tuo sistema operativo sia supportata.
Attiva il modulo Cloud pubblico.
product=$(sudo SUSEConnect --list-extensions | grep -o "sle-module-public-cloud.*") [[ -n "$product" ]] && sudo SUSEConnect -p "$product"
Aggiorna gli elenchi di pacchetti:
sudo zypper refresh
Installa i pacchetti dell'ambiente guest:
sudo zypper install -y google-guest-{agent,configs,oslogin} \ google-osconfig-agent sudo systemctl enable /usr/lib/systemd/system/google-*
Riavvia l'istanza ed esamina il relativo log della console per assicurarti che l'ambiente guest venga caricato al riavvio.
Verifica di poterti connettere all'istanza tramite SSH.
Windows
Prima di iniziare, assicurati che la versione del tuo sistema operativo sia supportata.
Per installare l'ambiente guest Windows, esegui i seguenti comandi in un prompt PowerShell elevato nella versione 3.0 o successiva. Il comando
Invoke-WebRequest
nelle istruzioni riportate di seguito richiede una versione di PowerShell superiore a 3.0.Scarica e installa
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 l'installazione,
GooGet
aggiunge contenuti all'ambiente di sistema. Al termine dell'installazione, avvia una nuova console PowerShell o fornisci il percorso completo del filegooget.exe
(C:\ProgramData\GooGet\googet.exe).Apri una nuova console e aggiungi il repository
google-compute-engine-stable
.googet addrepo google-compute-engine-stable https://packages.cloud.google.com/yuck/repos/google-compute-engine-stable
Installa i pacchetti principali dell'ambiente guest Windows.
googet -noconfirm install google-compute-engine-windows ` google-compute-engine-sysprep google-compute-engine-metadata-scripts ` google-compute-engine-vss google-osconfig-agent
Installa il pacchetto facoltativo dell'ambiente guest Windows.
googet -noconfirm install google-compute-engine-auto-updater
Utilizzo del comando
googet
.Per visualizzare i pacchetti disponibili, esegui il comando
googet available
.Per visualizzare i pacchetti installati, esegui il comando
googet installed
.Per eseguire l'aggiornamento all'ultima versione del pacchetto, esegui il comando
googet update
.Per visualizzare altri comandi, esegui
googet help
.
Clona il disco di avvio e utilizza lo script di avvio
Se non riesci a connetterti a un'istanza per installare manualmente l'ambiente guest, installalo utilizzando questa procedura, che include i seguenti passaggi, completabili nella console Google Cloud o in Cloud Shell.
Questo metodo mostra la procedura solo per le distribuzioni Linux. Per Windows, utilizza uno degli altri due metodi di installazione.
Utilizza Cloud Shell per eseguire questa procedura. Se non utilizzi Cloud Shell, installa il processore JSON a riga di comando
jq
. Puoi utilizzare questo processore per filtrare l'output di gcloud CLI.jq
è preinstallato in Cloud Shell.CentOS/RHEL/Rocky
Assicurati che la versione del tuo sistema operativo sia supportata.
Crea una nuova istanza da utilizzare come istanza di recupero. Assegnale il nome rescue. L'istanza di recupero non deve necessariamente eseguire lo stesso sistema operativo Linux dell'istanza problematica. Questo esempio utilizza Debian 9 nell'istanza di recupero.
Interrompi l'istanza problematica e crea una copia del suo disco di avvio.
Imposta un nome di variabile per l'istanza problematica. In questo modo è più facile fare riferimento all'istanza nei passaggi successivi.
export PROB_INSTANCE_NAME=VM_NAME
Sostituisci VM_NAME con il nome dell'istanza problematica.
Arresta l'istanza problematica.
gcloud compute instances stop "$PROB_INSTANCE_NAME"
Recupera il nome del disco di avvio per l'istanza problematica.
export PROB_INSTANCE_DISK="$(gcloud compute instances describe \ "$PROB_INSTANCE_NAME" --format='json' | jq -r \ '.disks[] | select(.boot == true) | .source')"
Crea uno snapshot del disco di avvio.
export DISK_SNAPSHOT="${PROB_INSTANCE_NAME}-snapshot" gcloud compute disks snapshot "$PROB_INSTANCE_DISK" \ --snapshot-names "$DISK_SNAPSHOT"
Crea un nuovo disco dallo snapshot.
export NEW_DISK="${PROB_INSTANCE_NAME}-new-disk" gcloud compute disks create "$NEW_DISK" \ --source-snapshot="$DISK_SNAPSHOT"
Elimina lo snapshot:
gcloud compute snapshots delete "$DISK_SNAPSHOT"
Collega il nuovo disco all'istanza di recupero e monta il volume root per l'istanza di recupero. Poiché questa procedura collega un solo disco aggiuntivo, l'identificatore del dispositivo del nuovo disco è /dev/sdb. Per impostazione predefinita, CentOS/RHEL/Rocky Linux utilizza il primo volume su un disco come volume root, pertanto l'identificatore del volume deve essere /dev/sdb1. Per casi personalizzati, utilizza
lsblk
per determinare l'identificatore del volume.gcloud compute instances attach-disk rescue --disk "$NEW_DISK"
Connettiti all'istanza di recupero tramite SSH:
gcloud compute ssh rescue
Esegui questi passaggi sull'istanza di recupero.
Monta il volume root del nuovo 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 lo script
rc.local
.cat <<'EOF' >/tmp/rc.local #!/bin/bash echo "== Installing Google guest environment for CentOS/RHEL/Rocky Linux ==" sleep 30 # Wait for network. echo "Determining CentOS/RHEL/Rocky Linux version..." eval $(grep VERSION_ID /etc/os-release) if [[ -z $VERSION_ID ]]; then echo "ERROR: Could not determine version of CentOS/RHEL/Rocky Linux." exit 1 fi echo "Updating repo file..." tee "/etc/yum.repos.d/google-cloud.repo" << EOM [google-compute-engine] name=Google Compute Engine baseurl=https://packages.cloud.google.com/yum/repos/google-compute-engine-el${VERSION_ID/.*}-x86_64-stable enabled=1 gpgcheck=1 repo_gpgcheck=0 gpgkey=https://packages.cloud.google.com/yum/doc/yum-key.gpg https://packages.cloud.google.com/yum/doc/rpm-package-key.gpg EOM echo "Running yum makecache..." yum makecache echo "Running yum updateinfo..." yum updateinfo echo "Running yum install google-compute-engine..." yum install -y google-compute-engine rpm -q google-compute-engine if [[ $? -ne 0 ]]; then echo "ERROR: Failed to install ${pkg}." fi echo "Removing this rc.local script." rm /etc/rc.d/rc.local # Move back any previous rc.local: if [[ -f "/etc/moved-rc.local" ]]; then echo "Restoring a previous rc.local script." mv "/etc/moved-rc.local" "/etc/rc.d/rc.local" fi echo "Restarting the instance..." reboot EOF
Sposta lo script
rc.local
nel volume root del nuovo disco e imposta le autorizzazioni. Metti da parte eventuali scriptrc.local
esistenti. Lo script temporaneo lo sostituirà al termine dell'operazione.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"
Smonta il volume root del nuovo disco.
sudo umount "$NEW_DISK_MOUNT_POINT" && sudo rmdir \ "$NEW_DISK_MOUNT_POINT"
Esci dalla sessione SSH e vai all'istanza di recupero.
Scollega il nuovo disco dall'istanza di recupero.
gcloud compute instances detach-disk rescue --disk "$NEW_DISK"
Crea un'istanza da usare come sostituzione. Quando crei l'istanza sostitutiva, specifica il nuovo disco come disco di avvio. Puoi creare l'istanza sostitutiva utilizzando la console Google Cloud :
Nella console Google Cloud , vai alla pagina Istanze VM.
Fai clic sull'istanza problematica, quindi su Crea simile.
Specifica un nome per l'istanza sostitutiva. Nella sezione Disco di avvio, fai clic su Cambia e poi su Dischi esistenti. Seleziona il nuovo disco.
Fai clic su Crea. L'istanza sostitutiva viene avviata automaticamente dopo la creazione.
All'avvio dell'istanza sostitutiva, lo script
rc.local
temporaneo viene eseguito e installa l'ambiente guest. Per monitorarne l'avanzamento, ispeziona i log della console per verificare se sono presenti righe generate dallo scriptrc.local
temporaneo. Per visualizzare i log, esegui questo comando:gcloud compute instances get-serial-port-output REPLACEMENT_VM_NAME
Sostituisci REPLACEMENT_VM_NAME con il nome assegnato all'istanza sostitutiva.
Anche l'istanza sostitutiva si riavvia automaticamente al termine dello script
rc.local
temporaneo. Durante il secondo riavvio, puoi ispezionare il log della console per assicurarti che l'ambiente guest venga caricato.Verifica di poterti connettere all'istanza tramite SSH.
Quando hai verificato che l'istanza sostitutiva funziona, puoi arrestare o eliminare quella problematica.
Debian
Assicurati che la versione del tuo sistema operativo sia supportata
Crea una nuova istanza da utilizzare come istanza di recupero. Assegnale il nome rescue. L'istanza di recupero non deve necessariamente eseguire lo stesso sistema operativo Linux dell'istanza problematica. Questo esempio utilizza Debian 9 nell'istanza di recupero.
Interrompi l'istanza problematica e crea una copia del suo disco di avvio.
Imposta un nome di variabile per l'istanza problematica. In questo modo è più facile fare riferimento all'istanza nei passaggi successivi.
export PROB_INSTANCE_NAME=VM_NAME
Sostituisci VM_NAME con il nome dell'istanza problematica.
Arresta l'istanza problematica.
gcloud compute instances stop "$PROB_INSTANCE_NAME"
Recupera il nome del disco di avvio per l'istanza problematica.
export PROB_INSTANCE_DISK="$(gcloud compute instances describe \ "$PROB_INSTANCE_NAME" --format='json' | jq -r \ '.disks[] | select(.boot == true) | .source')"
Crea uno snapshot del disco di avvio.
export DISK_SNAPSHOT="${PROB_INSTANCE_NAME}-snapshot" gcloud compute disks snapshot "$PROB_INSTANCE_DISK" \ --snapshot-names "$DISK_SNAPSHOT"
Crea un nuovo disco dallo snapshot.
export NEW_DISK="${PROB_INSTANCE_NAME}-new-disk" gcloud compute disks create "$NEW_DISK" \ --source-snapshot="$DISK_SNAPSHOT"
Elimina lo snapshot:
gcloud compute snapshots delete "$DISK_SNAPSHOT"
Collega il nuovo disco all'istanza di recupero e monta il volume root per l'istanza di recupero. Poiché questa procedura collega un solo disco aggiuntivo, l'identificatore del dispositivo del nuovo disco è /dev/sdb. Per impostazione predefinita, Debian utilizza il primo volume su un disco come volume root, pertanto l'identificatore del volume deve essere /dev/sdb1. Per casi personalizzati, utilizza
lsblk
per determinare l'identificatore del volume.gcloud compute instances attach-disk rescue --disk "$NEW_DISK"
Connettiti all'istanza di recupero tramite SSH:
gcloud compute ssh rescue
Esegui questi passaggi sull'istanza di recupero.
Monta il volume root del nuovo 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 lo script
rc.local
.cat <<'EOF' >/tmp/rc.local #!/bin/bash echo "== Installing Google guest environment for Debian ==" export DEBIAN_FRONTEND=noninteractive sleep 30 # Wait for network. echo "Determining Debian version..." eval $(grep VERSION_CODENAME /etc/os-release) if [[ -z $VERSION_CODENAME ]]; then echo "ERROR: Could not determine Debian version." exit 1 fi echo "Adding GPG key for Google cloud repo." curl https://packages.cloud.google.com/apt/doc/apt-key.gpg | apt-key add - echo "Updating repo file..." tee "/etc/apt/sources.list.d/google-cloud.list" << EOM deb http://packages.cloud.google.com/apt google-compute-engine-${VERSION_CODENAME}-stable main deb http://packages.cloud.google.com/apt google-cloud-packages-archive-keyring-${VERSION_CODENAME} main EOM echo "Running apt update..." apt update echo "Installing packages..." for pkg in google-cloud-packages-archive-keyring google-compute-engine; do echo "Running apt install ${pkg}..." apt install -y ${pkg} if [[ $? -ne 0 ]]; then echo "ERROR: Failed to install ${pkg}." fi done echo "Removing this rc.local script." rm /etc/rc.local # Move back any previous rc.local: if [[ -f "/etc/moved-rc.local" ]]; then echo "Restoring a previous rc.local script." mv "/etc/moved-rc.local" "/etc/rc.local" fi echo "Restarting the instance..." reboot EOF
Sposta lo script
rc.local
nel volume root del nuovo disco e imposta le autorizzazioni. Metti da parte eventuali scriptrc.local
esistenti. Lo script temporaneo lo sostituirà al termine dell'operazione.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"
Smonta il volume root del nuovo disco.
sudo umount "$NEW_DISK_MOUNT_POINT" && sudo rmdir "$NEW_DISK_MOUNT_POINT"
Esci dalla sessione SSH e vai all'istanza di recupero.
Scollega il nuovo disco dall'istanza di recupero.
gcloud compute instances detach-disk rescue --disk "$NEW_DISK"
Crea una nuova istanza da usare come sostituzione. Quando crei l'istanza sostitutiva, specifica il nuovo disco come disco di avvio. Puoi creare l'istanza sostitutiva utilizzando la console Google Cloud :
Nella console Google Cloud , vai alla pagina Istanze VM.
Fai clic sull'istanza problematica, quindi su Crea simile.
Specifica un nome per l'istanza sostitutiva. Nella sezione Disco di avvio, fai clic su Cambia e poi su Dischi esistenti. Seleziona il nuovo disco.
Fai clic su Crea. L'istanza sostitutiva viene avviata automaticamente dopo la creazione.
All'avvio dell'istanza sostitutiva, lo script
rc.local
temporaneo viene eseguito e installa l'ambiente guest. Per monitorarne l'avanzamento, ispeziona i log della console per verificare se sono presenti righe generate dallo scriptrc.local
temporaneo. Per visualizzare i log, esegui questo comando:gcloud compute instances get-serial-port-output REPLACEMENT_VM_NAME
Sostituisci REPLACEMENT_VM_NAME con il nome assegnato all'istanza sostitutiva.
Anche l'istanza sostitutiva si riavvia automaticamente al termine dello script
rc.local
temporaneo. Durante il secondo riavvio, puoi ispezionare il log della console per assicurarti che l'ambiente guest venga caricato.Verifica di poterti connettere all'istanza tramite SSH.
Quando hai verificato che l'istanza sostitutiva funziona, puoi arrestare o eliminare quella problematica.
Ubuntu
Assicurati che la versione del tuo sistema operativo sia supportata
Crea una nuova istanza da utilizzare come istanza di recupero. Assegnale il nome rescue. L'istanza di recupero non deve necessariamente eseguire lo stesso sistema operativo Linux dell'istanza problematica. Questo esempio utilizza Debian 9 nell'istanza di recupero.
Interrompi l'istanza problematica e crea una copia del suo disco di avvio.
Imposta un nome di variabile per l'istanza problematica. In questo modo è più facile fare riferimento all'istanza nei passaggi successivi.
export PROB_INSTANCE_NAME=VM_NAME
Sostituisci VM_NAME con il nome dell'istanza problematica.
Arresta l'istanza problematica.
gcloud compute instances stop "$PROB_INSTANCE_NAME"
Recupera il nome del disco di avvio per l'istanza problematica.
export PROB_INSTANCE_DISK="$(gcloud compute instances describe \ "$PROB_INSTANCE_NAME" --format='json' | jq -r \ '.disks[] | select(.boot == true) | .source')"
Crea uno snapshot del disco di avvio.
export DISK_SNAPSHOT="${PROB_INSTANCE_NAME}-snapshot" gcloud compute disks snapshot "$PROB_INSTANCE_DISK" \ --snapshot-names "$DISK_SNAPSHOT"
Crea un nuovo disco dallo snapshot.
export NEW_DISK="${PROB_INSTANCE_NAME}-new-disk" gcloud compute disks create "$NEW_DISK" \ --source-snapshot="$DISK_SNAPSHOT"
Elimina lo snapshot:
gcloud compute snapshots delete "$DISK_SNAPSHOT"
Collega il nuovo disco all'istanza di recupero e monta il volume root per l'istanza di recupero. Poiché questa procedura collega un solo disco aggiuntivo, l'identificatore del dispositivo del nuovo disco è /dev/sdb. Ubuntu etichetta il volume root 1 per impostazione predefinita, pertanto l'identificatore del volume dovrebbe essere /dev/sdb1. Per casi personalizzati, utilizza
lsblk
per determinare l'identificatore del volume.gcloud compute instances attach-disk rescue --disk "$NEW_DISK"
Connettiti all'istanza di recupero tramite SSH:
gcloud compute ssh rescue
Esegui questi passaggi sull'istanza di recupero.
Monta il volume root del nuovo 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 lo script
rc.local
.cat <<'EOF' >/tmp/rc.local #!/bin/bash echo "== Installing a Linux guest environment for Ubuntu ==" sleep 30 # Wait for network. echo "Running apt update..." apt update echo "Installing packages..." echo "Running apt install google-compute-engine..." apt install -y google-compute-engine if [[ $? -ne 0 ]]; then echo "ERROR: Failed to install ${pkg}." fi echo "Removing this rc.local script." rm /etc/rc.local # Move back any previous rc.local: if [[ -f "/etc/moved-rc.local" ]]; then echo "Restoring a previous rc.local script." mv "/etc/moved-rc.local" "/etc/rc.local" fi echo "Restarting the instance..." reboot EOF
Sposta lo script
rc.local
nel volume root del nuovo disco e imposta le autorizzazioni. Metti da parte eventuali scriptrc.local
esistenti. Lo script temporaneo lo sostituirà al termine dell'operazione.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"
Smonta il volume root del nuovo disco.
sudo umount "$NEW_DISK_MOUNT_POINT" && sudo rmdir "$NEW_DISK_MOUNT_POINT"
Esci dalla sessione SSH e vai all'istanza di recupero.
Scollega il nuovo disco dall'istanza di recupero.
gcloud compute instances detach-disk rescue --disk "$NEW_DISK"
Crea una nuova istanza da usare come sostituzione. Quando crei l'istanza sostitutiva, specifica il nuovo disco come disco di avvio. Puoi creare l'istanza sostitutiva utilizzando la console Google Cloud :
Nella console Google Cloud , vai alla pagina Istanze VM.
Fai clic sull'istanza problematica, quindi su Crea simile.
Specifica un nome per l'istanza sostitutiva. Nella sezione Disco di avvio, fai clic su Cambia e poi su Dischi esistenti. Seleziona il nuovo disco.
Fai clic su Crea. L'istanza sostitutiva viene avviata automaticamente dopo la creazione.
All'avvio dell'istanza sostitutiva, lo script
rc.local
temporaneo viene eseguito e installa l'ambiente guest. Per monitorarne l'avanzamento, ispeziona i log della console per verificare se sono presenti righe generate dallo scriptrc.local
temporaneo. Per visualizzare i log, esegui questo comando:gcloud compute instances get-serial-port-output REPLACEMENT_VM_NAME
Sostituisci REPLACEMENT_VM_NAME con il nome assegnato all'istanza sostitutiva.
Anche l'istanza sostitutiva si riavvia automaticamente al termine dello script
rc.local
temporaneo. Durante il secondo riavvio, puoi ispezionare il log della console per assicurarti che l'ambiente guest venga caricato.Verifica di poterti connettere all'istanza tramite SSH.
Quando hai verificato che l'istanza sostitutiva funziona, puoi arrestare o eliminare l'istanza problematica.
Aggiornamento dell'ambiente guest
Se ricevi un messaggio che indica che l'ambiente guest è obsoleto, aggiorna i pacchetti per il tuo sistema operativo.
CentOS/RHEL/Rocky
Per aggiornare i sistemi operativi CentOS, RHEL e Rocky Linux, esegui i seguenti comandi:
sudo yum makecache sudo yum install google-compute-engine google-compute-engine-oslogin \ google-guest-agent google-osconfig-agent
Debian
Per aggiornare i sistemi operativi Debian, esegui questi comandi:
sudo apt update sudo apt install google-compute-engine google-compute-engine-oslogin \ google-guest-agent google-osconfig-agent
Ubuntu
Per aggiornare i sistemi operativi Ubuntu, esegui questi comandi:
sudo apt update sudo apt install google-compute-engine google-compute-engine-oslogin \ google-guest-agent google-osconfig-agent
SLES
Per aggiornare i sistemi operativi SLES, esegui questi comandi:
sudo zypper refresh sudo zypper install google-guest-{agent,configs,oslogin} \ google-osconfig-agent
Windows
Per aggiornare i sistemi operativi Windows, esegui questo comando:
googet update
Convalida dell'ambiente guest
Puoi verificare che sia presente un ambiente guest ispezionando i log di sistema emessi nella console durante l'avvio di un'istanza o generando un elenco dei pacchetti installati durante la connessione all'istanza.
Log della console previsti per l'ambiente guest
Questa tabella riassume l'output previsto per i log della console emessi dalle istanze con ambienti guest funzionanti all'avvio.
Sistema operativo Gestione servizio Output previsto: CentOS/RHEL/Rocky Linux
Debian
Ubuntu
SLES
Container-Optimized OS 89 e versioni successivesystemd google_guest_agent: GCE Agent Started (version YYYYMMDD.NN) google_metadata_script_runner: Starting startup scripts (version YYYYMMDD.NN) OSConfigAgent Info: OSConfig Agent (version YYYYMMDD.NN)
Container-Optimized OS 85 e versioni precedenti 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)
Per visualizzare i log della console di un'istanza, segui questi passaggi.
Console
Nella console Google Cloud , vai alla pagina Istanze VM.
- Fai clic sull'istanza da esaminare.
- Riavvia o reimposta l'istanza.
- In Log, fai clic su Porta seriale 1 (console).
- Cerca l'output previsto facendo riferimento alla tabella precedente.
gcloud
- Riavvia o reimposta l'istanza.
Utilizza il sottocomando
gcloud compute instances get-serial-port-output
per connetterti utilizzando Google Cloud CLI. Ad esempio:gcloud compute instances get-serial-port-output VM_NAME
Sostituisci VM_NAME con il nome dell'istanza da esaminare.
Cerca l'output previsto facendo riferimento alla tabella precedente.
Servizi caricati per l'ambiente guest
Questa tabella riassume i servizi che devono essere caricati sulle istanze con ambienti guest funzionanti. Il comando per generare un elenco dei servizi deve essere eseguito dopo la connessione all'istanza, pertanto il controllo è possibile solo se hai accesso all'istanza.
Sistema operativo Comando per generare l'elenco dei servizi Output previsto: 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
Pacchetti installati per l'ambiente guest
Questa tabella riepiloga i pacchetti che devono essere installati sulle istanze con ambienti guest funzionanti. Il comando per generare un elenco dei pacchetti installati deve essere eseguito dopo la connessione all'istanza, pertanto il controllo può essere eseguito solo se hai accesso all'istanza.
Sistema operativo Comando per generare un elenco dei pacchetti Output previsto: 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
Passaggi successivi
- Leggi i suggerimenti per la risoluzione dei problemi.
- Scopri di più sull'applicazione dei metadati.
- Scopri di più sulle chiavi SSH.
Salvo quando diversamente specificato, i contenuti di questa pagina sono concessi in base alla licenza Creative Commons Attribution 4.0, mentre gli esempi di codice sono concessi in base alla licenza Apache 2.0. Per ulteriori dettagli, consulta le norme del sito di Google Developers. Java è un marchio registrato di Oracle e/o delle sue consociate.
Ultimo aggiornamento 2025-08-13 UTC.
-