パッチジョブをスケジュールする


パッチジョブをオンデマンドで実行するだけでなく、パッチデプロイを作成して、設定されたスケジュールに基づいて自動的にパッチジョブが実行されるようにすることもできます。

各パッチデプロイには、特定の日時にパッチジョブを実行する 1 回限りのスケジュール、または指定した間隔でパッチジョブを実行する定期スケジュールがあります。

インスタンス フィルタを使用すると、多数のインスタンスに同時にパッチを適用できます。これらのフィルタは、実行時に個々のパッチジョブに適用されます。これにより、プロジェクト内の変更がリアルタイムでキャプチャされます。たとえば、2 週間後にゾーン asia-souteast1-b 内のすべてのインスタンスにパッチを適用するパッチデプロイが作成されたとします。パッチを作成した時点では、ゾーンに 20 個のインスタンスがありましたが、数日後に 40 個の新しいインスタンスがゾーンに追加されます。フィルタはパッチの開始時に適用されるため、60 個のインスタンスがすべて更新されます。これにより、パッチのデプロイ スケジュールを更新することなく、インスタンスを追加および削除できます。

始める前に

  • OS Config の割り当てを確認します。
  • まだ設定していない場合は、認証を設定します。認証とは、Google Cloud サービスと API にアクセスするために ID を確認するプロセスです。ローカル開発環境からコードまたはサンプルを実行するには、次のように Compute Engine に対する認証を行います。

    このページのサンプルをどのように使うかに応じて、タブを選択してください。

    コンソール

    Google Cloud コンソールを使用して Google Cloud サービスと API にアクセスする場合、認証を設定する必要はありません。

    gcloud

    1. Google Cloud CLI をインストールし、次のコマンドを実行して初期化します。

      gcloud init
    2. デフォルトのリージョンとゾーンを設定します

    REST

    このページの REST API サンプルをローカル開発環境で使用するには、gcloud CLI に指定した認証情報を使用します。

      Google Cloud CLI をインストールし、次のコマンドを実行して初期化します。

      gcloud init

パッチジョブは、Google Cloud コンソールGoogle Cloud CLI、または REST を使用してスケジュール設定できます。

権限

プロジェクトのオーナーは、パッチデプロイの作成と管理を行うための完全アクセス権を持っています。他のすべてのユーザーには、権限を付与する必要があります。次のいずれかの詳細なロールを付与できます。

  • roles/osconfig.patchDeploymentAdmin: パッチデプロイを作成、削除、取得、一覧表示する権限が含まれています。
  • roles/osconfig.patchDeploymentViewer: パッチデプロイを取得して一覧表示するための読み取り専用アクセス権が含まれています。

たとえば、ユーザーにパッチデプロイに対するユーザー管理者権限を付与するには、次のコマンドを実行します。

gcloud projects add-iam-policy-binding project-id \
    --member user:user-id@gmail.com \
    --role roles/osconfig.patchDeploymentAdmin

以下を置き換えます。

  • project-id: プロジェクト ID。
  • user-id: ユーザーの Google Workspace のユーザー名。

パッチデプロイを作成する

パッチデプロイを作成するときは、パッチデプロイの名前が次の命名要件を満たしている必要があります。

  • 各名前はプロジェクト内で一意である必要があります。
  • 小文字、数字、ハイフンのみを使用する
  • 文字から始まる
  • 数字または文字で終わる
  • 1 から 63 文字である

Google Cloud CLI と REST では、パッチデプロイの名前は patch-deployment-id と呼ばれます。

パッチデプロイを開始したら、Patch ダッシュボードを使用してパッチをモニタリングできます。パッチジョブの開始後、ダッシュボードにデータが入力されるまでに約 30 分かかります。

コンソール

  1. Google Cloud コンソールで、[Compute Engine] > [VM Manager] > [パッチ] ページに移動します。

    [パッチ] ページに移動

  2. [新しいパッチのデプロイ] をクリックします。
  3. [ターゲット VM] セクションで、パッチを適用する VM を含むゾーンを選択します。すべてのゾーンを選択することもできます。

    たとえば、次のような名前とラベルのフィルタを入力して、選択したゾーン内の特定の VM にパッチを適用します。

    • 名前の接頭辞: test-
    • ラベル: env=devapp=web
  4. [パッチ構成] セクションで、パッチを構成します。

    1. パッチの名前を指定します。
    2. オペレーティング システムに必要なアップデートを選択します。詳細については、OS パッチジョブの内容をご覧ください。
  5. [スケジュール] セクションで、次の操作を行います。

    • スケジュールを選択します。1 回限りのパッチジョブまたは定期的なパッチジョブをスケジュール設定できます。
    • (省略可)期間またはメンテナンスの時間枠を設定します。
  6. [ロールアウトのオプション] セクションで、パッチ ロールアウトのオプションを構成します。

    • 一度に 1 つのゾーンのみにパッチを適用するか、複数のゾーンに同時にパッチを適用するか選択します。
    • 停止予算を設定します。停止予算とは、パッチプロセスによって一度に中断されるゾーン内の VM の数または割合です。
  7. (省略可)[詳細オプション] セクションで、次の操作を行えます。

  8. [デプロイ] をクリックします。

gcloud

os-config patch-deployments create コマンドを使用してパッチデプロイを作成します。

gcloud compute os-config patch-deployments create patch-deployment-id \
    --file patch-deployment-file

以下を置き換えます。

  • patch-deployment-id: パッチデプロイの名前。
  • patch-deployment-file: パッチデプロイの構成を含む YAML または JSON ファイルへのパス。

パッチデプロイ YAML ファイルの例

次のサンプル YAML ファイルを使用して、ゾーン us-west2-bus-west2-c のすべてのインスタンスに対する定期的なスケジュールを作成できます。この定期的なスケジュールの仕様は、次のとおりです。

  • 開始日は 2019 年 1 月 9 日午後 7 時 30 分です
  • 終了日は 2020 年 1 月 9 日午後 7 時 30 分です
  • 使用するタイムゾーンは「America/Los_Angeles」です
  • 毎週火曜日に実行されます
instanceFilter:
  zones:
  - us-west2-b
  - us-west2-c
recurringSchedule:
  frequency: WEEKLY
  weekly:
    dayOfWeek: TUESDAY
  timeOfDay:
    hours: 19
    minutes: 30
  timeZone:
    id: America/Los_Angeles
  startTime: '2019-09-01T12:00:00Z'
  endTime: '2020-09-01T12:00:00Z'

REST

API で POST リクエストを作成し、新しいパッチデプロイを作成します。patchDeployments.create API ドキュメントで説明されているように、必要なすべての構成フィールドを明示的に定義する必要があります。たとえば、最小必須フィールドを含むパッチデプロイ(インスタンス フィルタとスケジュール)は以下のようになります。project-id は実際のプロジェクト ID に置き換えます。

POST https://osconfig.googleapis.com/v1/projects/project-id/patchJobs:execute

{
  "instanceFilter": instance-filter

  // Add one of the following parameters:
  "recurringSchedule": schedule
  "oneTimeSchedule": schedule
}

以下を置き換えます。

  • project-id: 実際のプロジェクト ID。
  • instance-filter: 必要なフィルタ パラメータ。インスタンス フィルタの詳細については、インスタンス フィルタをご覧ください。
  • schedule: oneTimeSchedule または recurringSchedule パラメータを指定します。このパラメータは、日付、時刻、頻度など、パッチジョブを実行するためのスケジュール パラメータを示します。

例 1: ゾーン us-west2-bus-west2-c のすべてのインスタンスで、2020 年 1 月 10 日午前 12 時(UTC)にパッチジョブを実行する 1 回限りのスケジュールを作成します。

{
 "instanceFilter":{
   "zones":[
     "us-west2-b",
     "us-west2-c"
   ]
 },
 "oneTimeSchedule": {
   "executeTime": "2020-01-10T00:00:00Z"
 }
}

例 2: ゾーン us-west2-bus-west2-c のすべてのインスタンスに対して定期的なスケジュールを作成します。この定期的なスケジュールの仕様は、次のとおりです。

  • 開始日は 2019 年 1 月 9 日午後 7 時 30 分です
  • 終了日は 2020 年 1 月 9 日午後 7 時 30 分です
  • 使用するタイムゾーンは「America/Los_Angeles」です
  • 毎週火曜日に実行されます
POST https://osconfig.googleapis.com/v1/projects/project-id/patchDeployments
{
  "instanceFilter":{
    "zones":[
      "us-west2-b",
      "us-west2-c"
    ]
  },
  "recurringSchedule":{
    "frequency":"WEEKLY",
    "weekly":{
      "dayOfWeek":"TUESDAY"
    },
    "timeOfDay":{
      "hours":19,
      "minutes":30
    },
    "timeZone":{
      "id":"America/Los_Angeles"
    },
    "startTime":"2019-09-01T12:00:00Z",
    "endTime":"2020-09-01T12:00:00Z"
  }
}

パッチのデプロイを一覧表示する

コンソール

  1. Google Cloud コンソールで、[Compute Engine] > [VM Manager] > [パッチ] ページに移動します。

    [パッチ] ページに移動

  2. [スケジュール済みのデプロイ] タブを選択します。

gcloud

os-config patch-deployments list コマンドを使用して、パッチデプロイを一覧表示します。

gcloud compute os-config patch-deployments list

このコマンドによって、すべてのパッチデプロイが返されます。出力は次のようになります。

NAME              LAST_RUN                  NEXT_RUN              FREQUENCY
first-deployment  2019-12-18T00:07:00.738Z  ---                   Once: Scheduled for 2019-12-18T00:07:00.000Z
my-deployment1    2020-01-05T14:00:00.228Z  2020-01-12T14:00:00Z  Recurring - Weekly
my-deployment2    ---                       2020-01-15T05:30:00Z  Recurring - Monthly on specific date(s)

複数のフラグを使用して、検索の絞り込みや形式化を行えます。たとえば、次のコマンドを実行して、最初の 10 件のパッチデプロイを 2 ページにリストします。project-id は、プロジェクト ID で置き換えてください。

gcloud compute os-config patch-deployments list --limit 10 --page-size 2

REST

API で、patchDeployments.list メソッドに対する GET リクエストを作成します。project-id は実際のプロジェクト ID に置き換えます。

GET https://osconfig.googleapis.com/v1/projects/project-id/patchDeployments

パッチのデプロイを説明する

コンソール

  1. Google Cloud コンソールで、[Compute Engine] > [VM Manager] > [パッチ] ページに移動します。

    [パッチ] ページに移動

  2. [スケジュール済みのデプロイ] タブを選択します。
  3. 確認するデプロイの名前をクリックします。

gcloud

os-config patch-deployments describe コマンドを使用してパッチデプロイを記述します。patch-deployment-id は、パッチデプロイの名前に置き換えます。

gcloud compute os-config patch-deployments describe patch-deployment-id

REST

API で、patchDeployments.get メソッドに対する GET リクエストを作成します。

GET https://osconfig.googleapis.com/v1/projects/project-id/patchDeployments/patch-deployment-id

以下を置き換えます。

  • project-id: 実際のプロジェクト ID。
  • patch-deployment-id: パッチデプロイの名前。

パッチデプロイを削除する

コンソール

  1. Google Cloud コンソールで、[Compute Engine] > [VM Manager] > [パッチ] ページに移動します。

    [パッチ] ページに移動

  2. [スケジュール済みのデプロイ] タブを選択します。
  3. 削除するデプロイの名前をクリックします。
  4. [このスケジュールを削除] をクリックします。

gcloud

os-config patch-deployments delete コマンドを使用してパッチデプロイを削除します。patch-deployment-id は、パッチデプロイの名前に置き換えます。

gcloud compute os-config patch-deployments delete patch-deployment-id

REST

API で、patchDeployments.delete メソッドに対する DELETE リクエストを作成します。

DELETE https://osconfig.googleapis.com/v1/projects/project-id/patchDeployments/patch-deployment-id

以下を置き換えます。

  • project-id: 実際のプロジェクト ID。
  • patch-deployment-id: パッチデプロイの名前。

次のステップ