このページでは、仮想マシン(VM)インスタンスにゲスト環境を手動でインストールする方法について説明します。ゲスト環境は、Compute Engine でインスタンスを実行するために必要なスクリプト、デーモン、バイナリのコレクションです。詳細については、ゲスト環境をご覧ください。
ほとんどの場合、Google 提供の公開 OS イメージを使用すると、ゲスト環境が自動的に含まれます。ゲスト環境が自動的に含まれる OS イメージの一覧については、オペレーティング システムの詳細をご覧ください。
ゲスト環境がインストールされていないか、古くなっている場合は、インストールまたは更新します。このようなシナリオについては、ゲスト環境をインストールまたは更新するタイミングをご覧ください。
始める前に
-
まだ設定していない場合は、認証を設定します。認証では、 Google Cloud サービスと API にアクセスするための ID が確認されます。ローカル開発環境からコードまたはサンプルを実行するには、次のいずれかのオプションを選択して Compute Engine に対する認証を行います。
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
-
Google Cloud CLI をインストールします。 インストール後、次のコマンドを実行して Google Cloud CLI を初期化します。
gcloud init
外部 ID プロバイダ(IdP)を使用している場合は、まず連携 ID を使用して gcloud CLI にログインする必要があります。
- Set a default region and zone.
ゲスト環境をインストールまたは更新するタイミング
ほとんどの場合、ゲスト環境を手動でインストールまたは更新する必要はありません。手動でインストールまたは更新する必要がある場合については、以下のセクションをご覧ください。
インストール要件を確認する
ゲスト環境をインストールする前に、ゲスト環境を検証するの手順に沿って、インスタンスでゲスト環境が実行されているかどうかを確認します。インスタンスで使用できるゲスト環境が古くなっている場合は、ゲスト環境を更新します。
次のような状況では、ゲスト環境のインストールが必要になることがあります。
必要な Google 提供の OS イメージにゲスト環境がインストールされていません。
カスタム イメージまたは仮想ディスクを Compute Engine にインポートし、ゲスト環境の自動インストールを防止する選択をした場合。
仮想ディスクまたはカスタム イメージをインポートするときに、Compute Engine でゲスト環境のインストールを許可することもできます。ただし、インポート プロセスでゲスト環境をインストールしない場合、ゲスト環境を手動でインストールする必要があります。
Migrate to Virtual Machines を使用して VM を Compute Engine に移行する。
ゲスト環境をインストールするには、インストール方法をご覧ください。
更新の要件を確認する
次のような状況では、ゲスト環境を更新する必要があります。
v20141218
より前の OS イメージを使用しているインスタンスがある。ローカル SSD ディスクのゲスト環境の最適化を行わない OS イメージを使用している。
ゲスト環境を更新するには、ゲスト環境を更新するをご覧ください。
インストール方法
ゲスト環境のインストール方法は複数あります。次のいずれかを選択します。
インポート ツール。インポート ツールを使用することをおすすめします。ただし、インポート ツールはゲスト環境をインストールするだけでなく、ネットワークの構成、ブートローダーの構成、Google Cloud CLI のインストールなど、他の構成の更新も行います。手順については、イメージを起動可能にするをご覧ください。
インポート ツールでは、さまざまなオペレーティング システムとバージョンがサポートされています。詳しくは、オペレーティング システムの詳細ページをご覧ください。
手動インストール。次のいずれかを選択します。
- SSH または RDP を使用してインスタンスに接続し、ゲスト環境をインプレースでインストールする。
- ブートディスクのクローンを作成し、起動スクリプトを使用してゲスト環境をインストールする。
サポートされているオペレーティング システム
一般提供(GA)ライフサイクルまたは拡張サポート ライフサイクル ステージにある OS イメージ バージョンを使用する VM に、ゲスト環境をインストールまたは更新できます。
Compute Engine で利用可能な OS イメージ バージョンとそのライフサイクル ステージの一覧を確認するには、オペレーティング システムの詳細をご覧ください。
制限事項
Fedora CoreOS、Container-Optimized(COS)の各オペレーティング システム用のゲスト環境を手動またはインポート ツールによってインストールすることはできません。COS の場合、ゲスト環境をコア コンポーネントとして含む Google 提供の公開イメージを使用することをおすすめします。
ゲスト環境をインストールする
ゲスト環境を手動でインストールするには、インスタンスに接続できるかどうかに応じて、次のいずれかの方法を選択します。
- SSH または RDP を使用してインスタンスに接続できる場合は、ゲスト環境をインプレースでインストールします。
- インスタンスに接続できない場合は、ブートディスクのクローンを作成し、起動スクリプトでゲスト環境をインストールします。
ゲスト環境をインプレースでインストールする
SSH を使用してターゲット インスタンスに接続できる場合、この方法を使用してゲスト環境をインストールします。インスタンスに接続してゲスト環境をインストールできない場合は、ブートディスクのクローンを作成して起動スクリプトでゲスト環境をインストールします。
SSH パスワード ベースの認証を使用して接続できる場合は、この手順がイメージのインポートに便利です。機能キーベースの SSH を使用したユーザー アカウントが 1 つ以上ある場合は、ゲスト環境の再インストールにも使用できます。
CentOS/RHEL/Rocky
- お使いのオペレーティング システムのバージョンがサポートされていることを確認します。
CentOS/RHEL/Rocky Linux のバージョンを特定します。次に、ソース リポジトリ ファイル
/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
パッケージ リストを更新します。
sudo yum makecache sudo yum updateinfo
ゲスト環境パッケージをインストールします。
sudo yum install -y google-compute-engine google-osconfig-agent
インスタンスを再起動します。次に、コンソールログを調査して、バックアップの開始時にゲスト環境が読み込まれることを確認します。
SSH を使用してインスタンスに接続し、確認します。詳細な手順については、SSH を使用してインスタンスに接続するをご覧ください。
Debian
Debian のバージョンに応じた手順に沿って操作します。
Debian 13 以降
- お使いのオペレーティング システムのバージョンがサポートされていることを確認します。
公開リポジトリの GPG 鍵を
/etc/apt/keyrings
にインストールします。sudo curl https://packages.cloud.google.com/apt/doc/apt-key.gpg -o /etc/apt/keyrings/google-keyring.gpg
Debian ディストリビューションの名前を特定します。次に、ソースリスト ファイル
/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
パッケージ リストを更新します。
sudo apt update
ゲスト環境パッケージをインストールします。
sudo apt install -y gce-configs-trixie sudo apt install -y google-compute-engine google-osconfig-agent
インスタンスを再起動します。次に、コンソールログを調査して、バックアップの開始時にゲスト環境が読み込まれることを確認します。
SSH を使用してインスタンスに接続し、確認します。詳細な手順については、SSH を使用してインスタンスに接続するをご覧ください。
Debian 12 以前
- お使いのオペレーティング システムのバージョンがサポートされていることを確認します。
公開リポジトリの GPG 鍵をインストールします。
curl https://packages.cloud.google.com/apt/doc/apt-key.gpg | sudo apt-key add -
Debian ディストリビューションの名前を特定します。次に、ソースリスト ファイル
/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
パッケージ リストを更新します。
sudo apt update
ゲスト環境パッケージをインストールします。
sudo apt install -y google-cloud-packages-archive-keyring sudo apt install -y google-compute-engine google-osconfig-agent
インスタンスを再起動します。次に、コンソールログを調査して、バックアップの開始時にゲスト環境が読み込まれることを確認します。
SSH を使用してインスタンスに接続し、確認します。詳細な手順については、SSH を使用してインスタンスに接続するをご覧ください。
Ubuntu
お使いのオペレーティング システムのバージョンがサポートされていることを確認します。
Universe リポジトリを有効にします。Canonical は、そのゲスト環境用のパッケージを Universe リポジトリに公開します。
sudo apt-add-repository universe
パッケージ リストを更新します。
sudo apt update
ゲスト環境パッケージをインストールします。
sudo apt install -y google-compute-engine google-osconfig-agent
インスタンスを再起動します。次に、コンソールログを調査して、バックアップの開始時にゲスト環境が読み込まれることを確認します。
SSH を使用してインスタンスに接続し、確認します。詳細な手順については、SSH を使用してインスタンスに接続するをご覧ください。
SLES
お使いのオペレーティング システムのバージョンがサポートされていることを確認します。
Public Cloud モジュールを有効にします。
product=$(sudo SUSEConnect --list-extensions | grep -o "sle-module-public-cloud.*") [[ -n "$product" ]] && sudo SUSEConnect -p "$product"
パッケージ リストを更新します。
sudo zypper refresh
ゲスト環境パッケージをインストールします。
sudo zypper install -y google-guest-{agent,configs,oslogin} \ google-osconfig-agent sudo systemctl enable /usr/lib/systemd/system/google-*
インスタンスを再起動します。次に、コンソールログを調査して、バックアップの開始時にゲスト環境が読み込まれることを確認します。
SSH を使用してインスタンスに接続し、確認します。詳細な手順については、SSH を使用してインスタンスに接続するをご覧ください。
Windows
開始する前に、お使いのオペレーティング システムのバージョンがサポートされていることを確認します。
Windows ゲスト環境をインストールするには、昇格した PowerShell バージョン 3.0 以降のプロンプトで次のコマンドを実行します。
Invoke-WebRequest
コマンドには PowerShell バージョン 3.0 以降が必要です。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"
GooGet
のインストール中に、コンテンツをシステム環境に追加します。インストールが完了したら、新しい PowerShell コンソールを起動します。または、googet.exe
ファイルへのフルパス(C:\ProgramData\GooGet\googet.exe)を指定します。新しいコンソールを開き、
google-compute-engine-stable
リポジトリを追加します。googet addrepo google-compute-engine-stable https://packages.cloud.google.com/yuck/repos/google-compute-engine-stable
コア Windows ゲスト環境パッケージをインストールします。
googet -noconfirm install google-compute-engine-windows ` google-compute-engine-sysprep google-compute-engine-metadata-scripts ` google-compute-engine-vss google-osconfig-agent
オプションの Windows ゲスト環境パッケージをインスールします。
googet -noconfirm install google-compute-engine-auto-updater
googet
コマンドの使用使用可能なパッケージを表示するには、
googet available
コマンドを実行します。インストール済みのパッケージを表示するには、
googet installed
コマンドを実行します。最新のパッケージ バージョンに更新するには、
googet update
コマンドを実行します。他のコマンドを表示するには、
googet help
を実行します。
ブートディスクのクローン作成と起動スクリプトの使用
インスタンスに接続してゲスト環境を手動でインストールできない場合は、この方法でゲスト環境をインストールします。この方法には、 Google Cloud コンソールまたは Cloud Shell で行える次のような手順が含まれます。
この方法は、Linux ディストリビューションにのみ適用されます。Windows の場合は、他の 2 つのインストール方法のいずれかを使用してください。
この手順は Cloud Shell で行います。Cloud Shell を使用していない場合にこの手順を実行するには、
jq
コマンドライン JSON プロセッサをインストールします。このプロセッサは、gcloud CLI の出力をフィルタリングします。Cloud Shell にはjq
がプリインストールされています。CentOS/RHEL/Rocky
お使いのオペレーティング システムのバージョンがサポートされていることを確認します。
レスキュー インスタンスとして機能する新しいインスタンスを作成します。このインスタンスにレスキューという名前を付けます。このレスキュー インスタンスは、問題インスタンスと同じ Linux OS を実行する必要はありません。この例では、レスキュー インスタンスで Debian 9 を使用します。
問題インスタンスを停止し、そのルートディスクのコピーを作成します。
問題インスタンスの変数名を設定します。この変数を使用すると、後の手順でインスタンスを簡単に参照できます。
export PROB_INSTANCE_NAME=VM_NAME
VM_NAME は、問題インスタンスの名前に置き換えます。
問題インスタンスを停止します。
gcloud compute instances stop "$PROB_INSTANCE_NAME"
問題インスタンスのブートディスクの名前を取得します。
export PROB_INSTANCE_DISK="$(gcloud compute instances describe \ "$PROB_INSTANCE_NAME" --format='json' | jq -r \ '.disks[] | select(.boot == true) | .source')"
ブートディスクのスナップショットを作成します。
export DISK_SNAPSHOT="${PROB_INSTANCE_NAME}-snapshot" gcloud compute disks snapshot "$PROB_INSTANCE_DISK" \ --snapshot-names "$DISK_SNAPSHOT"
スナップショットから新しいディスクを作成します。
export NEW_DISK="${PROB_INSTANCE_NAME}-new-disk" gcloud compute disks create "$NEW_DISK" \ --source-snapshot="$DISK_SNAPSHOT"
スナップショットを削除します。
gcloud compute snapshots delete "$DISK_SNAPSHOT"
新しいディスクをレスキュー インスタンスに接続し、そのルート ボリュームをマウントします。この手順では追加のディスクを 1 つだけ接続するため、新しいディスクのデバイス識別子は /dev/sdb になります。CentOS/RHEL/Rocky Linux では、デフォルトでディスク上の最初のボリュームをルート ボリュームとして使用するため、ボリューム識別子は /dev/sdb1 にする必要がありますカスタム構成では、
lsblk
を使用してボリューム識別子を特定します。gcloud compute instances attach-disk rescue --disk "$NEW_DISK"
-
gcloud compute ssh rescue
レスキュー インスタンスで次の手順を行います。
新しいディスクのルート ボリュームをマウントします。
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"
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
既存の
rc.local
ファイルをバックアップし、一時的なrc.local
スクリプトをマウントされたディスク上の適切な場所に移動して、一時的なスクリプトが起動時に実行可能になるように権限を設定します。一時的なスクリプトは、起動が完了すると元のスクリプトに置き換わります。これを行うには、次のコマンドを実行します。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"
新しいディスクのルート ボリュームをアンマウントします。
sudo umount "$NEW_DISK_MOUNT_POINT" && sudo rmdir \ "$NEW_DISK_MOUNT_POINT"
レスキュー インスタンスへの SSH セッションを終了します。
レスキュー インスタンスから新しいディスクを切断します。
gcloud compute instances detach-disk rescue --disk "$NEW_DISK"
置換インスタンスとして機能するインスタンスを作成します。置換インスタンスを作成するときに、新しいディスクをブートディスクとして指定します。置換インスタンスは、 Google Cloud コンソールを使用して作成できます。
Google Cloud コンソールで、[VM インスタンス] ページに移動します。
問題インスタンスをクリックして、[同様のものを作成] をクリックします。
置換インスタンスの名前を指定します。[ブートディスク] セクションで、[変更] をクリックしてから、[既存のディスク] をクリックします。新しいディスクを選択します。
[作成] をクリックします。置換インスタンスは、作成されると自動的に開始されます。
置換インスタンスが起動すると、一時的な
rc.local
スクリプトが実行され、ゲスト環境がインストールされます。このスクリプトの進行状況を監視するには、一時的なrc.local
スクリプトによって生成されたコンソールログの行を調べます。ログを表示するには、次のコマンドを実行します。gcloud compute instances get-serial-port-output REPLACEMENT_VM_NAME
REPLACEMENT_VM_NAME は、置換インスタンスに割り当てた名前に置き換えます。
一時的な
rc.local
スクリプトが終了すると、置換インスタンスが自動的に再起動されます。2 回目の再起動中にコンソールログを調査することで、ゲスト環境が読み込まれていることを確認できます。SSH を使用してインスタンスに接続できることを確認します。
Debian
お使いのオペレーティング システムのバージョンがサポートされていることを確認します
レスキュー インスタンスとして機能する新しいインスタンスを作成します。このインスタンスにレスキューという名前を付けます。このレスキュー インスタンスは、問題インスタンスと同じ Linux OS を実行する必要はありません。この例では、レスキュー インスタンスで Debian 9 を使用します。
問題インスタンスを停止し、そのルートディスクのコピーを作成します。
問題インスタンスの変数名を設定します。この変数を使用すると、後の手順でインスタンスを簡単に参照できます。
export PROB_INSTANCE_NAME=VM_NAME
VM_NAME は、問題インスタンスの名前に置き換えます。
問題インスタンスを停止します。
gcloud compute instances stop "$PROB_INSTANCE_NAME"
問題インスタンスのブートディスクの名前を取得します。
export PROB_INSTANCE_DISK="$(gcloud compute instances describe \ "$PROB_INSTANCE_NAME" --format='json' | jq -r \ '.disks[] | select(.boot == true) | .source')"
ブートディスクのスナップショットを作成します。
export DISK_SNAPSHOT="${PROB_INSTANCE_NAME}-snapshot" gcloud compute disks snapshot "$PROB_INSTANCE_DISK" \ --snapshot-names "$DISK_SNAPSHOT"
スナップショットから新しいディスクを作成します。
export NEW_DISK="${PROB_INSTANCE_NAME}-new-disk" gcloud compute disks create "$NEW_DISK" \ --source-snapshot="$DISK_SNAPSHOT"
スナップショットを削除します。
gcloud compute snapshots delete "$DISK_SNAPSHOT"
新しいディスクをレスキュー インスタンスに接続し、そのルート ボリュームをマウントします。この手順では追加のディスクを 1 つだけ接続するため、新しいディスクのデバイス識別子は /dev/sdb になります。Debian では、デフォルトでディスク上の最初のボリュームをルート ボリュームとして使用するため、ボリューム識別子は /dev/sdb1 にする必要があります。カスタム構成では、
lsblk
を使用してボリューム識別子を特定します。gcloud compute instances attach-disk rescue --disk "$NEW_DISK"
-
gcloud compute ssh rescue
レスキュー インスタンスで次の手順を行います。
新しいディスクのルート ボリュームをマウントします。
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"
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
既存の
rc.local
ファイルをバックアップし、一時的なrc.local
スクリプトをマウントされたディスク上の適切な場所に移動して、一時的なスクリプトが起動時に実行可能になるように権限を設定します。一時的なスクリプトは、起動が完了すると元のスクリプトに置き換わります。これを行うには、次のコマンドを実行します。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"
新しいディスクのルート ボリュームをアンマウントします。
sudo umount "$NEW_DISK_MOUNT_POINT" && sudo rmdir "$NEW_DISK_MOUNT_POINT"
レスキュー インスタンスへの SSH セッションを終了します。
レスキュー インスタンスから新しいディスクを切断します。
gcloud compute instances detach-disk rescue --disk "$NEW_DISK"
置換インスタンスとして機能する新しいインスタンスを作成します。置換インスタンスを作成するときに、新しいディスクをブートディスクとして指定します。置換インスタンスは、 Google Cloud コンソールを使用して作成できます。
Google Cloud コンソールで、[VM インスタンス] ページに移動します。
問題インスタンスをクリックして、[同様のものを作成] をクリックします。
置換インスタンスの名前を指定します。[ブートディスク] セクションで、[変更] をクリックしてから、[既存のディスク] をクリックします。新しいディスクを選択します。
[作成] をクリックします。置換インスタンスは、作成されると自動的に開始されます。
置換インスタンスが起動すると、一時的な
rc.local
スクリプトが実行され、ゲスト環境がインストールされます。このスクリプトの進行状況を監視するには、一時的なrc.local
スクリプトによって生成されたコンソールログの行を調べます。ログを表示するには、次のコマンドを実行します。gcloud compute instances get-serial-port-output REPLACEMENT_VM_NAME
REPLACEMENT_VM_NAME は、置換インスタンスに割り当てた名前に置き換えます。
一時的な
rc.local
スクリプトが終了すると、置換インスタンスが自動的に再起動されます。2 回目の再起動中にコンソールログを調査することで、ゲスト環境が読み込まれていることを確認できます。SSH を使用してインスタンスに接続できることを確認します。
Ubuntu
お使いのオペレーティング システムのバージョンがサポートされていることを確認します
レスキュー インスタンスとして機能する新しいインスタンスを作成します。このインスタンスにレスキューという名前を付けます。このレスキュー インスタンスは、問題インスタンスと同じ Linux OS を実行する必要はありません。この例では、レスキュー インスタンスで Debian 9 を使用します。
問題インスタンスを停止し、そのルートディスクのコピーを作成します。
問題インスタンスの変数名を設定します。この変数により、後の手順でインスタンスを簡単に参照できるようになります。
export PROB_INSTANCE_NAME=VM_NAME
VM_NAME は、問題インスタンスの名前に置き換えます。
問題インスタンスを停止します。
gcloud compute instances stop "$PROB_INSTANCE_NAME"
問題インスタンスのブートディスクの名前を取得します。
export PROB_INSTANCE_DISK="$(gcloud compute instances describe \ "$PROB_INSTANCE_NAME" --format='json' | jq -r \ '.disks[] | select(.boot == true) | .source')"
ブートディスクのスナップショットを作成します。
export DISK_SNAPSHOT="${PROB_INSTANCE_NAME}-snapshot" gcloud compute disks snapshot "$PROB_INSTANCE_DISK" \ --snapshot-names "$DISK_SNAPSHOT"
スナップショットから新しいディスクを作成します。
export NEW_DISK="${PROB_INSTANCE_NAME}-new-disk" gcloud compute disks create "$NEW_DISK" \ --source-snapshot="$DISK_SNAPSHOT"
スナップショットを削除します。
gcloud compute snapshots delete "$DISK_SNAPSHOT"
新しいディスクをレスキュー インスタンスに接続し、そのルート ボリュームをマウントします。この手順では追加のディスクを 1 つだけ接続するため、新しいディスクのデバイス識別子は /dev/sdb になります。Ubuntu では、デフォルトでルート ボリュームに 1 というラベルを付けるため、ボリューム識別子は /dev/sdb1 にする必要がありますカスタム構成では、
lsblk
を使用してボリューム識別子を特定します。gcloud compute instances attach-disk rescue --disk "$NEW_DISK"
-
gcloud compute ssh rescue
レスキュー インスタンスで次の手順を行います。
新しいディスクのルート ボリュームをマウントします。
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"
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
既存の
rc.local
ファイルをバックアップし、一時的なrc.local
スクリプトをマウントされたディスク上の適切な場所に移動して、一時的なスクリプトが起動時に実行可能になるように権限を設定します。一時的なスクリプトは、起動が完了すると元のスクリプトに置き換わります。これを行うには、次のコマンドを実行します。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"
新しいディスクのルート ボリュームをアンマウントします。
sudo umount "$NEW_DISK_MOUNT_POINT" && sudo rmdir "$NEW_DISK_MOUNT_POINT"
レスキュー インスタンスへの SSH セッションを終了します。
レスキュー インスタンスから新しいディスクを切断します。
gcloud compute instances detach-disk rescue --disk "$NEW_DISK"
置換インスタンスとして機能する新しいインスタンスを作成します。置換インスタンスを作成するときに、新しいディスクをブートディスクとして指定します。置換インスタンスは、 Google Cloud コンソールを使用して作成できます。
Google Cloud コンソールで、[VM インスタンス] ページに移動します。
問題インスタンスをクリックして、[同様のものを作成] をクリックします。
置換インスタンスの名前を指定します。[ブートディスク] セクションで、[変更] をクリックしてから、[既存のディスク] をクリックします。新しいディスクを選択します。
[作成] をクリックします。置換インスタンスは、作成されると自動的に開始されます。
置換インスタンスが起動すると、一時的な
rc.local
スクリプトが実行され、ゲスト環境がインストールされます。このスクリプトの進行状況を監視するには、一時的なrc.local
スクリプトによって生成されたコンソールログの行を調べます。ログを表示するには、次のコマンドを実行します。gcloud compute instances get-serial-port-output REPLACEMENT_VM_NAME
REPLACEMENT_VM_NAME は、置換インスタンスに割り当てた名前に置き換えます。
一時的な
rc.local
スクリプトが終了すると、置換インスタンスが自動的に再起動されます。2 回目の再起動中にコンソールログを調査することで、ゲスト環境が読み込まれていることを確認できます。SSH を使用してインスタンスに接続できることを確認します。
ゲスト環境を更新する
ゲスト環境が古いというメッセージが表示された場合は、次のようにオペレーティング システムのパッケージを更新します。
CentOS/RHEL/Rocky
CentOS、RHEL、Rocky Linux オペレーティング システムを更新するには、次のコマンドを実行します。
sudo yum makecache sudo yum install google-compute-engine google-compute-engine-oslogin \ google-guest-agent google-osconfig-agent
Debian
Debian オペレーティング システムを更新するには、次のコマンドを実行します。
sudo apt update sudo apt install google-compute-engine google-compute-engine-oslogin \ google-guest-agent google-osconfig-agent
Ubuntu
Ubuntu オペレーティング システムを更新するには、次のコマンドを実行します。
sudo apt update sudo apt install google-compute-engine google-compute-engine-oslogin \ google-guest-agent google-osconfig-agent
SLES
SLES オペレーティング システムを更新するには、次のコマンドを実行します。
sudo zypper refresh sudo zypper install google-guest-{agent,configs,oslogin} \ google-osconfig-agent
Windows
Windows オペレーティング システムを更新するには、次のコマンドを実行します。
googet update
ゲスト環境を検証する
ゲスト環境がインストールされているかどうかを確認するには、インスタンスの起動中にコンソールに出力されるシステムログを調べるか、インスタンスへの接続中にインストールされたパッケージをリストします。
ゲスト環境の想定されるコンソールログを表示する
この表は、稼働中のゲスト環境が起動するときにインスタンスから発行されるコンソールログの想定される出力をまとめたものです。
オペレーティング システム サービス管理 予想される出力 CentOS/RHEL/Rocky Linux
Debian
Ubuntu
SLES
Container-Optimized OS 89 以降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 以前 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)
インスタンスのコンソールログを表示するには、次の手順を実行します。
コンソール
Google Cloud コンソールで、[VM インスタンス] ページに移動します。
gcloud
オペレーティング システムのバージョン別に読み込まれたサービスを表示する
この表は、稼働中のゲスト環境でインスタンスに読み込む必要があるサービスをまとめたものです。サービスをリストするコマンドは、インスタンスに接続した後に実行する必要があります。そのため、このチェックはインスタンスへのアクセス権がある場合にのみ実行できます。
オペレーティング システム サービスの一覧を取得するコマンド 予想される出力 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
インストールされているパッケージをオペレーティング システムのバージョン別に表示する
この表は、稼働中のゲスト環境でインスタンスにインストールする必要があるパッケージをまとめたものです。インストールされているパッケージを一覧表示するコマンドは、インスタンスに接続した後に実行する必要があります。そのため、このチェックはインスタンスへのアクセス権がある場合にのみ実行できます。
これらのパッケージの詳細については、ゲスト環境コンポーネントをご覧ください。
オペレーティング システム パッケージの一覧を取得するコマンド 予想される出力 CentOS/RHEL/Rocky Linux rpm -qa --queryformat '%{NAME}\n' \ | grep -iE 'google|gce'
パッケージのリストは異なる場合があります。
google-cloud-cli-anthoscli
などのコンポーネントも含まれる場合があります。RHEL イメージには、バージョン固有のパッケージ(google-rhui-client-rhel8
など)または 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
次のステップ
- トラブルシューティングのヒントをお読みください。
- メタデータの適用について学習します。
- SSH 認証鍵について学習します。
特に記載のない限り、このページのコンテンツはクリエイティブ・コモンズの表示 4.0 ライセンスにより使用許諾されます。コードサンプルは Apache 2.0 ライセンスにより使用許諾されます。詳しくは、Google Developers サイトのポリシーをご覧ください。Java は Oracle および関連会社の登録商標です。
最終更新日 2025-10-19 UTC。
-