使用政策编排器管理操作系统政策分配

本页介绍了如何使用虚拟机管理器中的政策编排器功能,在文件夹或组织中的不同项目和可用区中创建、更新或删除操作系统政策资源。

准备工作

  • 查看操作系统政策和操作系统政策分配任务
  • 查看 OS Config 配额
  • 确保您满足使用政策编排器的前提条件
  • 如果您尚未设置身份验证,请进行设置。身份验证是通过其进行身份验证以访问 Google Cloud 服务和 API 的过程。如需从本地开发环境运行代码或示例,您可以选择以下任一选项向 Compute Engine 进行身份验证:

    Select the tab for how you plan to use the samples on this page:

    Console

    When you use the Google Cloud console to access Google Cloud services and APIs, you don't need to set up authentication.

    gcloud

    1. Install the Google Cloud CLI, then initialize it by running the following command:

      gcloud init
    2. Set a default region and zone.
    3. REST

      如需在本地开发环境中使用本页面上的 REST API 示例,请使用您提供给 gcloud CLI 的凭据。

        Install the Google Cloud CLI, then initialize it by running the following command:

        gcloud init

      如需了解详情,请参阅 Google Cloud 身份验证文档中的使用 REST 时进行身份验证

跨项目和可用区创建或更新操作系统政策分配

您可以创建政策编排器,以便将操作系统政策应用于项目、文件夹或组织中的选定资源。

控制台

如需创建政策编排器并在文件夹中应用操作系统政策分配,请执行以下操作:

  1. 在本地客户端上,创建或下载操作系统政策文件。该文件必须是 JSON 或 YAML 文件。如需详细了解如何创建操作系统政策,或者查看示例操作系统政策,请参阅操作系统政策
  2. 在 Google Cloud 控制台中,前往操作系统政策页面。

    转到“操作系统政策”

  3. 点击 Google Cloud 控制台操作栏中的项目选择器,然后选择要用于创建政策编排器的文件夹。

  4. 点击创建政策编排器

  5. 为政策编排器指定名称和说明。请参阅资源命名惯例。虚拟机管理器会向政策编排器分配唯一的编排器 ID。如有需要,您可以修改此 ID。

  6. 操作系统政策部分中,上传操作系统政策文件。

  7. 可选:在状态部分中,选择以下选项之一以指定政策编排器的行为:

    • ACTIVE:创建后,政策编排器会立即执行操作。
    • STOPPED:在此状态下创建的政策编排器不会立即执行任何操作。您稍后可以修改政策编排器以更改其状态。
  8. 操作字段中,选择 UPSERT 操作。

  9. 编排范围部分中,指定要部署操作系统政策的文件夹和项目。您必须仅在此类字段中输入项目编号和文件夹编号,例如 123456,7654321

  10. 选择包含您要应用操作系统政策的虚拟机的可用区。或者,点击全选,将操作系统政策更改应用于所有区域中的资源。

  11. 可选:在目标虚拟机实例部分中,指定要将操作系统政策应用到的目标虚拟机。

    • 选择操作系统系列。
    • 您可以通过指定包含和排除标签来进一步过滤虚拟机。

      例如,您可以在测试环境中选择全部 Ubuntu 虚拟机,并通过指定以下内容来排除运行 Google Kubernetes Engine 的虚拟机:

      • 操作系统系列:ubuntu
      • 包含:env:testenv:staging
      • 排除:goog-gke-node
  12. 为操作系统政策分配指定发布计划。

    • 指定波次规模(也称为中断预算)。例如:10%。
    • 指定等待时间。例如 15 分钟。
  13. 点击创建

gcloud

如需创建政策编排器,请完成以下步骤:

  1. 创建或下载 JSON 或 YAML 格式的操作系统政策分配资源。如需详细了解此文件和示例政策分配任务,请参阅操作系统政策分配任务

  2. 使用 beta os-config policy-orchestrators create 命令在指定范围内创建和发布操作系统政策分配任务。

项目

  gcloud beta compute os-config policy-orchestrators create ORCHESTRATOR_NAME \
    --policy-type=os_policy_assignment_v1 \
    --policy-file=OS_POLICY_ASSIGNMENT_YAML_FILE \
    --policy-id=POLICY_ID \

替换以下内容:

  • ORCHESTRATOR_NAME:政策编排器的名称。请参阅资源命名惯例
  • OS_POLICY_ASSIGNMENT_FILE:您在上一步中创建的操作系统政策分配文件的绝对路径。
  • POLICY_ID:政策编排器的唯一 ID。如果您未指定值,政策编排器会为编排器资源分配唯一 ID。

示例

  gcloud beta compute os-config policy-orchestrators create my-os-policy-orchestrator \
      --policy-type=os_policy_assignment_v1 \
      --policy-file=/downloads/assignment-config.yaml \
      --policy-id=policy-123 \

文件夹

  gcloud --billing-project=QUOTA_PROJECT_ID beta compute os-config policy-orchestrators create ORCHESTRATOR_NAME \
    --folder=FOLDER_NUMBER \
    --policy-type=os_policy_assignment_v1 \
    --policy-file=OS_POLICY_ASSIGNMENT_YAML_FILE \
    --policy-id=POLICY_ID \
    --include-projects=PROJECT_NUMBERS

替换以下内容:

  • QUOTA_PROJECT_ID配额项目或结算项目的项目 ID。
  • ORCHESTRATOR_NAME:政策编排器的名称。请参阅资源命名惯例
  • FOLDER_NUMBER:您要创建政策编排器的文件夹的文件夹编号。
  • OS_POLICY_ASSIGNMENT_FILE:您在上一步中创建的操作系统政策分配文件的绝对路径。
  • POLICY_ID:政策编排器的唯一 ID。如果您未指定值,政策编排器会为编排器资源分配唯一 ID。
  • PROJECT_NUMBERS:您要为其应用操作系统政策分配的项目列表。您必须指定项目编号,即项目的唯一数字 ID。

示例

  gcloud --billing-project=my-quota-project beta compute os-config policy-orchestrators create my-os-policy-orchestrator \
      --folder=123456 \
      --policy-type=os_policy_assignment_v1 \
      --policy-file=/downloads/assignment-config.yaml \
      --policy-id=policy-123 \
      --include-projects=87654321,4567890

组织

  gcloud --billing-project=QUOTA_PROJECT_ID beta compute os-config policy-orchestrators create ORCHESTRATOR_NAME \
    --organization=ORGANIZATION_NUMBER \
    --policy-type=os_policy_assignment_v1 \
    --policy-file=OS_POLICY_ASSIGNMENT_YAML_FILE \
    --policy-id=POLICY_ID \
    --include-projects=PROJECT_NUMBERS

替换以下内容:

  • QUOTA_PROJECT_ID配额项目或结算项目的项目 ID。
  • ORCHESTRATOR_NAME:政策编排器的名称。请参阅资源命名惯例
  • FOLDER_NUMBER:您要创建政策编排器的文件夹的文件夹编号。
  • OS_POLICY_ASSIGNMENT_FILE:您在上一步中创建的操作系统政策分配文件的绝对路径。
  • POLICY_ID:政策编排器的唯一 ID。如果您未指定值,政策编排器会为编排器资源分配唯一 ID。
  • PROJECT_NUMBERS:您要为其应用操作系统政策分配的项目列表。您必须指定项目编号,即项目的唯一数字 ID。

示例

  gcloud --billing-project=my-quota-project beta compute os-config policy-orchestrators create my-os-policy-orchestrator \
      --organization=123456 \
      --policy-type=os_policy_assignment_v1 \
      --policy-file=/downloads/assignment-config.yaml \
      --policy-id=policy-123 \
      --include-projects=87654321,4567890

REST

如需创建政策编排器,请完成以下步骤:

  1. 创建或下载操作系统政策分配文件。该文件必须是 JSON 文件。如需详细了解如何创建操作系统政策分配任务,或者查看示例操作系统政策分配任务,请参阅操作系统政策分配任务

  2. 根据您要创建政策编排器的范围,使用以下方法之一:

项目

projects.locations.global.policyOrchestrators.create 方法发送 POST 请求。

在请求正文中,粘贴上一步中的操作系统政策分配任务规范。

POST https://osconfig.googleapis.com/v2beta/projects/PROJECT_NUMBER/locations/global/policyOrchestrators

  {
      JSON_OS_POLICY_ORCHESTRATOR
  }

替换以下内容:

  • PROJECT_NUMBER:您要在其中创建政策编排器的项目的数字 ID。
  • JSON_OS_POLICY_ORCHESTRATOR:政策编排器对象,采用 JSON 格式,用于定义编排器范围、受编排资源和编排状态。如需详细了解参数和格式,请参阅 Resource: folders.locations.global.policyOrchestrators

示例

例如,如需使用示例操作系统政策分配任务创建操作系统政策分配任务,以安装从 Cloud Storage 存储桶下载的 Windows MSI,请完成以下步骤:

  1. 将示例转换为 JSON
  2. 发出以下请求:

    POST https://osconfig.googleapis.com/v2beta/projects/123456/locations/global/policyOrchestrators
    
    {
    "action": "UPSERT",
    "orchestratedResource": {
      "osPolicyAssignmentV1Payload": {
        "instanceFilter": {
          "inventories": [
            {
              "osShortName": "windows"
            }
          ]
        },
        "osPolicies": [
        {
          "id": "install-msi-policy",
          "mode": "ENFORCEMENT",
          "resourceGroups": [
            {
              "resources": [
                {
                  "id": "install-msi",
                  "pkg": {
                    "desiredState": "INSTALLED",
                    "msi": {
                      "source": {
                        "gcs": {
                          "bucket": "my-bucket",
                          "generation": "1619136883923956",
                          "object": "my-app.msi"
                        }
                      }
                    }
                  }
                }
              ]
            }
          ]
        }
        ],
        "rollout": {
          "disruptionBudget": {
            "fixed": 10
          },
          "minWaitDuration": "300s"
        }
      }
    },
    "orchestrationScope": {
    "selectors": [
      {
         "resourceHierarchySelector": {
            "includedProjects": [
            "projects/87654321",
            "projects/4567890"
            ]
          }
        }
      ]
    },
    "state": "ACTIVE"
    }
    

文件夹

folders.locations.global.policyOrchestrators.create 方法发送 POST 请求。

在请求正文中,粘贴上一步中的操作系统政策分配任务规范。

POST https://osconfig.googleapis.com/v2beta/folders/FOLDER_NUMBER/locations/global/policyOrchestrators
-H "x-goog-user-project: QUOTA_PROJECT_ID"

{
  JSON_OS_POLICY_ORCHESTRATOR
}

替换以下内容:

示例

例如,如需使用示例操作系统政策分配任务创建操作系统政策分配任务,以安装从 Cloud Storage 存储桶下载的 Windows MSI,请完成以下步骤:

  1. 将示例转换为 JSON
  2. 发出以下请求:

    POST https://osconfig.googleapis.com/v2beta/folders/123456/locations/global/policyOrchestrators \
    -H "x-goog-user-project: my-quota-project
    
    {
    "action": "UPSERT",
    "orchestratedResource": {
      "osPolicyAssignmentV1Payload": {
        "instanceFilter": {
          "inventories": [
            {
              "osShortName": "windows"
            }
          ]
        },
        "osPolicies": [
        {
          "id": "install-msi-policy",
          "mode": "ENFORCEMENT",
          "resourceGroups": [
            {
              "resources": [
                {
                  "id": "install-msi",
                  "pkg": {
                    "desiredState": "INSTALLED",
                    "msi": {
                      "source": {
                        "gcs": {
                          "bucket": "my-bucket",
                          "generation": "1619136883923956",
                          "object": "my-app.msi"
                        }
                      }
                    }
                  }
                }
              ]
            }
          ]
        }
        ],
        "rollout": {
          "disruptionBudget": {
            "fixed": 10
          },
          "minWaitDuration": "300s"
        }
      }
    },
    "orchestrationScope": {
    "selectors": [
      {
         "resourceHierarchySelector": {
            "includedProjects": [
            "projects/87654321",
            "projects/4567890"
            ]
          }
        }
      ]
    },
    "state": "ACTIVE"
    }
    

组织

organizations.locations.global.policyOrchestrators.create 方法发送 POST 请求。

在请求正文中,粘贴上一步中的操作系统政策分配任务规范。

POST https://osconfig.googleapis.com/v2beta/organizations/ORGANIZATION_NUMBER/locations/global/policyOrchestrators \
-H "x-goog-user-project: QUOTA_PROJECT_ID"

  {
      JSON_OS_POLICY_ORCHESTRATOR
  }

替换以下内容:

示例

例如,如需使用示例操作系统政策分配任务创建操作系统政策分配任务,以安装从 Cloud Storage 存储桶下载的 Windows MSI,请完成以下步骤:

  1. 将示例转换为 JSON
  2. 发出以下请求:

    POST https://osconfig.googleapis.com/v2beta/organizations/567890/locations/global/policyOrchestrators \
    -H "x-goog-user-project: my-quota-project
    {
    "action": "UPSERT",
    "orchestratedResource": {
      "osPolicyAssignmentV1Payload": {
        "instanceFilter": {
          "inventories": [
            {
              "osShortName": "windows"
            }
          ]
        },
        "osPolicies": [
        {
          "id": "install-msi-policy",
          "mode": "ENFORCEMENT",
          "resourceGroups": [
            {
              "resources": [
                {
                  "id": "install-msi",
                  "pkg": {
                    "desiredState": "INSTALLED",
                    "msi": {
                      "source": {
                        "gcs": {
                          "bucket": "my-bucket",
                          "generation": "1619136883923956",
                          "object": "my-app.msi"
                        }
                      }
                    }
                  }
                }
              ]
            }
          ]
        }
        ],
        "rollout": {
          "disruptionBudget": {
            "fixed": 10
          },
          "minWaitDuration": "300s"
        }
      }
    },
    "orchestrationScope": {
    "selectors": [
      {
         "resourceHierarchySelector": {
            "includedProjects": [
            "projects/87654321",
            "projects/4567890"
            ]
          }
        }
      ]
    },
    "state": "ACTIVE"
    }
    

从多个项目中删除操作系统政策分配

您可以使用政策编排器,通过为操作系统政策资源指定唯一的政策 ID,从文件夹或组织中的多个项目中删除操作系统政策。

控制台

如需删除文件夹中的操作系统政策,请执行以下操作:

  1. 在本地客户端上,创建或下载操作系统政策文件。该文件必须是 JSON 或 YAML 文件。如需详细了解如何创建操作系统政策,或者查看示例操作系统政策,请参阅操作系统政策
  2. 在 Google Cloud 控制台中,前往操作系统政策页面。

    转到“操作系统政策”

  3. 点击 Google Cloud 控制台操作栏中的项目选择器,然后选择要用于创建政策编排器的文件夹。

  4. 点击创建政策编排器

  5. 为政策编排器指定名称和说明。请参阅资源命名惯例。虚拟机管理器会向政策编排器分配唯一的编排器 ID。如有需要,您可以修改此 ID。

  6. 操作系统政策部分中,选择并上传操作系统政策文件。

  7. 可选:在状态部分中,选择以下选项之一以指定政策编排器的行为:

    • ACTIVE:创建后,政策编排器会立即执行操作。
    • STOPPED:在此状态下创建的政策编排器不会立即执行任何操作。您稍后可以修改政策编排器以更改其状态。
  8. 操作字段中,选择删除操作。

  9. 编排范围部分中,指定要部署操作系统政策的文件夹和项目。您必须仅在此类字段中输入项目编号和文件夹编号,例如 123456,7654321

  10. 选择包含您要应用操作系统政策的虚拟机的可用区。

  11. 可选:在目标虚拟机实例部分中,指定要将操作系统政策应用到的目标虚拟机。

    • 选择操作系统系列。
    • 您可以通过指定包含和排除标签来进一步过滤虚拟机。

      例如,您可以在测试环境中选择全部 Ubuntu 虚拟机,并通过指定以下内容来排除运行 Google Kubernetes Engine 的虚拟机:

      • 操作系统系列:ubuntu
      • 包含:env:testenv:staging
      • 排除:goog-gke-node
  12. 为操作系统政策分配指定发布计划。

    • 指定波次规模(也称为中断预算)。例如:10%。
    • 指定等待时间。例如 15 分钟。
  13. 点击创建

gcloud

如需使用政策编排器从多个项目中删除操作系统政策,请使用 beta os-config policy-orchestrators create 命令,并为与操作系统政策分配关联的 policy-id 指定操作为 delete

项目

  gcloud beta compute os-config policy-orchestrators create ORCHESTRATOR_NAME \
    --policy-type=os_policy_assignment_v1 \
    --policy-file=OS_POLICY_ASSIGNMENT_YAML_FILE \
    --policy-id=POLICY_ID \
    --action=delete

替换以下内容:

  • FOLDER_NUMBER:您要从中删除操作系统政策资源的文件夹的数字 ID。
  • POLICY_ID:操作系统政策编排器资源的政策 ID。

示例

 gcloud beta compute os-config policy-orchestrators create my-os-policy-orchestrator \
   --policy-type=os_policy_assignment_v1
   --policy-id=my-policy \
   --action=delete

文件夹

  gcloud --billing-project=QUOTA_PROJECT_ID beta compute os-config policy-orchestrators create ORCHESTRATOR_NAME \
    --policy-type=os_policy_assignment_v1 \
    --policy-id=POLICY_ID \
    --action=delete

替换以下内容:

  • QUOTA_PROJECT_ID配额项目或结算项目的项目 ID。
  • FOLDER_NUMBER:您要从中删除操作系统政策资源的文件夹的数字 ID。
  • POLICY_ID:操作系统政策编排器资源的政策 ID。

示例

gcloud --billing-project=my-quota-project beta compute os-config policy-orchestrators create my-os-policy-orchestrator \
  --folder=123456 \
  --policy-type=os_policy_assignment_v1 \
  --policy-id=my-policy \
  --action=delete

组织

    gcloud --billing-project=QUOTA_PROJECT_ID beta compute os-config policy-orchestrators create ORCHESTRATOR_NAME \
      --organization=ORGANIZATION_NUMBER \
      --policy-type=os_policy_assignment_v1 \
      --policy-id=POLICY_ID \
      --action=delete

替换以下内容:

  • QUOTA_PROJECT_ID配额项目或结算项目的项目 ID。
  • ORGANIZATION_NUMBER:您要从中删除操作系统政策资源的组织的数字 ID。
  • POLICY_ID:操作系统政策编排器资源的政策 ID。

示例

    gcloud --billing-project=my-quota-project beta compute os-config policy-orchestrators create my-os-policy-orchestrator \
      --organization=987654321
      --policy-type=os_policy_assignment_v1
      --policy-id=my-policy \
      --action=delete

REST

如需创建用于从多个项目中删除操作系统政策的政策编排器,请使用以下方法之一,并将操作指定为 DELETE

项目

projects.locations.global.policyOrchestrators.create 方法发送 POST 请求。

在请求正文中,指定与操作系统政策分配关联的政策 ID。

POST https://osconfig.googleapis.com/v2beta/projects/PROJECT_NUMBER/locations/global/policyOrchestrators

  {
      JSON_OS_POLICY_ORCHESTRATOR
  }

替换以下内容:

  • PROJECT_NUMBER:您要在其中创建政策编排器的项目的数字 ID。
  • JSON_OS_POLICY_ORCHESTRATOR:政策编排器对象,采用 JSON 格式,用于定义编排器范围、受编排资源和编排状态。如需详细了解参数和格式,请参阅 Resource: folders.locations.global.policyOrchestrators

示例

POST https://osconfig.googleapis.com/v2beta/projects/567890/locations/global/policyOrchestrators

{
    "action": "DELETE",
    "orchestratedResource": {
      "id": "my-policy",
      "osPolicyAssignmentV1Payload": {}
    },
    "orchestrationScope": {
      "selectors": [
        {
          "resourceHierarchySelector": {
            "includedProjects": [
              "projects/87654321",
              "projects/4567890"
            ]
          }
        }
      ]
    },
    "state": "ACTIVE"
  }

文件夹

folders.locations.global.policyOrchestrators.create 方法发送 POST 请求。

在请求正文中,指定与操作系统政策分配关联的政策 ID。

POST https://osconfig.googleapis.com/v2beta/folders/FOLDER_NUMBER/locations/global/policyOrchestrators
-H "x-goog-user-project: QUOTA_PROJECT_ID"

{
  JSON_OS_POLICY_ORCHESTRATOR
}

替换以下内容:

示例

例如,如需从多个项目中删除操作系统政策资源,请发出以下请求:

 POST https://osconfig.googleapis.com/v2beta/folders/567890/locations/global/policyOrchestrators
 -H "x-goog-user-project: my-quota-project

 {
    "action": "DELETE",
    "orchestratedResource": {
      "id": "my-policy",
      "osPolicyAssignmentV1Payload": {}
    },
    "orchestrationScope": {
      "selectors": [
        {
          "resourceHierarchySelector": {
            "includedProjects": [
              "projects/87654321",
              "projects/4567890"
            ]
          }
        }
      ]
    },
    "state": "ACTIVE"
  }

组织

organizations.locations.global.policyOrchestrators.create 方法发送 POST 请求。

在请求正文中,指定与操作系统政策分配关联的政策 ID。

POST https://osconfig.googleapis.com/v2beta/organizations/ORGANIZATION_NUMBER/locations/global/policyOrchestrators
-H "x-goog-user-project: QUOTA_PROJECT_ID"

{
  JSON_OS_POLICY_ORCHESTRATOR
}

替换以下内容:

示例

例如,如需从多个项目中删除操作系统政策资源,请发出以下请求:

POST https://osconfig.googleapis.com/v2beta/organizations/567890/locations/global/policyOrchestrators
-H "x-goog-user-project: my-quota-project

{
    "action": "DELETE",
    "orchestratedResource": {
      "id": "my-policy",
      "osPolicyAssignmentV1Payload": {}
    },
    "orchestrationScope": {
      "selectors": [
        {
          "resourceHierarchySelector": {
            "includedProjects": [
              "projects/87654321",
              "projects/4567890"
            ]
          }
        }
      ]
    },
    "state": "ACTIVE"
  }

后续步骤