パッチジョブの管理

パッチジョブの作成後、次の手順を使用してパッチの確認と管理を行うことができます。

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

始める前に

権限

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

  • roles/osconfig.patchJobExecutor: パッチジョブを実行、キャンセル、取得、一覧表示する権限が含まれています。また、パッチジョブのインスタンスの詳細を表示する権限も含まれています。
  • roles/osconfig.patchJobViewer: パッチジョブを取得して一覧表示するための読み取り専用アクセス権限が含まれています。また、パッチジョブのインスタンスの詳細を表示する権限も含まれています。
  • roles/containeranalysis.occurrences.viewer: パッチ コンプライアンス データの表示に必要な Container Analysis API occurrences に対する読み取り専用アクセス権が含まれています。

パッチジョブを一覧表示する

すべてのアクティブなジョブと完了したジョブのリストを表示します。

Console

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

    [OS Patch Management] ページに移動

  2. [パッチジョブ] タブを選択します。

gcloud

os-config patch-jobs list コマンドを使用して、パッチジョブを一覧表示します。

gcloud compute os-config patch-jobs list

gcloud コマンドライン ツールの場合、デフォルトの出力では、最新の完了済みまたはアクティブなパッチジョブ 10 個が返されます。この設定は、--limit フラグを使用してオーバーライドできます。

出力は次のようになります。

ID                                          NAME    DESCRIPTION               CREATE_TIME               UPDATE_TIME               STATE                  TARGETED_INSTANCES
23b0815e-1c94-4dc6-91b1-30a6da395cb9                                          2019-11-05T20:22:54.150Z  2019-11-06T19:40:08.641Z  COMPLETED_WITH_ERRORS  4
4116ad72-bd57-4e48-94dc-7a577dc707b6                                          2019-08-23T20:36:03.068Z  2019-08-23T20:36:15.984Z  CANCELED               2
06856cbe-9a7b-498e-9105-9ae4eb566511                                          2019-08-12T20:27:38.410Z  2019-08-12T20:28:37.583Z  SUCCEEDED              1
04a15964-9eaa-4282-96f5-9cd535352cf6                                          2019-08-12T17:48:22.938Z  2019-08-12T17:48:42.274Z  SUCCEEDED              0
21dc1e06-deee-4e3a-821e-8082a32abde5                testing patch job reboot  2019-07-24T22:45:07.451Z  2019-07-25T00:44:44.459Z  TIMED_OUT              1

複数のフラグを使用して検索のフィルタ、並べ替え、フォーマットが可能です。たとえば、次のコマンドを実行すると、上記の出力をフィルタしてステータスが SUCCEEDED のパッチジョブの URI のみを作成時刻の昇順で一覧表示できます。

gcloud compute os-config patch-jobs list \
   --filter="state=SUCCEEDED" \
   --sort-by="create_time" --uri

出力は次のようになります。

https://osconfig.googleapis.com/v1/projects/1234567/patchJobs/04a15964-9eaa-4282-96f5-9cd535352cf6
https://osconfig.googleapis.com/v1/projects/1234567/patchJobs/06856cbe-9a7b-498e-9105-9ae4eb566511

フラグの全リストについては、os-config patch-jobs list コマンドをご覧ください。

API

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

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

特定のパッチジョブのすべての VM インスタンスの詳細を一覧表示する

OS Patch Management を使用する VM インスタンスの完全なリストについては、パッチジョブのステータスを確認してください。

Console

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

    [OS Patch Management] ページに移動

  2. [パッチジョブ] タブを選択します。
  3. 確認するパッチジョブの名前をクリックします。
  4. [更新された VM インスタンス] までスクロールします。

gcloud

特定のパッチジョブのすべての VM の詳細を一覧表示するには、os-config patch-jobs list-instance-details コマンドを使用します。patch-job-id は、パッチジョブの ID に置き換えます。

gcloud compute os-config patch-jobs list-instance-details patch-job-id

たとえば、次のコマンドを実行すると、パッチジョブ 23b0815e-1c94-4dc6-91b1-30a6da395cb9 の一部であるすべてのインスタンスの詳細を表示できます。

gcloud compute os-config patch-jobs list-instance-details 23b0815e-1c94-4dc6-91b1-30a6da395cb9

出力は次のようになります。

NAME                        ZONE           STATE      FAILURE_REASON
instance-1                  us-central1-a  SUCCEEDED
guest-policy-test-instance  us-east1-c     TIMED_OUT  Instance timed out while in state: APPLYING_PATCHES after PT1H2.225S
my-centos                   us-west1-b     SUCCEEDED
my-windows                  us-west1-b     FAILED     Error running pre-patch step: fork/exec /tmp/pre_patch_script.sh: no such file ..."

複数のフラグを使用して検索のフィルタ、並べ替え、フォーマットが可能です。たとえば、次のコマンドを実行すると、すべての非アクティブな VM の詳細をインスタンス名で降順に並べて一覧表示できます。patch-job-id は、パッチジョブの ID に置き換えます。

gcloud compute os-config patch-jobs list-instance-details patch-job-id \
   --filter="state=INACTIVE" \
   --sort-by="~name"

フラグの全リストについては、os-config patch-jobs list-instance-details コマンドをご覧ください。

API

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

GET https://osconfig.googleapis.com/v1/projects/project-id/patchJobs/patch-job-id/instanceDetails

以下を置き換えます。

  • project-id: 実際のプロジェクト ID。
  • patch-job-id: 実際のパッチジョブ ID。

パッチジョブの説明を表示する

パッチジョブの詳細情報を確認します。

Console

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

    [OS Patch Management] ページに移動

  2. [パッチジョブ] タブを選択します。
  3. 確認するパッチジョブの名前をクリックします。
  4. [情報の更新] セクションを確認します。

gcloud

os-config patch-jobs describe コマンドを使用して、パッチジョブを記述します。patch-job-id は、パッチジョブの ID に置き換えます。

gcloud compute os-config patch-jobs describe patch-job-id

たとえば、次のコマンドを実行すると、パッチジョブ 23b0815e-1c94-4dc6-91b1-30a6da395cb9 に関する情報を表示できます。

gcloud compute os-config patch-jobs describe 23b0815e-1c94-4dc6-91b1-30a6da395cb9

出力は次のようになります。

createTime: '2019-11-05T20:22:54.150Z'
errorMessage: Completed with 2 instance failure(s).
filter: id=*
instanceDetailsSummary:
  instancesFailed: '1'
  instancesSucceeded: '2'
  instancesTimedOut: '1'
instanceFilter: {}
name: projects/1234567/patchJobs/23b0815e-1c94-4dc6-91b1-30a6da395cb9
patchConfig: {}
percentComplete: 100.0
state: COMPLETED_WITH_ERRORS
updateTime: '2019-11-06T19:40:08.641Z'

API

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

GET https://osconfig.googleapis.com/v1/projects/project-id/patchJobs/patch-job-id

以下を置き換えます。

  • project-id: 実際のプロジェクト ID。
  • patch-job-id: 実際のパッチジョブ ID。

パッチジョブをキャンセルする

パッチジョブをキャンセルすると、OS Config エージェントは実行中のサブタスクを終了しますが、その後は続行しません。サブタスクとは、簡単に停止できないエージェントによって実行されるタスクを指します。

たとえば、VM インスタンスの再起動中にパッチジョブがキャンセルされた場合、再起動(もしあれば再起動後の自動パッチも)は実行されて完了しますが、エージェントはそのパッチジョブの追加タスクを開始しません。

Console

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

    [OS Patch Management] ページに移動

    1. [パッチジョブ] タブを選択します。
    2. キャンセルするパッチジョブの名前をクリックします。
    3. ページの下部にある [中止] をクリックします。

gcloud

パッチジョブをキャンセルするには、os-config patch-jobs cancel コマンドを使用します。patch-job-id は、パッチジョブの ID に置き換えます。

gcloud compute os-config patch-jobs cancel patch-job-id

API

API で、patchJobs.cancel メソッドに対する POST リクエストを作成します。

POST https://osconfig.googleapis.com/v1/projects/project-id/patchJobs/patch-job-id:cancel

以下を置き換えます。

  • project-id: 実際のプロジェクト ID。
  • patch-job-id: 実際のパッチジョブ ID。

パッチ コンプライアンス データを取得する

特定の VM インスタンスのパッチ コンプライアンス データを取得するには、Container Analysis API を使用します。

  1. アクセス権限を設定します。プロジェクトに対する containeranalysis.occurrences.list 権限が必要です。または、roles/containeranalysis.occurrences.viewer ロールを付与して、必要な権限すべてを自動的に付与することもできます。
  2. Container Analysis API で、projects.occurrences.list メソッドに対する GET リクエストを作成します。必要な構成フィールドをすべて定義する必要があります。たとえば、必須フィールドを含むリクエストは次のようになります。

    GET https://containeranalysis.googleapis.com/v1/projects/project-id/occurrences/?filter=filter-expression
    

    以下を置き換えます。

    • project-id: 実際のプロジェクト ID。
    • filter-expression: フィルタ式。パッチ コンプライアンスの場合は、フィルタ式に次のパラメータを含める必要があります。

      kind="UPGRADE" AND resourceUrl="resource_url"
      • オカレンスの種類。パッチ コンプライアンスの場合は、UPGRADE を使用します。
      • resource_url は、VM インスタンスの完全な URL です。例: https://www.googleapis.com/compute/projects/my-project-id/zones/my-zone/instances/my-instance-id

      次のように、必要なリソース URL を URL エンコード型にして、GET リクエストに埋め込む必要があります。

      GET https://containeranalysis.googleapis.com/v1/projects/project-id/occurrences/?filter=kind%3D%22UPGRADE%22%20AND%20resourceUrl%3D%22resource_url%22

次のステップ