VM Managerを徹底解説!

記事タイトルとURLをコピーする

G-gen の杉村です。Compute Engine VM を自動で管理・運用するための機能である VM Manager について徹底解説します。

概要

VM Manger とは

VM Manager は、Google Cloud(旧称 GCP)の Compute Engine VM 群の管理・運用を自動化するためのサービスです。

VM Manager は、CentOS、RHEL、Debian、Ubuntu などの各種 Linux ディストリビューションに加えて、Windows Server にも対応しています。対応 OS の一覧は以下のドキュメントから確認できます。

VM Manager には、大きく分けて以下の機能が存在します。

No 機能名 用途 利用方法
1 パッチ(Patch) OS やパッケージへのパッチ適用自動化やレポーティング Google Cloud コンソールの「パッチ」、gcloud、REST API
2 OS Inventory Management OS やパッケージの情報収集 Google Cloud コンソールの VM 詳細画面、gcloud、REST API
3 OS ポリシー(OS policies) パッケージのインストール・削除・更新 Google Cloud コンソールの「OS ポリシー」、gcloud、REST API

Patch はかつて OS patch management と、OS policies は OS configuration management と呼ばれていましたが2023年9月に機能名が改名されました。

なお Amazon Web Services(AWS)にも類似のサービスとして AWS Systems Manager があります。VM Manger は、AWS Systems Manager の Google Cloud 版とも言えます。

OS Config エージェント

VM Manager の機能を実現するため、OS 上には OS Config エージェント と呼ばれるエージェントソフトウェアをインストールします。このエージェントが Google Cloud と通信し、様々な管理タスクを実行します。

OS Config エージェントは、特定日以降(ビルド日付が v20200114 以降)の Ubuntu、Debian、RHEL、Windows Server などの Google Cloud 公式イメージにはプリインストール済みです。

詳細なインストール手順や、ネットワーク要件等は後述します。

料金

VM Manager では、VM Manager が有効化されている VM の台数に対して発生します。

月に100台の無料枠があり、100台を超える VM からは1台につき $0.003/時間の料金が発生します。31日ある月の場合、$0.003 × 744時間 = $2.232/台/月の料金が発生することになります。

課金が発生するのは無料枠を超えた101台目のインスタンスからですので、安価に大量の VM を管理できます。

パッチ(Patch)

パッチ(Patch)とは

パッチ(Patch)は Compute Engine VM の OS や、パッケージの管理をするための機能です。2023年9月までは OS Patch Management と呼ばれていました。

パッチには、以下の2つの主要機能があります。

  1. パッチ コンプライアンス レポート
  2. パッチ デプロイ

パッチ コンプライアンス レポートは VM OS やパッケージのパッチ状況を分析・レポーティングしてくれる機能です。パッチ デプロイは OS やパッケージのパッチ適用を自動化する仕組みです。いずれも VM 内で OS Config エージェントが動作し、yum や apt などのコマンドを実行して実現します。

パッチ コンプライアンス レポート

パッチ コンプライアンス レポートは、VM の OS やインストール済みパッケージの情報をダッシュボード化する機能です。

VM Manager が有効化されると OS Config エージェントは約10分ごとに各種情報を取得し、VM のメタデータの「ゲスト属性」に書き込みます。この情報は、後述の OS Inventory Management でも利用されます。

さらに VM Manager は、各 OS ごとに一般公開されている脆弱性情報と照合してレポートを作成します。脆弱性情報は RHEL、CentOS、Debian、Ubuntu で対応しており SLES、Rocky Linux、Windows Server では対応していません。

入手可能なアップデートがある場合、レポート上ではアップデートが「重大(赤)」「重要/セキュリティ(オレンジ)「その他(黄色)」「最新(緑)」に分類されます。

画像は公式ドキュメントより引用

パッチ デプロイ

概要

パッチ デプロイ 機能は、 OS やミドルウェアに対して自動的なパッチ適用を行う機能です。

パッチ デプロイ機能は、Google Cloud コンソール、gcloud コマンド、REST API エンドポイント経由で、Patch API(OS Config API)を呼び出して実行します。

Patch API によりパッチデプロイが開始されると、Patch API は VM 内の OS Config エージェントに指示を出し、エージェントは apt、yum、Windows Update 等、OS 固有のパッケージ管理サービスを呼び出してアップデートを実行します。

そのため yum、apt といったパッケージ管理サービスがレポジトリにアクセスするために、当該 VM がインターネットにリーチできる(パブリック IP を持っているか、Cloud NAT 経由)、またはローカルレポジトリを用意する必要があります。

適用タイミング

パッチ デプロイ機能によるパッチ適用は、オンデマンド実行(即時実行)するか、事前にスケジュール指定することができます。また、繰り返し予定としてスケジューリングすることも可能です。

オンデマンド実行は「同時パッチ適用(Simultaneous patching)」、スケジュール実行は「定期パッチ適用(Scheduled patching)」とも呼ばれます。

対象 VM の指定

パッチ適用の対象インスタンスは次のいずれかの方法で指定します。

  • プロジェクトに所属する全 VM を指定
  • 単一のインスタンスを指定
  • インスタンス名のプレフィクス(接頭辞)で指定
  • ゾーン単位で指定
  • ラベルで指定

また、対象となった VM 群のうち一度に停止する VM 数の割合を % で指定することができます。これにより一斉に VM が停止してしまうことを防ぐことができます。

ラベルについては、以下の記事を参照してください。

アップデート

アップデートのパッケージは、特定の名称を指定したり、Windows の場合では KB 番号を指定することもできます。

例として、Debian/Ubuntu ではディストリビューションやパッケージマネージャーから配布されるアップデートが対象であり、Windows では定義更新プログラム、ドライバー更新プログラム、機能パックの更新、などが対象です。

対象となるパッケージ種別は以下のドキュメントを参照してください。

パッチ構成指定画面

前処理・後処理

アップデートを適用した VM の挙動として「再起動なし」「常に再起動」「必要なら再起動」のいずれかから指定することができます。

また、パッチ適用前、あるいは適用後(再起動があれば再起動後)に実行するスクリプトを指定することもできます。スクリプトは Cloud Storage バケットに配置します。

OS Inventory Management

OS Inventory Management とは

OS Inventory Management は、OS レベルの各種情報や、パッケージ情報を詳細に収集・表示するための機能です。また、パッケージに関する脆弱性情報を表示することもできます。

プロジェクトレベルまたは VM レベルで VM Manager が有効化されると、情報収集が開始されます。

OS Inventory Management では、OS Config エージェントがおよそ10分間隔で収集した以下の情報を表示可能です。

  • OS 情報
    • ホスト名
    • LongName (OS の詳細名称。例 : Microsoft Windows Server 2016 Datacenter)
    • ShortName (OS の短縮名。例 : Windows)
    • カーネルバージョン
    • OS のアーキテクチャ
    • OS バージョン
    • OS Config エージェントのバージョン
    • Last updated (OS Config エージェントが最後に情報を更新した時間)
  • パッケージ情報
    • パッケージマネージャー(RPM、yum、DEB、apt、GooGet for Windows Server)取得する情報
  • Windows Server で取得可能な以下の情報
    • Windows Update Agent
    • Windows Quick Fix Engineering アップデート
    • Windows Installer

閲覧方法

OS Inventory Management の情報を閲覧するには、Google Cloud コンソールの VM 詳細画面で「OS 情報」タブへ遷移します。

また gcloud または REST API を利用することで、特定ゾーンにある VM の情報を一覧取得することもできます。

OS Inventory Management の情報閲覧

OS ポリシー(OS policies)

OS ポリシーとは

OS ポリシー(OS policies)機能は、VM のパッケージ構成のデプロイ、メンテナンス、レポート作成を行うことができる機能です。2023年9月までは OS Configuration Management という名称でした。

OS ポリシーという定義ファイル(JSON または YAML)により VM のパッケージ構成のあるべき姿を定義して VM に適用すると、その状態とのずれが発生したときに、自動的に是正アクションが実行されます。

前述のパッチ デプロイ機能がオンデマンドあるいは定期的にアップデート指示を配信するものであるのに対して、OS ポリシー機能はあるべき姿を定義してずれをなくしていくというコンセプトです。

以下のようなユースケースが想定されています。

  • モニタリングエージェントやセキュリティエージェント等のインストール・保守
  • スタートアップスクリプトの管理
  • コンプライアンスチェック
  • パッケージレポジトリの管理
  • ファイルの配信
  • スクリプト実行によるサーバ内の状態維持

構成要素

OS ポリシー

OS ポリシーファイルは、VM のパッケージ構成のあるべき姿を宣言的に定義するファイルです。OS ポリシーは JSON または YAML 形式で記述します。

OS ポリシーファイルは、以下の2つのモードのいずれかとして定義します。

モード名 意味
Validation リソースが望ましい状態かチェックする。是正アクションは行わない
Enforcement リソースが望ましい状態かチェックする。望ましい状態でなければ是正アクションを実行する

また OS ポリシー内には以下のリソースを定義でき、実施するチェックまたはアクションを定義できます。

リソース名 意味
pkg パッケージのインストールまたは削除を行う(Linux、Windows の両方で利用可能)
repository パッケージを取得するレポジトリを指定する
exec /bin/sh(Linux)または Powershell(Windows)を実行する
file サーバー上のファイルを管理する

以下は、YAML 形式で定義した OS ポリシーファイルのサンプルです。以下のドキュメントから引用しています。以下のサンプルでは、Cloud Storage から MSI ファイルをダウンロードして、サーバーにインストールします。

# An OS policy to install a Windows MSI downloaded from a Google Cloud Storage bucket.
id: install-msi-policy
mode: ENFORCEMENT
resourceGroups:
  - resources:
      - id: install-msi
        pkg:
          desiredState: INSTALLED
          msi:
            source:
              gcs:
                bucket: my-bucket
                object: my-app.msi
                generation: 1619136883923956

OS ポリシーの割り当て

OS ポリシーの割り当て(OS policy assignment)は OS ポリシーを実際に VM に適用する際に作成する設定です。

1 個の OS ポリシー割り当てで複数の OS ポリシーを指定できます。また適用対象の VM は以下の軸で選択することができます。

  • ゾーン
  • OS ファミリー
  • ラベル(含める)
  • ラベル(除外)

例えば以下のような指定をすると「 asia-northeast-1-b ゾーンにある」「 ubuntu の VM で」「 env:test というラベルを持ち」「かつ goog-gke-node というラベルを持たない」に当てはまるすべての VM に、OS ポリシーを適用できます。

  • ゾーン : asia-northeast-1-b
  • OS ファミリー : ubuntu
  • ラベル(含める): env:test
  • ラベル(除外): goog-gke-node

参考 : OS policy assignment

ロールアウト

OS ポリシーの割り当てを作成する際に以下のロールアウトオプションを設定することができます。

  • ウェーブサイズ
  • 待機時間

ウェーブサイズは一度にポリシーを適用する VM の割合です。対象となる VM のうち、何割が同時にアップデート等の対象になるかを指定できます。デフォルトは10%です。

待機時間は、ポリシー適用開始から実際にロールアウトが始まるまでの猶予時間です。ウェーブサイズごとにポリシー適用が始まり、最初のウェーブで問題が発生した際などに、次のウェーブが始まるまでにロールアウトを中止することが可能になります。

エージェントと情報収集

OS ポリシーの取得と実行は、VM 上の OS Config エージェントが行っています。OS ポリシーの割り当てが作成されると、VM では60分のチェック間隔でポリシー確認と適用が実行されます。

ポリシーが VM に配信されると、OS Config エージェントは VM の内部状況を確認し、ポリシー通りの状態になっていれば何もせず、ポリシーとの差異があれば是正アクションを実行します。

有効化

概要

以下のすべての条件を満たしていると、VM Manager のすべての機能が利用できるようになります。

  • Google Cloud プロジェクトで OS Config Service API が有効化されている
  • 対象 VM に OS Config エージェントがインストールされている
  • プロジェクト単位または VM 単位で、必要な Compute Engine メタデータが設定されている
  • VM がネットワーク要件を満たしている
  • VM にサービスアカウントがアタッチされている

詳細な手順は、以下の公式ドキュメントに記載されています。当記事では概要を解説します。

サービス API の有効化

Compute Engine API に加えて、以下サービスの API を有効化する必要があります。有効化は、Google Cloud コンソールの API とサービス の画面から行ったり、gcloud コマンドラインで行うことができます。

  • OS Config Service API ( osconfig.googleapis.com )

OS Config エージェント

VM を VM Manager 機能の対象とするには、VM に OS Config エージェントをインストールします。

Google Cloud 公式のイメージで VM を作成した場合、ビルド日付が v20200114 以降の CentOS、Container-Optimized OS、Debian、Red Hat Enterprise Linux (RHEL)、Rocky Linux、SLES、Ubuntu、Windows Server には既にエージェントがインストール済みです。

もしこれ以外のイメージの場合、以下のドキュメントを参考にしてエージェントをインストールします。

VM Manager の各機能がサポートする OS 一覧は、以下の公式ドキュメントに記載されています。

プロジェクト全体でメタデータを設定

プロジェクトに所属する全ての VM を管理対象にする場合は、以下の手順を実施します。実施すると、既存の VM に加え今後作成される全ての VM が自動的に対象になります。

該当プロジェクトの Compute Engine コンソールにて「メタデータ」ページに移動します。ここで以下のメタデータを追加します。

  • enable-osconfig : TRUE

メタデータとは、Compute Engine に設定できる Key-Value のテキスト情報です。プロジェクト単位または VM 単位で、各種メタデータを登録できます。

なお、以前のバージョンの OS Inventory Management 機能では enable-guest-attributes : TRUE というメタデータも追加する必要がありましたが、現在のバージョンでは不要です。

VM 単位でメタデータを設定

プロジェクト全体ではなく、個別の VM 単位で有効化したい場合は対象 VM のレベルでメタデータを設定します。メタデータは、VM の新規作成時に追加することもできますし、既存 VM に追加することもできます。

プロジェクト全体レベルでメタデータを追加済みの場合は、当手順を行う必要はありません。

コンソールでは、VM 編集画面からカスタムメタデータを設定できます。追加するメタデータはプロジェクト全体のときと同様で、enable-osconfig : TRUE です。

組織レベルでメタデータを設定

後述する組織のポリシー機能を使うと、組織やフォルダ配下で今後作成されるすべてのプロジェクトにメタデータを自動で追加することができます。

当記事の 組織で VM Manager を利用する の章をご参照ください。

ネットワーク要件

OS Config エージェントが Google Cloud の API と通信できるよう、VM が通信要件を満たしている必要があります。

VM が外部 IP を持っていたり、Cloud NAT 経由でインターネットに出られるようになっていれば問題有りません。そうではない場合、以下のいずれかの方法で VM 内の OS Config エージェントが OS Config API と通信できるようにします。

  1. HTTP プロキシを利用
  2. サブネットで限定公開の Google アクセスを有効化

VM で HTTP プロキシを利用する方法については、以下のドキュメントを参照してください。

限定公開の Google アクセス機能については、以下の記事を参照してください。

VM にサービスアカウントをアタッチ

対象 VM にサービスアカウントがアタッチされている必要があります。

ただしこのサービスアカウントには IAM ロールの紐づけは不要です。サービスアカウントは OS Config API との通信に署名をするためだけに用いられるため、IAM ロールが全く付与されていない空のサービスアカウントでも問題ありません。

組織で VM Manager を利用する

組織レベルまたはプロジェクトレベルで VM Manager を有効化する

組織のポリシー機能を使うことで、組織やフォルダ全体で VM Manager を有効化できます。組織のポリシー機能については、以下の記事も参照してください。

blog.g-gen.co.jp

組織レベルまたはフォルダレベルで Require OS Configconstraints/compute.requireOsConfig)制約を TRUE に設定すると、新規に作成されるプロジェクトに、自動的に enable-osconfig : TRUE メタデータが追加されます。

また、enable-osconfigFALSE に変えるような設定は拒否されます。

ただし、この組織のポリシーの制約を有効化する前から存在した既存の Google Cloud プロジェクトのメタデータは変更されません。既存プロジェクトで VM Manager を有効化したい場合は、個別にメタデータを追加する必要があります。プロジェクトの数が多い場合、gcloud コマンドラインや各プログラミング言語用のクライアントライブラリを用いて、プログラマブルにプロジェクトにメタデータを追加することを検討してください。

加えて、この組織のポリシーの制約で有効化できるのはメタデータのみです。前述した OS Config エージェントの要件やネットワーク要件は個別の VM ごとに満たしている必要があります。

組織レベルでのパッチ情報閲覧

パッチのサマリ情報を、組織レベルまたはフォルダレベルで閲覧することができます。

組織、フォルダ、プロジェクトに対して適切な権限を持っていれば、特別な設定をすることなく、プロジェクトをまたいだ情報確認ができます。Google Cloud コンソール画面の「パッチ」から「プロジェクト」タブを選択したうえで、画面上部のプロジェクトセレクタで、組織またはフォルダを選択します。

この画面では、各プロジェクトの VM の合計、VM Manager のモニタリング対象となっている VM の数、「重大」「重要」など各レベルで検知されているパッケージアップデートの数などのサマリが確認できます。

組織レベルでのパッチサマリ

なお「VM の合計」ははプロジェクトで VM Manager が有効でなくても確認できますが、App Engine のカスタムランタイムで起動された VM 等もカウントされる場合があります。

組織またはフォルダ配下のすべてのプロジェクトで VM Manager が有効になっていない場合は、有効になっているプロジェクトの情報のみが表示されます。

また、同画面の Query Builder を使うと、OS や OS のバージョン、CVE で脆弱性が報告されている VM などをフィルタして表示することができます。

Query Builder

さらに、Google Cloud コンソール画面の「パッチ」>「ダッシュボード」タブでは、組織やフォルダの配下にある全 VM の OS の総数や、パッチ適用状況を確認できます。ただし、VM Manager が有効になっていないプロジェクトや VM の情報は表示されません。

「パッチ」>「ダッシュボード」タブ

OS ポリシーの利用

OS ポリシーの遵守状況を、組織レベルまたはフォルダレベルで閲覧することができます。

パッチ機能と同様に、組織、フォルダ、閲覧対象のプロジェクトに対して適切な権限を持っていれば、プロジェクトをまたいだ情報確認ができます。Google Cloud コンソール画面の「OS ポリシー」から「プロジェクト」タブを選択したうえで、画面上部のプロジェクトセレクタで、組織またはフォルダを選択します。

杉村 勇馬 (記事一覧)

執行役員 CTO / クラウドソリューション部 部長

元警察官という経歴を持つ現 IT エンジニア。クラウド管理・運用やネットワークに知見。AWS 12資格、Google Cloud認定資格11資格。X (旧 Twitter) では Google Cloud や AWS のアップデート情報をつぶやいています。