パッチジョブのスケジュール

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

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

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

始める前に

Google Cloud Consolegcloud コマンドライン ツール、または Cloud OS Config API のいずれかを使用してパッチジョブをスケジュール設定できます。

権限

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

  • 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: ユーザーの G Suite ユーザー名。

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

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

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

gcloud コマンドライン ツールと Cloud OS Config API では、パッチデプロイの名前は patch-deployment-id と呼びます。

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

Console

  1. Google Cloud Console で、[OS Patch Management] ページに移動します。

    [OS Patch Management] ページに移動

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

    たとえば、接頭辞が test- で、ラベルが env=devapp=web のインスタンスに対してパッチジョブを実行する場合、設定は次のようになります。

    インスタンス フィルタを表示している OS パッチ管理ページ。

  4. [パッチ構成] セクションで、パッチを設定します。

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

  6. (省略可)[詳細オプション] セクションで、次の操作を行えます。

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

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'

API

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"
  }
}

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

Console

  1. Google Cloud Console で、[OS Patch Management] ページに移動します。

    [OS Patch Management] ページに移動

  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

API

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

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

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

Console

  1. Google Cloud Console で、[OS Patch Management] ページに移動します。

    [OS Patch Management] ページに移動

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

gcloud

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

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

API

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

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

以下を置き換えます。

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

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

Console

  1. Google Cloud Console で、[OS Patch Management] ページに移動します。

    [OS Patch Management] ページに移動

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

gcloud

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

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

API

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

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

以下を置き換えます。

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

次のステップ