REST リソース: projects.guestPolicies

リソース: GuestPolicy

ゲスト構成ポリシーを表す OS Config リソース。これらのポリシーは、インストールまたは削除するパッケージ、パッケージ リポジトリの構成、インストールするソフトウェアなど、VM インスタンスのゲスト環境の望ましい状態を表します。

JSON 表現

{
      "name": string,
      "description": string,
      "createTime": string,
      "updateTime": string,
      "assignment": {
        object (Assignment)
      },
      "packages": [
        {
          object (Package)
        }
      ],
      "packageRepositories": [
        {
          object (PackageRepository)
        }
      ],
      "recipes": [
        {
          object (SoftwareRecipe)
        }
      ],
      "etag": string
    }
フィールド
name

string

必須。このプロジェクトのリソースの一意の名前。次のいずれかの形式を使用しますprojects/{project_number}/guestPolicies/{guestPolicyId}

description

string

ゲストポリシーの説明。説明の長さは 1,024 文字までに制限されています。

createTime

Timestampstring ( format)

出力のみ。このゲストポリシーが作成された時刻。

RFC3339 UTC「Zulu」形式のタイムスタンプ。精度はナノ秒。例: "2014-10-02T15:01:23.045123456Z"

updateTime

Timestampstring ( format)

出力のみ。このゲストポリシーが前回更新された時刻。

RFC3339 UTC「Zulu」形式のタイムスタンプ。精度はナノ秒。例: "2014-10-02T15:01:23.045123456Z"

assignment

Assignmentobject ()

必須。このポリシーに割り当てられている VM インスタンスを指定します。これにより、ラベル、名前、OS、ゾーンなど、さまざまなパラメータで VM インスタンスのセットまたはグループをターゲティングできます。

空のままにすると、このポリシーの下にあるすべての VM インスタンスがターゲットになります。

リソース階層内の同じレベルでは(1 つのプロジェクト内)、サービスで相互に競合する複数のポリシーを作成することはできません。詳細については、サービスが割り当ての競合を処理する方法をご確認ください。

packages[]

Packageobject ()

このポリシーによって管理されるソフトウェア パッケージ。

packageRepositories[]

PackageRepositoryobject ()

VM インスタンスで構成するパッケージ リポジトリのリスト。これらのリポジトリを使用できるように、これは他の構成が適用される前に行われます。パッケージ リポジトリは、対応するパッケージ マネージャーが利用可能な場合にのみ構成されます。

recipes[]

SoftwareRecipeobject ()

VM インスタンスにインストールするレシピのリスト。

etag

string

このゲストポリシーの ETag。更新時にこれが提供される場合、サーバーの ETag に一致する必要があります。

割り当て

割り当ては、ポリシーが適用される VM インスタンスのグループを表します。

割り当てが空の場合、すべての VM インスタンスに適用されます。それ以外の場合、対象となる VM インスタンスは指定されたすべての条件を満たす必要があります。したがって、ラベルとゾーンの両方が指定されている場合、ポリシーはそれらのラベルを持ち、かつ、それらのゾーンにある VM インスタンスに適用されます。

JSON 表現

{
      "groupLabels": [
        {
          object (GroupLabel)
        }
      ],
      "zones": [
        string
      ],
      "instances": [
        string
      ],
      "instanceNamePrefixes": [
        string
      ],
      "osTypes": [
        {
          object (OsType)
        }
      ]
    }
フィールド
groupLabels[]

GroupLabelobject ()

これらのラベルセットの少なくとも 1 つと一致するインスタンスをターゲットにします。これにより、異なるグループをターゲットにして割り当てることができます(「env=prod」「env=staging」など)。

zones[]

string

これらのゾーンにあるインスタンスをターゲットにします。任意のゾーン内のインスタンスをターゲットにする場合は、空のままにします。

ゾーンによるターゲティングは一般的ではなく、ゾーンによる変更の管理を容易にするためにサポートされています。

instances[]

string

指定されたインスタンスをすべてターゲットにします。インスタンスは、zones/[ZONE]/instances/[INSTANCE_NAME] の形式で URI によって指定されます。

インスタンスによるターゲティングは一般的ではなく、インスタンスによる変更の管理を容易にするため、または開発やテスト用に特定の VM インスタンスをターゲットにするためにサポートされています。

プロジェクト レベルのポリシーに対してのみサポートされており、このプロジェクト内のインスタンスを参照する必要があります。

instanceNamePrefixes[]

string

名前がこれらの接頭辞のいずれかで始まる VM インスタンスをターゲットにします。

ラベルの場合と同様に、config をターゲットにして VM インスタンスをグループ化できます(「prefix="prod-"」など)。

プロジェクト レベルのポリシーでのみサポートされています。

osTypes[]

OsTypeobject ()

次の OS タイプの少なくとも 1 つに一致する VM インスタンスをターゲットにします。

指定した OsType が含まれるようにするには、VM インスタンスは指定されたすべての条件に一致する必要があります。

GroupLabel

これらのラベルをすべて持つものとして識別できる VM インスタンスのグループを表します(「"env=prod and app=web"」など)。

JSON 表現

{
      "labels": {
        string: string,
        ...
      }
    }
フィールド
labels

map (key: string, value: string)

この割り当てグループに含まれる条件としてインスタンスに必要な Google Compute Engine インスタンスのラベル。

"key": value ペアのリストを含むオブジェクト。例: { "name": "wrench", "mass": "1.3kg", "count": "3" }

OsType

VM インスタンスを OS タイプ別に選択する条件を定義します。

JSON 表現

{
      "osShortName": string,
      "osVersion": string,
      "osArchitecture": string
    }
フィールド
osShortName

string

OS インベントリが有効であり、次の OS 略称を持つ VM インスタンスをターゲットにします(「debian」、「windows」など)。

osVersion

string

OS インベントリが有効であり、次の OS バージョンを持つ VM インスタンスをターゲットにします。

osArchitecture

string

OS インベントリが有効であり、次の OS アーキテクチャを持つ VM インスタンスをターゲットにします。

パッケージ

パッケージは、インストールまたは削除するソフトウェア パッケージへの参照です。VM インスタンス上のエージェントは、システム パッケージ マネージャーを使用して構成を適用します。

エージェントがパッケージのインストールや削除に使用するコマンドは次のとおりです。

Apt のインストール: apt-get update && apt-get -y install package1 package2 package3 削除: apt-get -y remove package1 package2 package3

Yum のインストール: yum -y install package1 package2 package3 削除: yum -y remove package1 package2 package3

Zypper のインストール: zypper install package1 package2 package3 削除: zypper rm package1 package2

Googet のインストール: googet -noconfirm install package1 package2 package3 削除: googet -noconfirm remove package1 package2 package3

JSON 表現

{
      "name": string,
      "desiredState": enum (DesiredState),
      "manager": enum (Manager)
    }
フィールド
name

string

必須。パッケージの名前。パッケージは、パッケージ名と、パッケージがターゲットとするマネージャーを確認することで、競合の検証用に一意に識別されます。

desiredState

DesiredStateenum ()

エージェントがこのパッケージに対して保持する必要がある DesiredState。デフォルトでは、パッケージがインストールされていることが確認されます。

manager

Managerenum ()

このパッケージのインストールに使用できるパッケージ マネージャーのタイプ。システムにパッケージ マネージャーがない場合、パッケージはインストールまたは削除されず、エラー メッセージは返されません。デフォルト、または ANY を指定した場合、エージェントは、デフォルトのパッケージ マネージャーを使用してこのパッケージのインストールと削除を試行します。これは、異なるタイプのシステムに適用されるポリシーを作成する場合に便利です。

デフォルトの動作は ANY です。

DesiredState

OS Config エージェントが VM インスタンス上で維持する望ましい状態。

列挙型
DESIRED_STATE_UNSPECIFIED デフォルトでは、パッケージがインストールされていることが確認されます。
INSTALLED エージェントによって、パッケージがインストールされていることが確認されます。
UPDATED エージェントによって、パッケージがインストールされていることが確認され、定期的に更新が確認され、インストールされます。
REMOVED エージェントによって、パッケージがインストールされていないことが確認され、検出されると、アンインストールされます。

マネージャー

このパッケージを管理するために使用できるパッケージ マネージャーのタイプ。

列挙型
MANAGER_UNSPECIFIED デフォルトの動作は ANY です。
ANY デフォルトのシステム パッケージ マネージャーを使用して、このパッケージ構成を適用します。
APT システムで Apt を使用できる場合にのみ、このパッケージ構成を適用します。
YUM システムで Yum を使用できる場合にのみ、このパッケージ構成を適用します。
ZYPPER システムで Zyppe を使用できる場合にのみ、このパッケージ構成を適用します。
GOO システムで GooGet を使用できる場合にのみ、このパッケージ構成を適用します。

PackageRepository

パッケージ リポジトリ。

JSON 表現

{

      // Union field repository can be only one of the following:
      "apt": {
        object (AptRepository)
      },
      "yum": {
        object (YumRepository)
      },
      "zypper": {
        object (ZypperRepository)
      },
      "goo": {
        object (GooRepository)
      }
      // End of list of possible types for union field repository.
    }
フィールド
共用体フィールド repository。リポジトリの特定のタイプ。repository は次のいずれかになります。
apt

AptRepositoryobject ()

Apt リポジトリ。

yum

YumRepositoryobject ()

Yum リポジトリ。

zypper

ZypperRepositoryobject ()

Zypper リポジトリ。

goo

GooRepositoryobject ()

Goo リポジトリ。

AptRepository

単一の Apt パッケージ リポジトリを表します。このリポジトリは、/etc/apt/sources.list.d/google_osconfig.list に格納されているリポジトリ ファイルに追加されます。

JSON 表現

{
      "archiveType": enum (ArchiveType),
      "uri": string,
      "distribution": string,
      "components": [
        string
      ],
      "gpgKey": string
    }
フィールド
archiveType

ArchiveTypeenum ()

このリポジトリ内のアーカイブ ファイルのタイプ。デフォルトの動作は DEB です。

uri

string

必須。このリポジトリの URI。

distribution

string

必須。このリポジトリの分布

components[]

string

必須。このリポジトリのコンポーネントのリスト。少なくとも 1 つの項目を含める必要があります。

gpgKey

string

このリポジトリのキーファイルの URI。エージェントは、適用されたゲストポリシーにあるすべてのキーを含む、/etc/apt/trusted.gpg.d/osconfig_agent_managed.gpg でキーリングを維持します。

ArchiveType

アーカイブのタイプ。

列挙型
ARCHIVE_TYPE_UNSPECIFIED 未設定。
DEB DEB は、アーカイブにバイナリ ファイルが含まれていることを示します。
DEB_SRC DEB_SRC は、アーカイブにソースファイルが含まれていることを示します。

YumRepository

単一の Yum パッケージ リポジトリを表します。このリポジトリは、/etc/yum.repos.d/google_osconfig.repo に格納されているリポジトリ ファイルに追加されます。

JSON 表現

{
      "id": string,
      "displayName": string,
      "baseUrl": string,
      "gpgKeys": [
        string
      ]
    }
フィールド
id

string

必須。このリポジトリの一意の名前である 1 つの単語。これは、Yum 構成ファイルでは repo id であり、displayName が省略される場合は displayName でもあります。この ID は、ゲストポリシーの競合を確認する際に一意の識別子としても使用されます。

displayName

string

リポジトリの表示名。

baseUrl

string

必須。リポジトリ ディレクトリの場所。

gpgKeys[]

string

GPG キーの URI。

ZypperRepository

単一の Zypper パッケージ リポジトリを表します。このリポジトリは、/etc/zypp/repos.d/google_osconfig.repo に格納されているリポジトリ ファイルに追加されます。

JSON 表現

{
      "id": string,
      "displayName": string,
      "baseUrl": string,
      "gpgKeys": [
        string
      ]
    }
フィールド
id

string

必須。このリポジトリの一意の名前である 1 つの単語。これは、zypper 構成ファイルでは repo id であり、displayName が省略される場合は displayName でもあります。この ID は、ゲストポリシーの競合を確認する際に一意の識別子としても使用されます。

displayName

string

リポジトリの表示名。

baseUrl

string

必須。リポジトリ ディレクトリの場所。

gpgKeys[]

string

GPG キーの URI。

GooRepository

Goo パッケージ リポジトリを表します。これらは、C:/ProgramData/GooGet/repos/google_osconfig.repo に格納されているリポジトリ ファイルに追加されます。

JSON 表現

{
      "name": string,
      "url": string
    }
フィールド
name

string

必須。リポジトリの名前。

url

string

必須。リポジトリの URL。

SoftwareRecipe

ソフトウェア レシピは、ソフトウェアをインストールして構成するための一連の手順です。ダウンロードされる一連のアーティファクト、ソフトウェアをインストール、構成、更新する一連の手順で構成されます。

レシピでは、Zip アーカイブ、Tar アーカイブ、Windows MSI、Debian パッケージ、RPM パッケージの形式で、アーティファクトからのソフトウェアのインストールと更新がサポートされています。

また、レシピでは、bash、sh、cmd、powershell での(この API のファイルまたはディレクトリに定義されている)スクリプトの実行がサポートされています。

ソフトウェア レシピの更新

レシピがインスタンスに割り当てられており、同じ名前のレシピがあるが、低いバージョンがすでにインストールされており、レシピの割り当て状態が INSTALLED_KEEP_UPDATED である場合、レシピは新しいバージョンに更新されます。

スクリプトの作業ディレクトリ

各スクリプトまたは実行ステップは、ステップの完了後に削除される独自の一時ディレクトリで実行されます。

JSON 表現

{
      "name": string,
      "version": string,
      "artifacts": [
        {
          object (Artifact)
        }
      ],
      "installSteps": [
        {
          object (Step)
        }
      ],
      "updateSteps": [
        {
          object (Step)
        }
      ],
      "desiredState": enum (DesiredState)
    }
フィールド
name

string

必須。レシピの一意の識別子。指定された名前の 1 つのレシピのみがインスタンスでインストールされます。

リソースの識別にも名前が使用されます。これは、ゲストポリシーが競合しているかどうかを判断するのに役立ちます。つまり、同じ名前やバージョンの複数のレシピを作成するリクエストは、それらの割り当てで競合する可能性があるため拒否されます。

version

string

このソフトウェア レシピのバージョン。バージョンには、ピリオドで区切った数値を最大で 4 つ使用できます(例: 12.34.56.78)。

artifacts[]

Artifactobject ()

レシピ内のステップで使用できるリソース。

installSteps[]

Stepobject ()

このレシピをインストールするために実行されるアクション。失敗した場合、ステップの実行は停止され、別のインストールは試行されません。実行されたステップ(部分的に完了したステップを含む)はロールバックされません。

updateSteps[]

Stepobject ()

このレシピを更新するために実行されるアクション。失敗した場合、ステップの実行は停止され、このレシピでは別の更新は試行されません。実行されたステップ(部分的に完了したステップを含む)はロールバックされません。

desiredState

DesiredStateenum ()

デフォルトは INSTALLED です。エージェントがこのレシピに保持する必要がある望ましい状態。

INSTALLED: ソフトウェア レシピはインスタンスにインストールされていますが、新しいバージョンには更新されません。INSTALLED_KEEP_UPDATED: ソフトウェア レシピはインスタンスにインストールされています。このインスタンスに上位バージョンのレシピが割り当てられている場合、レシピは上位バージョンに更新されます。REMOVE: ソフトウェア レシピでは REMOVE はサポートされておらず、REMOVE 状態へのレシピの作成や更新は拒否されます。

アーティファクト

レシピで使用するリソースを指定します。

JSON 表現

{
      "id": string,
      "allowInsecure": boolean,

      // Union field artifact can be only one of the following:
      "remote": {
        object (Remote)
      },
      "gcs": {
        object (Gcs)
      }
      // End of list of possible types for union field artifact.
    }
フィールド
id

string

必須。このレシピのインストールと更新のステップで参照できるアーティファクトの ID。レシピ内のアーティファクトに同じ ID を付けることはできません。

allowInsecure

boolean

デフォルトは false です。false の場合、レシピはアーティファクトのタイプに基づいて検証されます。

Remote: チェックサムを指定する必要があり、トランスポート層セキュリティを持つプロトコルのみが許可されます。GCS: オブジェクト世代番号を指定する必要があります。

共用体フィールド artifact。アーティファクトの特定のタイプ。artifact は次のいずれかになります。
remote

Remoteobject ()

一般的なリモート アーティファクト。

gcs

Gcsobject ()

Google Cloud Storage アーティファクト。

リモート

一部の URI 経由で使用できるアーティファクトを指定します。

JSON 表現

{
      "uri": string,
      "checksum": string
    }
フィールド
uri

string

オブジェクトのフェッチ元の URI。プロトコルとパスの両方が含まれている必要があります。形式は、{protocol}://{location} のようになります。

checksum

string

allowInsecurefalse の場合、指定する必要があります。16 進数の SHA256 チェックサム。アーティファクトのチェックサムと比較されます。チェックサムが空でなく、アーティファクトと一致しない場合は、ステップが実行される前に、レシピのインストールが失敗します。

Gcs

Google Cloud Storage オブジェクトとして使用できるアーティファクトを指定します。

JSON 表現

{
      "bucket": string,
      "object": string,
      "generation": string
    }
フィールド
bucket

string

Google Cloud Storage オブジェクトのバケット。URL の例: https://storage.googleapis.com/my-bucket/foo/bar#1234567。この値は my-bucket のようになります。

object

string

Google Cloud Storage オブジェクトの名前。ここに指定されているような URL の例: https://storage.googleapis.com/my-bucket/foo/bar#1234567。この値は foo/bar のようになります。

generation

string (int64 format)

allowInsecure が false の場合は、必ず指定する必要があります。Google Cloud Storage オブジェクトの世代番号。https://storage.googleapis.com/my-bucket/foo/bar#1234567。この値は 1234567 のようになります。

ステップ

レシピのインストールまたは更新の一環として実行できるアクション。

JSON 表現

{

      // Union field step can be only one of the following:
      "fileCopy": {
        object (CopyFile)
      },
      "archiveExtraction": {
        object (ExtractArchive)
      },
      "msiInstallation": {
        object (InstallMsi)
      },
      "dpkgInstallation": {
        object (InstallDpkg)
      },
      "rpmInstallation": {
        object (InstallRpm)
      },
      "fileExec": {
        object (ExecFile)
      },
      "scriptRun": {
        object (RunScript)
      }
      // End of list of possible types for union field step.
    }
フィールド
共用体フィールド step。特定のタイプのステップ。step は次のいずれかになります。
fileCopy

CopyFileobject ()

ファイルをインスタンスにコピーします。

archiveExtraction

ExtractArchiveobject ()

指定されたディレクトリにアーカイブを抽出します。

msiInstallation

InstallMsiobject ()

MSI ファイルをインストールします。

dpkgInstallation

InstallDpkgobject ()

dpkg を使用して deb ファイルをインストールします。

rpmInstallation

InstallRpmobject ()

rpm ユーティリティを使用して rpm ファイルをインストールします。

fileExec

ExecFileobject ()

アーティファクトまたはローカル ファイルを実行します。

scriptRun

RunScriptobject ()

シェルでコマンドを実行します。

CopyFile

インスタンス上の指定されたパスにアーティファクトをコピーします。

JSON 表現

{
      "artifactId": string,
      "destination": string,
      "overwrite": boolean,
      "permissions": string
    }
フィールド
artifactId

string

必須。レシピ内の関連アーティファクトの ID。

destination

string

必須。ファイルを配置するインスタンスの絶対パス。

overwrite

boolean

このステップで既存のファイルが上書きされるかどうかを指定します。これが false であるときに、ファイルがすでに存在する場合、ファイルは上書きされず、ステップは成功と見なされます。デフォルトは false です。

permissions

string

ファイルの所有者、グループ、その他のユーザーの権限を順番に表す 3 桁の 8 進数で構成されています(linux chmod ユーティリティで使用される数値モードと同様)。各桁は 3 ビットの番号を表します。4 ビットは読み取り権限に対応し、2 ビットは書き込みビットに対応し、1 ビットは実行権限に対応します。デフォルトの動作は 755 です。

権限と関連する値の例を次に示します。read、write、execute: 7。read、execute: 5。read、write: 6。read only: 4。

ExtractArchive

指定されたディレクトリに指定されたタイプのアーカイブを抽出します。

JSON 表現

{
      "artifactId": string,
      "destination": string,
      "type": enum (ArchiveType)
    }
フィールド
artifactId

string

必須。レシピ内の関連アーティファクトの ID。

destination

string

アーカイブを抽出するディレクトリ。デフォルトは、/(Linux の場合)または C:\(Windows の場合)です。

type

ArchiveTypeenum ()

必須。抽出するアーカイブのタイプ。

ArchiveType

アーカイブのタイプを指定します。

列挙型
ARCHIVE_TYPE_UNSPECIFIED アーカイブ タイプが指定されていないことを示します。
TAR アーカイブが、暗号化されていない tar アーカイブであることを示します。
TAR_GZIP アーカイブが、gzip で暗号化されている tar アーカイブであることを示します。
TAR_BZIP アーカイブが、bzip で暗号化されている tar アーカイブであることを示します。
TAR_LZMA アーカイブが、lzma で暗号化されている tar アーカイブであることを示します。
TAR_XZ アーカイブが、xz で暗号化されている tar アーカイブであることを示します。
ZIP アーカイブが、zip アーカイブであることを示します。

InstallMsi

MSI ファイルをインストールします。

JSON 表現

{
      "artifactId": string,
      "flags": [
        string
      ],
      "allowedExitCodes": [
        integer
      ]
    }
フィールド
artifactId

string

必須。レシピ内の関連アーティファクトの ID。

flags[]

string

MSI のインストール時に使用するフラグは、デフォルトでは ["/i"] になります(インストール フラグ)。

allowedExitCodes[]

integer

ソフトウェアが正常にインストールまたは更新されたことを示す戻りコード。動作はデフォルトで [0] に設定されています。

InstallDpkg

dpkg で deb をインストールします。

JSON 表現

{
      "artifactId": string
    }
フィールド
artifactId

string

必須。レシピ内の関連アーティファクトの ID。

InstallRpm

rpm ユーティリティを使用して rpm ファイルをインストールします。

JSON 表現

{
      "artifactId": string
    }
フィールド
artifactId

string

必須。レシピ内の関連アーティファクトの ID。

ExecFile

アーティファクトまたはローカル ファイルを実行します。

JSON 表現

{
      "args": [
        string
      ],
      "allowedExitCodes": [
        integer
      ],

      // Union field location_type can be only one of the following:
      "artifactId": string,
      "localPath": string
      // End of list of possible types for union field location_type.
    }
フィールド
args[]

string

指定された実行可能ファイルに渡す引数。

allowedExitCodes[]

integer

デフォルトは [0] です。成功したことを示すためにプログラムによって返される可能性のある戻り値のリスト。

共用体フィールド location_type。実行するファイルの場所。location_type は次のいずれかになります。
artifactId

string

レシピ内の関連アーティファクトの ID。

localPath

string

ローカル ファイル システム上のファイルの絶対パス。