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

  • Siapkan autentikasi, jika Anda belum melakukannya. Autentikasi memverifikasi identitas Anda untuk mengakses layanan dan API Google Cloud . Untuk menjalankan kode atau contoh 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. Instal 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

    Selesaikan langkah-langkah untuk versi Debian Anda.

    Debian 13 dan yang lebih baru

    1. Pastikan versi sistem operasi Anda didukung.
    2. Instal kunci GPG repositori publik ke /etc/apt/keyrings:

      sudo curl https://packages.cloud.google.com/apt/doc/apt-key.gpg -o /etc/apt/keyrings/google-keyring.gpg 
    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 [signed-by=/etc/apt/keyrings/google-keyring.gpg] http://packages.cloud.google.com/apt google-compute-engine-${VERSION_CODENAME}-stable main EOM 
    4. Perbarui daftar paket:

      sudo apt update 
    5. Instal paket lingkungan tamu:

      sudo apt install -y gce-configs-trixie 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.

    Debian 12 dan yang lebih lama

    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 /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'

    Daftar paket dapat bervariasi. Objek ini juga dapat menyertakan komponen seperti google-cloud-cli-anthoscli. Image RHEL dapat memiliki paket khusus versi (misalnya, google-rhui-client-rhel8) atau varian khusus SAP.

    google-osconfig-agent google-compute-engine-oslogin google-guest-agent gce-disk-expand google-compute-engine google-cloud-cli google-cloud-ops-agent 
    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