ゲスト環境


Google が提供する公開イメージを使用して仮想マシン(VM)インスタンスを起動すると、ゲスト環境が自動的に VM インスタンスにインストールされます。ゲスト環境は、Compute Engine で VM を適切に実行するために、メタデータ サーバーのコンテンツを読み取る一連のスクリプト、デーモン、バイナリから構成されます。メタデータ サーバーは、クライアントからゲスト オペレーティング システムに情報を転送する通信チャネルです。

このドキュメントでは、ゲスト環境のコンポーネント、サポートされているオペレーティング システムの概要について説明します。また、ゲスト環境のインストールまたは更新を手動で行う方法についても説明します。

ゲスト環境を手動でインストールまたは更新する状況

Google が提供する公開イメージを使用して作成された VM インスタンスには、デフォルトでインストールされるゲスト環境が含まれています。

ゲスト環境がインスタンスで実行されているかどうかを確認するには、ゲスト環境を検証するをご覧ください。

インストールされたゲスト環境が古くなっている場合があります。インスタンスで使用できるゲスト環境が古くなっている場合は、ゲスト環境を更新します。

それ以外の場合は、次の状況でゲスト環境の手動インストールが必要になることがあります。

  • カスタム イメージまたは仮想ディスクを Compute Engine プラットフォームにインポートし、ゲスト環境の自動インストールを許可していない。

    仮想ディスクまたはカスタム イメージをインポートするときに、Compute Engine でゲスト環境のインストールを許可することもできます。ただし、インポート プロセスでゲスト環境をインストールしない場合、ゲスト環境を手動でインストールする必要があります。

  • Migrate to Virtual Machines を使用して VM を Compute Engine に移行している

  • ローカル SSD ディスクのゲスト環境の最適化を行わないイメージを使用している。

  • v20141218 より前のイメージを使用しているインスタンスがある場合。

ゲスト環境を手動でインストールする必要がある場合は、ゲスト環境のインストールをご覧ください。

サポートされているオペレーティング システム

Compute Engine で利用可能なサポート対象のオペレーティング システムごとに、固有のゲスト環境パッケージが必要です。こうしたパッケージは、Google またはオペレーティング システムの所有者のいずれかがビルドします。ゲスト環境のパッケージをビルドするユーザーの詳細については、オペレーティング システムの詳細ドキュメントで「標準的なイメージとの大きな違い」のセクションをご覧ください。

Linux ゲスト環境

Linux ゲスト環境がビルドしたのが Google かオペレーティング システムのオーナーかにかかわらず、すべてのビルドに適用される重要なコンポーネントがいくつかあります。

Linux ゲスト環境の基本コンポーネントは、サポートされているディストリビューションに適した構成で作成される deb パッケージまたは rpm パッケージとして提供されます。

Linux ゲスト環境でパッケージ化された主なスクリプト、デーモン、パッケージの概要は次のとおりです。

  • google-compute-engine パッケージには、次のコンポーネントが含まれています。

    • systemd のシステム初期化スクリプト。
    • ホスト名の設定に使用される udev ルール、sysctl ルール、rsyslog 構成、dhcp 構成などのシステム構成。
    • インスタンスの起動時に実行される bash スクリプト。

    このパッケージは、google-guest-agent パッケージと google-compute-engine-oslogin パッケージに依存します。

    このパッケージのソースコードを確認するには、GitHub の guest-configs をご覧ください。

  • google-guest-agent パッケージには、Compute Engine の機能をサポートするためにゲスト OS で実行されるゲスト エージェントとメタデータ スクリプトの実行可能ファイルが含まれています。Linux ゲスト エージェントは、次の機能をサポートしています。

    Linux ゲスト エージェントは、次のように Compute Engine サービスと通信します。 + VM メタデータからデータを読み取り、データを書き込む + シリアルポートにログを送信し、必要に応じて Cloud Logging に送信します。

    Linux ゲスト エージェントは、分析とデバッグに使用するテレメトリー データをゲスト OS から収集します。テレメトリー データには、OS 名、OS バージョン、OS カーネル リリース、OS カーネル バージョン、OS エージェント バージョンが含まれます。テレメトリー データの収集を無効にするには、VM レベルまたはプロジェクト レベルで次のメタデータ disable-guest-telemetry=TRUE を設定します。

    このパッケージのソースコードを確認するには、GitHub の guest-agent をご覧ください。

  • google-compute-engine-oslogin パッケージには、OS Login のバイナリ、モジュール、スクリプトが含まれています。OS Login を使用し、Identity and Access Management(IAM)ロールを使用して VM インスタンスへのアクセスを管理できます。

    パッケージには次のものが含まれます。

    • 承認済み鍵コマンド。ユーザーの OS Login プロファイルから sshd へ、ログイン時にSSH 認証鍵でユーザーを認証するために行います。
    • Name Service Switch(NSS)モジュール。OS Login のユーザーとグループ情報をシステムで使用可能にするためのサポートを提供します。
    • プラガブル認証モジュール(PAM)。承認(および 2 要素サポートが有効になっている場合は認証)サポートを提供することで、システムが Google Cloud IAM 権限を使用して、インスタンスにログインするか、sudo 経由でroot としてオペレーションを実行する機能を管理します。
    • google_oslogin_nss_cache。ローカル ユーザーとグループ キャッシュを更新するためのユーティリティ。
    • selinux。SELinux を構成して OS Login をサポートするための SELinux ポリシー定義ファイルと、コンパイル済みポリシー パッケージが含まれています。

    OS Login のコンポーネントは、次のように Compute Engine サービスと通信します。

    このパッケージのソースコードを確認するには、GitHub の guest-oslogin をご覧ください。

  • gce-disk-expand コンポーネントは、次のように Compute Engine サービスと通信します。

    • シリアルポートにログを送信

    このパッケージのソースコードを確認するには、GitHub の guest-diskexpand をご覧ください。

  • google-osconfig-agent パッケージには、VM Manager が OS インベントリ、パッチ、OS ポリシーの管理に使用する OS Config エージェントが含まれています。

    スクリプトは、次のように Compute Engine サービスと通信します。

    このエージェントのソースコードを確認するには、GitHub の osconfig をご覧ください。

Windows ゲスト環境

次のリストは、Windows ゲスト環境の一部であるパッケージをまとめたものです。

  • google-compute-engine-windows パッケージには、Windows ゲスト エージェントが含まれています。Windows ゲスト エージェントは、次のプロセスをサポートするために使用されます。

    Windows ゲスト エージェントは、次のように Compute Engine サービスと通信します。 + VM メタデータからデータを読み取り、データを書き込む + Windows アプリケーション イベントログ、シリアルポート、Cloud Logging にログを送信する

    Windows ゲスト エージェントは、分析とデバッグに使用するテレメトリー データをゲスト OS から収集します。テレメトリー データには、OS 名、OS バージョン、OS カーネル リリース、OS カーネル バージョン、OS エージェント バージョンが含まれます。テレメトリー データの収集を無効にするには、VM レベルまたはプロジェクト レベルで次のメタデータ disable-guest-telemetry=TRUE を設定します。

    このエージェントのソースコードを確認するには、GitHub のゲスト エージェントをご覧ください。

  • google-compute-engine-sysprep パッケージには、イメージの作成前に Windows インスタンスを一般化するためのスクリプトが含まれています。また、新しいインスタンスを構成する際に最初に起動する instance_setup.ps1 スクリプトも含まれています。

    スクリプトは、次のように Compute Engine サービスと通信します。

    • VM メタデータとの間のデータの読み取りと書き込み
    • Windows アプリケーション イベントログとシリアルポートへのログの送信

    このエージェントのソースコードを確認するには、GitHub の compute-image-windows をご覧ください。

  • google-compute-engine-metadata-scripts パッケージには、Compute Engine、sysprep-specialize、startupshutdown の実行に使用されるスクリプトとバイナリが含まれています。

    スクリプトは、次のように Compute Engine サービスと通信します。

    • VM メタデータとの間のデータの読み取りと書き込み
    • sysprep-specialize-script-urlwindows-startup-script-url が使用された場合の Cloud Storage のロケーションからの読み取り
    • Windows アプリケーション イベントログ、シリアルポート、Cloud Logging にログを送信する

    このエージェントのソースコードを確認するには、GitHub の compute-image-windows をご覧ください。

  • google-compute-engine-powershell パッケージには、PowerShell モジュールが含まれています。このモジュールには、PowerShell スクリプトが他の Windows ゲスト環境スクリプトで使用する共通の関数が含まれています。

    スクリプトは、次の Compute Engine サービスと通信します。

    • デフォルトでは、PowerShell モジュールのロギング関数は Windows アプリケーション イベントログとシリアルポートにログを送信します。

    このエージェントのソースコードを確認するには、GitHub の compute-image-windows をご覧ください。

  • google-compute-engine-auto-updater パッケージには、Compute Engine パッケージを毎日更新するスクリプトが含まれています。このパッケージはデフォルトでインストールされなくなりました。

    スクリプトは、次のように Compute Engine サービスと通信します。

    • VM メタデータからのデータの読み取り
    • Windows アプリケーション イベントログとコンソールにログを送信するための Googet エージェントの呼び出し

    このエージェントのソースコードを確認するには、GitHub の compute-image-windows をご覧ください。

  • google-compute-engine-diagnostics パッケージには、インスタンスから診断情報を取得し、その情報を Cloud Storage バケットに保存するバイナリが含まれています。このバイナリは Windows ゲスト エージェントによって実行されます。

    スクリプトは、次のように Compute Engine サービスと通信します。

    • Cloud Storage バケットへのデータの保存

    このエージェントのソースコードを確認するには、GitHub の compute-image-tools をご覧ください。

  • certgen パッケージには、インスタンスに証明書を作成するバイナリが含まれています。

    このエージェントのソースコードを確認するには、GitHub の compute-image-windows をご覧ください。

  • googet パッケージには、ゲスト環境のインストールとメンテナンスに使用されるパッケージ マネージャーのバイナリが含まれています。

    スクリプトは、packages.cloud.google.com の Google Cloud リポジトリからデータを読み取ることで、Compute Engine サービスと通信します。

    このエージェントのソースコードを確認するには、GitHub の googet をご覧ください。

  • google-compute-engine-vss パッケージは、Microsoft の Volume Shadow Copy Service(VSS)を使用して、永続ディスクのスナップショットの取得に使用する Compute Engine VSS エージェントとプロバイダをインストールします。

    スクリプトは、次のように Compute Engine サービスと通信します。

    • Google Cloud スナップショット サービスとの通信

    このエージェントのソースコードを確認するには、GitHub の compute-image-windows をご覧ください。

  • google-osconfig-agent パッケージには、OS インベントリ、パッチ、OS ポリシーの管理に VM Manager で使用される OS Config エージェントが含まれています。

    スクリプトは、次のように Compute Engine サービスと通信します。

    このエージェントのソースコードを確認するには、GitHub の osconfig をご覧ください。

Compute Engine の Windows 用ドライバ

次の Compute Engine のドライバが Windows イメージ用に維持されています。

ドライバのタイプ パッケージ名
イーサネット アダプタ google-compute-engine-driver-netkvm
SCSI ディスク google-compute-engine-driver-vioscsi
ディスプレイ アダプター google-compute-engine-driver-gga
クラッシュ ハンドラ google-compute-engine-driver-pvpanic
Virtio メモリバルーン ドライバ google-compute-engine-driver-balloon
Google 仮想 NIC google-compute-engine-driver-gvnic

各ドライバは GooGet を使用してパッケージ化され、Cloud Repository に公開されます。ドライバのソースコードは、GitHub の compute-windows-drivers にあります。すべての Google Cloud Windows イメージは、GooGet ツールと Cloud Repository を使用してあらかじめ構成されています。GooGet をインストールしてリポジトリを自分で設定する必要がある場合は、パッケージングとパッケージの配布をご覧ください。

特定のドライバをインストールまたはアップグレードするには、次のコマンドを実行します。

googet install DRIVER_PACKAGE_NAME

次のステップ

ゲスト環境のインストールで、ゲスト環境のインストール手順を確認する。