Menginstal lingkungan tamu


Halaman ini menjelaskan cara menginstal lingkungan tamu secara manual di instance virtual machine (VM). Lingkungan tamu adalah kumpulan skrip, daemon, dan biner yang diperlukan instance untuk berjalan di Compute Engine. Untuk mengetahui informasi selengkapnya, lihat Lingkungan tamu.

Pada sebagian besar kasus, jika Anda menggunakan image OS publik yang disediakan Google, lingkungan tamu akan otomatis disertakan. Untuk mengetahui daftar lengkap image OS yang otomatis menyertakan lingkungan tamu, lihat Detail sistem operasi.

Jika lingkungan tamu tidak diinstal atau sudah usang, instal atau update. Untuk mengidentifikasi skenario ini, lihat Kapan harus menginstal atau mengupdate lingkungan tamu.

Sebelum memulai

  • Jika Anda belum melakukannya, siapkan autentikasi. Autentikasi memverifikasi identitas Anda untuk mengakses Google Cloud layanan dan API. Untuk menjalankan kode atau sampel dari lingkungan pengembangan lokal, Anda dapat melakukan autentikasi ke Compute Engine dengan memilih salah satu opsi berikut:

    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

    1. Menginstal Google Cloud CLI. Setelah penginstalan, lakukan inisialisasi Google Cloud CLI dengan menjalankan perintah berikut:

      gcloud init

      Jika Anda menggunakan penyedia identitas (IdP) eksternal, Anda harus login ke gcloud CLI dengan identitas gabungan Anda terlebih dahulu.

    2. Set a default region and zone.

Kapan harus menginstal atau mengupdate lingkungan tamu

Pada umumnya, Anda tidak perlu menginstal atau mengupdate lingkungan tamu secara manual. Tinjau bagian berikut untuk mengetahui kapan Anda mungkin perlu menginstal atau mengupdate secara manual.

Memeriksa persyaratan penginstalan

Sebelum menginstal lingkungan tamu, gunakan prosedur Memvalidasi lingkungan tamu untuk memeriksa apakah lingkungan tamu berjalan di instance Anda. Jika lingkungan tamu tersedia di instance Anda, tetapi sudah tidak berlaku, perbarui lingkungan tamu.

Anda mungkin perlu menginstal lingkungan tamu dalam situasi berikut:

  • Image OS yang disediakan Google yang Anda perlukan tidak menginstal lingkungan tamu.

  • Anda mengimpor image kustom atau disk virtual ke Compute Engine dan memilih untuk mencegah penginstalan otomatis lingkungan tamu.

    Saat mengimpor disk virtual atau image kustom, Anda dapat mengizinkan Compute Engine menginstal lingkungan tamu untuk Anda. Namun, jika Anda memilih untuk tidak menginstal lingkungan tamu selama proses impor, Anda harus menginstal lingkungan tamu secara manual.

  • Anda memigrasikan VM ke Compute Engine menggunakan Migrate to Virtual Machines.

Untuk menginstal lingkungan tamu, lihat Metode penginstalan.

Memeriksa persyaratan update

Anda mungkin perlu memperbarui lingkungan tamu dalam situasi berikut:

Untuk mengupdate lingkungan tamu, lihat Mengupdate lingkungan tamu.

Metode penginstalan

Anda dapat menginstal lingkungan tamu dengan beberapa cara. Pilih salah satu opsi berikut:

Sistem operasi yang didukung

Anda dapat menginstal atau mengupdate lingkungan tamu di VM yang menggunakan versi image OS dalam siklus proses ketersediaan umum (GA) atau tahap siklus proses dukungan yang diperpanjang.

Untuk meninjau daftar versi image OS dan tahap siklus prosesnya di Compute Engine, lihat Detail sistem operasi.

Batasan

Anda tidak dapat menginstal atau menggunakan alat impor secara manual untuk menginstal lingkungan tamu untuk sistem operasi Fedora CoreOS dan Container-Optimized (COS). Untuk COS, Google merekomendasikan penggunaan image publik yang disediakan Google, yang mencakup lingkungan tamu sebagai komponen inti.

Menginstal lingkungan tamu

Untuk menginstal lingkungan tamu secara manual, pilih salah satu metode berikut, bergantung pada kemampuan Anda untuk terhubung ke instance:

Menginstal lingkungan tamu di tempat

Gunakan metode ini untuk menginstal lingkungan tamu jika Anda dapat terhubung ke instance target menggunakan SSH. Jika Anda tidak dapat terhubung ke instance untuk menginstal lingkungan tamu, Anda dapat menginstal lingkungan tamu dengan meng-clone boot disk-nya dan menggunakan skrip startup.

Prosedur ini berguna untuk gambar yang diimpor jika Anda dapat terhubung menggunakan autentikasi berbasis sandi SSH. Anda juga dapat menggunakannya untuk menginstal ulang lingkungan tamu jika Anda memiliki setidaknya satu akun pengguna dengan SSH berbasis kunci yang berfungsi.

CentOS/RHEL/Rocky

  1. Pastikan versi sistem operasi Anda didukung.
  2. Tentukan versi CentOS/RHEL/Rocky Linux. Kemudian, buat file repositori sumber, /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
    
  3. Perbarui daftar paket:

    sudo yum makecache
    sudo yum updateinfo
    
  4. Instal paket lingkungan tamu:

    sudo yum install -y google-compute-engine google-osconfig-agent
    
  5. Mulai ulang instance. Kemudian, periksa log konsolnya untuk memastikan lingkungan tamu dimuat saat dimulai kembali.

  6. Hubungkan ke instance menggunakan SSH untuk memverifikasi. Untuk mendapatkan petunjuk mendetail, lihat menghubungkan ke instance menggunakan SSH.

Debian

  1. Pastikan versi sistem operasi Anda didukung.
  2. Instal kunci GPG repositori publik:

    curl https://packages.cloud.google.com/apt/doc/apt-key.gpg | sudo apt-key add -
  3. Tentukan nama distro Debian. Kemudian, buat file daftar sumber, /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
    
  4. Perbarui daftar paket:

    sudo apt update
  5. Instal paket lingkungan tamu:

    sudo apt install -y google-cloud-packages-archive-keyring
    sudo apt install -y google-compute-engine google-osconfig-agent
    
  6. Mulai ulang instance. Kemudian, periksa log konsolnya untuk memastikan lingkungan tamu dimuat saat dimulai kembali.

  7. Hubungkan ke instance menggunakan SSH untuk memverifikasi. Untuk mendapatkan petunjuk mendetail, lihat menghubungkan ke instance menggunakan SSH.

Ubuntu

  1. Pastikan versi sistem operasi Anda didukung.

  2. Aktifkan repositori Universe. Canonical memublikasikan paket untuk lingkungan tamu ke repositori Universe.

    sudo apt-add-repository universe
  3. Perbarui daftar paket:

    sudo apt update
  4. Instal paket lingkungan tamu:

    sudo apt install -y google-compute-engine google-osconfig-agent
    
  5. Mulai ulang instance. Kemudian, periksa log konsolnya untuk memastikan lingkungan tamu dimuat saat dimulai kembali.

  6. Hubungkan ke instance menggunakan SSH untuk memverifikasi. Untuk mendapatkan petunjuk mendetail, lihat menghubungkan ke instance menggunakan SSH.

SLES

  1. Pastikan versi sistem operasi Anda didukung.

  2. Aktifkan Public Cloud Module

    product=$(sudo SUSEConnect --list-extensions | grep -o "sle-module-public-cloud.*")
    [[ -n "$product" ]] && sudo SUSEConnect -p "$product"
    
  3. Perbarui daftar paket:

    sudo zypper refresh
  4. Instal paket lingkungan tamu:

    sudo zypper install -y google-guest-{agent,configs,oslogin} \
    google-osconfig-agent
    sudo systemctl enable /usr/lib/systemd/system/google-*
    
  5. Mulai ulang instance. Kemudian, periksa log konsolnya untuk memastikan lingkungan tamu dimuat saat dimulai kembali.

  6. Hubungkan ke instance menggunakan SSH untuk memverifikasi. Untuk mendapatkan petunjuk mendetail, lihat menghubungkan ke instance menggunakan SSH.

Windows

Sebelum memulai, pastikan versi sistem operasi Anda didukung.

Untuk menginstal lingkungan tamu Windows, jalankan perintah berikut di command prompt PowerShell versi 3.0 atau yang lebih tinggi dengan hak istimewa. Perintah Invoke-WebRequest memerlukan PowerShell versi 3.0 atau yang lebih tinggi.

  1. Download dan instal 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"
    

    Selama penginstalan, GooGet menambahkan konten ke lingkungan sistem. Setelah penginstalan selesai, luncurkan konsol PowerShell baru. Atau, berikan jalur lengkap ke file googet.exe (C:\ProgramData\GooGet\googet.exe).

  2. Buka konsol baru dan tambahkan repositori google-compute-engine-stable.

    googet addrepo google-compute-engine-stable https://packages.cloud.google.com/yuck/repos/google-compute-engine-stable
  3. Instal paket lingkungan tamu Windows inti.

    googet -noconfirm install google-compute-engine-windows `
    google-compute-engine-sysprep google-compute-engine-metadata-scripts `
    google-compute-engine-vss google-osconfig-agent
    
  4. Instal paket lingkungan tamu Windows opsional.

    googet -noconfirm install google-compute-engine-auto-updater

    Menggunakan perintah googet.

    Untuk melihat paket yang tersedia, jalankan perintah googet available.

    Untuk melihat paket yang diinstal, jalankan perintah googet installed.

    Untuk mengupdate ke versi paket terbaru, jalankan perintah googet update.

    Untuk melihat perintah tambahan, jalankan googet help.

Meng-clone boot disk dan menggunakan skrip startup

Jika Anda tidak dapat terhubung ke instance untuk menginstal lingkungan tamu secara manual, instal lingkungan tamu menggunakan prosedur ini, yang mencakup langkah-langkah berikut yang dapat Anda selesaikan di konsol Google Cloud atau Cloud Shell.

Metode ini hanya berlaku untuk distribusi Linux. Untuk Windows, gunakan salah satu dari dua metode penginstalan lainnya.

Gunakan Cloud Shell untuk menjalankan prosedur ini. Untuk menjalankan prosedur ini jika Anda tidak menggunakan Cloud Shell, instal prosesor JSON command line jq. Pemroses ini memfilter output gcloud CLI. jq sudah diinstal sebelumnya di Cloud Shell.

CentOS/RHEL/Rocky

  1. Pastikan versi sistem operasi Anda didukung.

  2. Buat instance baru untuk berfungsi sebagai instance penyelamat. Beri nama instance ini rescue. Instance penyelamat ini tidak perlu menjalankan OS Linux yang sama dengan instance yang bermasalah. Contoh ini menggunakan Debian 9 di instance penyelamatan.

  3. Hentikan instance yang bermasalah dan buat salinan boot disk-nya.

    1. Tetapkan nama variabel untuk instance yang bermasalah. Variabel ini mempermudah mereferensikan instance pada langkah-langkah selanjutnya.

      export PROB_INSTANCE_NAME=VM_NAME

      Ganti VM_NAME dengan nama instance yang bermasalah.

    2. Hentikan instance yang bermasalah.

      gcloud compute instances stop "$PROB_INSTANCE_NAME"
    3. Dapatkan nama boot disk untuk instance yang bermasalah.

      export PROB_INSTANCE_DISK="$(gcloud compute instances describe \
      "$PROB_INSTANCE_NAME" --format='json' |  jq -r \
      '.disks[] | select(.boot == true) | .source')"
      
    4. Buat snapshot boot disk.

      export DISK_SNAPSHOT="${PROB_INSTANCE_NAME}-snapshot"
      
      gcloud compute disks snapshot "$PROB_INSTANCE_DISK" \
         --snapshot-names "$DISK_SNAPSHOT"
      
    5. Membuat disk baru dari snapshot.

      export NEW_DISK="${PROB_INSTANCE_NAME}-new-disk"
      
      gcloud compute disks create "$NEW_DISK" \
         --source-snapshot="$DISK_SNAPSHOT"
      
    6. Hapus snapshot:

      gcloud compute snapshots delete "$DISK_SNAPSHOT"
  4. Pasang disk baru ke instance penyelamat dan pasang volume root untuk instance penyelamat. Karena prosedur ini hanya memasang satu disk tambahan, ID perangkat disk baru adalah /dev/sdb. CentOS/RHEL/Rocky Linux menggunakan volume pertama pada disk sebagai volume root secara default; oleh karena itu, ID volume harus berupa /dev/sdb1. Untuk konfigurasi kustom, gunakan lsblk untuk menentukan ID volume.

    gcloud compute instances attach-disk rescue --disk "$NEW_DISK"
  5. Hubungkan ke instance penyelamat menggunakan SSH:

    gcloud compute ssh rescue
  6. Jalankan langkah-langkah berikut pada instance penyelamatan.

    1. Pasang volume root disk baru.

      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"
      
    2. Buat skrip 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
      
    3. Cadangkan file rc.local yang ada, pindahkan skrip rc.local sementara ke tempatnya di disk yang di-mount, dan tetapkan izin agar skrip sementara dapat dieksekusi saat booting. Skrip sementara menggantikan skrip asli saat selesai melakukan booting. Untuk melakukannya, jalankan perintah berikut:

      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"
      
    4. Lepaskan volume root disk baru.

      sudo umount "$NEW_DISK_MOUNT_POINT" && sudo rmdir \
      "$NEW_DISK_MOUNT_POINT"
    5. Keluar dari sesi SSH ke instance penyelamat.

  7. Lepaskan disk baru dari instance penyelamat.

    gcloud compute instances detach-disk rescue --disk "$NEW_DISK"
  8. Buat instance untuk berfungsi sebagai pengganti. Saat membuat instance pengganti, tentukan disk baru sebagai boot disk. Anda dapat membuat instance pengganti menggunakan konsol Google Cloud :

    1. Di konsol Google Cloud , buka halaman VM instances.

      Buka instance VM

    2. Klik instance yang bermasalah, lalu klik Buat yang serupa.

    3. Tentukan nama untuk instance pengganti. Di bagian Boot disk, klik Ubah, lalu klik Disk yang Ada. Pilih disk baru.

    4. Klik Buat. Instance pengganti akan otomatis dimulai setelah dibuat.

    Saat instance pengganti di-boot, skrip rc.local sementara dijalankan dan menginstal lingkungan tamu. Untuk melihat progres skrip ini, periksa log konsol untuk baris yang dikeluarkan oleh skrip rc.local sementara. Untuk melihat log, jalankan perintah berikut:

    gcloud compute instances get-serial-port-output REPLACEMENT_VM_NAME

    Ganti REPLACEMENT_VM_NAME dengan nama yang Anda tetapkan ke instance pengganti.

    Instance pengganti akan otomatis di-reboot saat skrip rc.local sementara selesai. Selama reboot kedua, Anda dapat memeriksa log konsol untuk memastikan lingkungan tamu dimuat.

  9. Pastikan Anda dapat terhubung ke instance menggunakan SSH.

    Setelah memverifikasi bahwa instance pengganti berfungsi, Anda dapat menghentikan atau menghapus instance yang bermasalah.

Debian

  1. Pastikan versi sistem operasi Anda didukung

  2. Buat instance baru untuk berfungsi sebagai instance penyelamat. Beri nama instance ini rescue. Instance penyelamat ini tidak perlu menjalankan OS Linux yang sama dengan instance yang bermasalah. Contoh ini menggunakan Debian 9 di instance penyelamatan.

  3. Hentikan instance yang bermasalah dan buat salinan boot disk-nya.

    1. Tetapkan nama variabel untuk instance yang bermasalah. Variabel ini mempermudah mereferensikan instance pada langkah-langkah selanjutnya.

      export PROB_INSTANCE_NAME=VM_NAME

      Ganti VM_NAME dengan nama instance yang bermasalah.

    2. Hentikan instance yang bermasalah.

      gcloud compute instances stop "$PROB_INSTANCE_NAME"
    3. Dapatkan nama boot disk untuk instance yang bermasalah.

      export PROB_INSTANCE_DISK="$(gcloud compute instances describe \
      "$PROB_INSTANCE_NAME" --format='json' |  jq -r \
      '.disks[] | select(.boot == true) | .source')"
      
    4. Buat snapshot boot disk.

      export DISK_SNAPSHOT="${PROB_INSTANCE_NAME}-snapshot"
      
      gcloud compute disks snapshot "$PROB_INSTANCE_DISK" \
         --snapshot-names "$DISK_SNAPSHOT"
      
    5. Membuat disk baru dari snapshot.

      export NEW_DISK="${PROB_INSTANCE_NAME}-new-disk"
      
      gcloud compute disks create "$NEW_DISK" \
         --source-snapshot="$DISK_SNAPSHOT"
      
    6. Hapus snapshot:

      gcloud compute snapshots delete "$DISK_SNAPSHOT"
  4. Pasang disk baru ke instance penyelamat dan pasang volume root untuk instance penyelamat. Karena prosedur ini hanya memasang satu disk tambahan, ID perangkat disk baru adalah /dev/sdb. Debian menggunakan volume pertama pada disk sebagai volume root secara default; oleh karena itu, ID volume harus /dev/sdb1. Untuk konfigurasi kustom, gunakan lsblk untuk menentukan ID volume.

    gcloud compute instances attach-disk rescue --disk "$NEW_DISK"
  5. Hubungkan ke instance penyelamat menggunakan SSH:

    gcloud compute ssh rescue
  6. Jalankan langkah-langkah berikut pada instance penyelamatan.

    1. Pasang volume root disk baru.

      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"
      
    2. Buat skrip 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
      
    3. Cadangkan file rc.local yang ada, pindahkan skrip rc.local sementara ke tempatnya di disk yang di-mount, dan tetapkan izin agar skrip sementara dapat dieksekusi saat booting. Skrip sementara menggantikan skrip asli saat selesai melakukan booting. Untuk melakukannya, jalankan perintah berikut:

      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"
      
    4. Lepaskan volume root disk baru.

      sudo umount "$NEW_DISK_MOUNT_POINT" && sudo rmdir "$NEW_DISK_MOUNT_POINT"
    5. Keluar dari sesi SSH ke instance penyelamat.

  7. Lepaskan disk baru dari instance penyelamat.

    gcloud compute instances detach-disk rescue --disk "$NEW_DISK"
  8. Buat instance baru untuk berfungsi sebagai pengganti. Saat membuat instance pengganti, tentukan disk baru sebagai boot disk. Anda dapat membuat instance pengganti menggunakan konsol Google Cloud :

    1. Di konsol Google Cloud , buka halaman VM instances.

      Buka instance VM

    2. Klik instance yang bermasalah, lalu klik Buat yang serupa.

    3. Tentukan nama untuk instance pengganti. Di bagian Boot disk, klik Ubah, lalu klik Disk yang Ada. Pilih disk baru.

    4. Klik Buat. Instance pengganti akan otomatis dimulai setelah dibuat.

    Saat instance pengganti di-boot, skrip rc.local sementara dijalankan dan menginstal lingkungan tamu. Untuk melihat progres skrip ini, periksa log konsol untuk baris yang dikeluarkan oleh skrip rc.local sementara. Untuk melihat log, jalankan perintah berikut:

    gcloud compute instances get-serial-port-output REPLACEMENT_VM_NAME

    Ganti REPLACEMENT_VM_NAME dengan nama yang Anda tetapkan ke instance pengganti.

    Instance pengganti akan otomatis di-reboot saat skrip rc.local sementara selesai. Selama reboot kedua, Anda dapat memeriksa log konsol untuk memastikan lingkungan tamu dimuat.

  9. Pastikan Anda dapat terhubung ke instance menggunakan SSH.

    Setelah memverifikasi bahwa instance pengganti berfungsi, Anda dapat menghentikan atau menghapus instance yang bermasalah.

Ubuntu

  1. Pastikan versi sistem operasi Anda didukung

  2. Buat instance baru untuk berfungsi sebagai instance penyelamat. Beri nama instance ini rescue. Instance penyelamat ini tidak perlu menjalankan OS Linux yang sama dengan instance yang bermasalah. Contoh ini menggunakan Debian 9 di instance penyelamatan.

  3. Hentikan instance yang bermasalah dan buat salinan boot disk-nya.

    1. Tetapkan nama variabel untuk instance yang bermasalah. Variabel ini menyederhanakan referensi instance pada langkah-langkah selanjutnya.

      export PROB_INSTANCE_NAME=VM_NAME

      Ganti VM_NAME dengan nama instance yang bermasalah.

    2. Hentikan instance yang bermasalah.

      gcloud compute instances stop "$PROB_INSTANCE_NAME"
    3. Dapatkan nama boot disk untuk instance yang bermasalah.

      export PROB_INSTANCE_DISK="$(gcloud compute instances describe \
      "$PROB_INSTANCE_NAME" --format='json' |  jq -r \
      '.disks[] | select(.boot == true) | .source')"
      
    4. Buat snapshot boot disk.

      export DISK_SNAPSHOT="${PROB_INSTANCE_NAME}-snapshot"
      
      gcloud compute disks snapshot "$PROB_INSTANCE_DISK" \
         --snapshot-names "$DISK_SNAPSHOT"
      
    5. Membuat disk baru dari snapshot.

      export NEW_DISK="${PROB_INSTANCE_NAME}-new-disk"
      
      gcloud compute disks create "$NEW_DISK" \
         --source-snapshot="$DISK_SNAPSHOT"
      
    6. Hapus snapshot:

      gcloud compute snapshots delete "$DISK_SNAPSHOT"
  4. Pasang disk baru ke instance penyelamat dan pasang volume root untuk instance penyelamat. Karena prosedur ini hanya memasang satu disk tambahan, ID perangkat disk baru adalah /dev/sdb. Ubuntu memberi label volume root-nya 1 secara default; oleh karena itu, ID volume harus berupa /dev/sdb1. Untuk konfigurasi kustom, gunakan lsblk untuk menentukan ID volume.

    gcloud compute instances attach-disk rescue --disk "$NEW_DISK"
  5. Hubungkan ke instance penyelamat menggunakan SSH:

    gcloud compute ssh rescue
  6. Jalankan langkah-langkah berikut pada instance penyelamatan.

    1. Pasang volume root disk baru.

      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"
      
    2. Buat skrip 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
      
    3. Cadangkan file rc.local yang ada, pindahkan skrip rc.local sementara ke tempatnya di disk yang di-mount, dan tetapkan izin agar skrip sementara dapat dieksekusi saat booting. Skrip sementara menggantikan skrip asli saat selesai melakukan booting. Untuk melakukannya, jalankan perintah berikut:

      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"
      
    4. Lepaskan volume root disk baru.

      sudo umount "$NEW_DISK_MOUNT_POINT" && sudo rmdir "$NEW_DISK_MOUNT_POINT"
    5. Keluar dari sesi SSH ke instance penyelamat.

  7. Lepaskan disk baru dari instance penyelamat.

    gcloud compute instances detach-disk rescue --disk "$NEW_DISK"
  8. Buat instance baru untuk berfungsi sebagai pengganti. Saat membuat instance pengganti, tentukan disk baru sebagai boot disk. Anda dapat membuat instance pengganti menggunakan konsol Google Cloud :

    1. Di konsol Google Cloud , buka halaman VM instances.

      Buka instance VM

    2. Klik instance yang bermasalah, lalu klik Buat yang serupa.

    3. Tentukan nama untuk instance pengganti. Di bagian Boot disk, klik Ubah, lalu klik Disk yang Ada. Pilih disk baru.

    4. Klik Buat. Instance pengganti akan otomatis dimulai setelah dibuat.

    Saat instance pengganti di-boot, skrip rc.local sementara dijalankan dan menginstal lingkungan tamu. Untuk melihat progres skrip ini, periksa log konsol untuk baris yang dikeluarkan oleh skrip rc.local sementara. Untuk melihat log, jalankan perintah berikut:

    gcloud compute instances get-serial-port-output REPLACEMENT_VM_NAME

    Ganti REPLACEMENT_VM_NAME dengan nama yang Anda tetapkan ke instance pengganti.

    Instance pengganti akan otomatis di-reboot saat skrip rc.local sementara selesai. Selama reboot kedua, Anda dapat memeriksa log konsol untuk memastikan lingkungan tamu dimuat.

  9. Pastikan Anda dapat terhubung ke instance menggunakan SSH.

    Setelah memverifikasi bahwa instance pengganti berfungsi, Anda dapat menghentikan atau menghapus instance yang bermasalah.

Memperbarui lingkungan tamu

Jika Anda menerima pesan bahwa lingkungan tamu sudah usang, update paket untuk sistem operasi Anda sebagai berikut:

CentOS/RHEL/Rocky

Untuk mengupdate sistem operasi CentOS, RHEL, dan Rocky Linux, jalankan perintah berikut:

sudo yum makecache
sudo yum install google-compute-engine google-compute-engine-oslogin \
google-guest-agent google-osconfig-agent

Debian

Untuk mengupdate sistem operasi Debian, jalankan perintah berikut:

sudo apt update
sudo apt install google-compute-engine google-compute-engine-oslogin \
google-guest-agent google-osconfig-agent

Ubuntu

Untuk mengupdate sistem operasi Ubuntu, jalankan perintah berikut:

sudo apt update
sudo apt install google-compute-engine google-compute-engine-oslogin \
google-guest-agent google-osconfig-agent

SLES

Untuk mengupdate sistem operasi SLES, jalankan perintah berikut:

sudo zypper refresh
sudo zypper install google-guest-{agent,configs,oslogin} \
google-osconfig-agent

Windows

Untuk mengupdate sistem operasi Windows, jalankan perintah berikut:

googet update

Memvalidasi lingkungan tamu

Anda dapat memeriksa apakah lingkungan tamu diinstal dengan memeriksa log sistem yang dikeluarkan ke konsol saat instance di-boot, atau dengan mencantumkan paket yang diinstal saat terhubung ke instance.

Melihat log konsol yang diharapkan untuk lingkungan tamu

Tabel ini merangkum output yang diharapkan untuk log konsol yang dikeluarkan oleh instance dengan lingkungan tamu yang berfungsi saat dimulai.

Sistem operasi Pengelolaan layanan Output yang diharapkan
CentOS/RHEL/Rocky Linux
Debian
Ubuntu
SLES
Container-Optimized OS 89 dan yang lebih baru
systemd
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 dan yang lebih lama 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)

Untuk melihat log konsol instance, ikuti langkah-langkah berikut.

Konsol

  1. Di konsol Google Cloud , buka halaman VM instances.

    Buka instance VM

    1. Pilih instance yang perlu Anda periksa.
    2. Mulai ulang atau reset instance.
    3. Di bagian Logs, klik Serial port 1 (console).
    4. Cari output yang diharapkan dalam tabel yang mendahului langkah-langkah ini.

gcloud

  1. Mulai ulang atau reset instance.
  2. Gunakan subperintah gcloud compute instances get-serial-port-output untuk terhubung menggunakan Google Cloud CLI. Contoh:

    gcloud compute instances get-serial-port-output VM_NAME

    Ganti VM_NAME dengan nama instance yang perlu Anda periksa.

  3. Cari output yang diharapkan dalam tabel yang mendahului langkah-langkah ini.

Melihat layanan yang dimuat menurut versi sistem operasi

Tabel ini merangkum layanan yang harus dimuat di instance dengan lingkungan tamu yang berfungsi. Anda harus menjalankan perintah untuk mencantumkan layanan setelah terhubung ke instance. Oleh karena itu, Anda hanya dapat melakukan pemeriksaan ini jika Anda memiliki akses ke instance.

Sistem operasi Perintah untuk mencantumkan layanan Output yang diharapkan
CentOS/RHEL/Rocky Linux
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+
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

Melihat paket yang diinstal menurut versi sistem operasi

Tabel ini merangkum paket yang harus diinstal pada instance dengan lingkungan tamu yang berfungsi. Anda harus menjalankan perintah untuk mencantumkan paket yang diinstal setelah terhubung ke instance. Oleh karena itu, Anda hanya dapat melakukan pemeriksaan ini jika Anda memiliki akses ke instance.

Untuk mengetahui informasi selengkapnya tentang paket ini, lihat Komponen lingkungan tamu.

Sistem operasi Perintah untuk mencantumkan paket Output yang diharapkan
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

Langkah berikutnya