管理 Ops Agent 操作系统政策涵盖的虚拟机

如果您在创建了 Compute Engine 虚拟机并在创建期间安装了 Ops Agent,或者在某些情况下,如果您使用 Google Cloud 控制台在现有虚拟机上安装代理,则 Google Cloud 还创建了用于安装和监控 Ops Agent 的虚拟机管理器操作系统政策。本文档介绍了如何查询这些 Ops Agent 操作系统政策,以及如何管理政策涵盖的虚拟机上的 Ops Agent。如需了解如何创建自动安装 Ops Agent 的虚拟机,请参阅在创建虚拟机期间安装 Ops Agent

创建 Ops Agent 操作系统政策后,您可以执行以下操作:

  • 确定哪些虚拟机在此政策的涵盖范围内。
  • 确定该政策涵盖哪些可用区。
  • 将政策覆盖范围扩展到现有虚拟机。
  • 从政策涵盖的虚拟机中卸载代理。

查找 Ops Agent 操作系统政策涵盖的虚拟机

您可以使用 Google Cloud 控制台或 Google Cloud CLI 查看 Google Cloud 项目中的哪些虚拟机由 Ops Agent 操作系统政策通过操作系统政策分配涵盖。如果您认为没有涵盖某个虚拟机,则可以通过执行以下操作进行问题排查:

验证是否已将 Ops Agent 操作系统政策分配给可用区中的虚拟机

如需验证可用区中的虚拟机是否在 Ops Agent 操作系统政策的涵盖范围内,请使用 Google Cloud 控制台或 gcloud CLI 查看虚拟机是否与 Ops Agent 操作系统政策分配相关。

控制台

  1. 在 Google Cloud 控制台的导航面板中,选择 Compute Engine,然后选择操作系统政策

    前往操作系统政策

  2. 虚拟机实例标签页上,选择要检查的虚拟机。

  3. 如果虚拟机包含在 Ops Agent 操作系统政策中,则操作系统政策 ID 列包含 goog-ops-agent-policy 且状态为“合规”。

gcloud

如需显示区域中的 Ops Agent 操作系统政策分配列表,请运行以下命令:

gcloud compute os-config os-policy-assignment-reports list --location=ZONE --filter="ASSIGNMENT_ID ~ goog-ops-agent"

输出会显示具有 Ops Agent 操作系统政策分配的虚拟机列表。如果虚拟机上安装了 Ops Agent,则“摘要”列的值为“1/1 政策符合规定”。

INSTANCE    ASSIGNMENT_ID                                    LOCATION    UPDATE_TIME                  SUMMARY
instance-1  goog-ops-agent-v2-x86-template-1-0-0-us-east4-c  us-east4-c  2023-04-28T02:11:15.118088Z  1/1 policies compliant
instance-3  goog-ops-agent-v2-x86-template-1-0-0-us-east4-c  us-east4-c  2023-04-28T02:11:15.118088Z  1/1 policies compliant

验证虚拟机是否具有 Ops Agent 操作系统政策标签

如需查看 Google Cloud 项目中的哪些虚拟机具有 Ops Agent OS 政策标签 goog-ops-agent-policy,请使用 Google Cloud 控制台或 gcloud CLI。

控制台

  1. 在 Google Cloud 控制台的导航面板中,选择 Compute Engine,然后选择虚拟机实例

    前往虚拟机实例

  2. 选择虚拟机的名称。

  3. 基本信息面板中,找到标签条目。

    如果虚拟机在 Ops Agent 操作系统政策的涵盖范围内,则会具有类似 goog-ops-agent-policy:v2-x86-template-1-0-0 的标签。

gcloud

如需查看具有 Ops Agent 操作系统政策标签 goog-ops-agent-policy 的所有虚拟机,请运行以下命令:

gcloud compute instances list --format="table(name,zone,labels)" --filter="labels=goog-ops-agent-policy"

输出会显示虚拟机的名称、可用区和标签。 例如:

NAME                  ZONE           LABELS
test-vm1              us-central1-a  {'goog-ops-agent-policy': 'v2-x86-template-1-0-0'}
test-vm1              us-east4-c     {'goog-ops-agent-policy': 'v2-x86-template-1-0-0'}

如需查看特定虚拟机是否具有 Ops Agent 操作系统政策标签,请运行以下命令:

gcloud compute instances describe --format "yaml(labels)" --zone=ZONE VM_NAME

输出会显示虚拟机的标签列表。如果您的虚拟机具有 Ops Agent 操作系统政策标签,则 goog-ops-agent-policy 会显示在 labels 列表中。例如:

labels:
  goog-ops-agent-policy: v2-x86-template-1-0-0

验证 Ops Agent 操作系统政策分配是否已成功发布

查看 Google Cloud 项目操作系统政策分配,以验证 Ops Agent 操作系统政策分配是否已正确部署到特定可用区。

控制台

  1. 在 Google Cloud 控制台的导航面板中,选择 Compute Engine,然后选择操作系统政策

    前往操作系统政策

  2. 如需查看操作系统政策发布的状态,请点击操作系统政策分配标签页。

    Ops Agent 操作系统政策分配具有以字符串“goog-ops-agent”开头的 ID。如果分配已成功发布,则其发布状态为“成功”。

gcloud

如需查看某个地区中的所有 Ops Agent 操作系统政策分配,请运行以下命令:

gcloud compute os-config os-policy-assignments list --location=ZONE --filter="ASSIGNMENT_ID ~ goog-ops-agent"

输出会显示可用区中的 Ops Agent 操作系统政策分配列表。如果分配成功发布,则其发布状态为“成功”。例如:

ASSIGNMENT_ID                                       ROLLOUT_STATE    REVISION_CREATE_TIME       REVISION_ID
goog-ops-agent-v2-x86-template-1-4-0-us-central1-b  SUCCEEDED        2023-01-28T05:23:41Z.      940df3e9-77fd-470b-84df-53fb24825c4a
goog-ops-agent-v2-x86-template-1-0-0-us-central1-b  SUCCEEDED        2022-01-28T05:23:41Z.      qwareaff-efte-erew-aeet-faer234t4gga

如需查看有关特定 Ops Agent 操作系统政策分配的详细信息,请运行以下命令:

gcloud compute os-config os-policy-assignments describe POLICY_ASSIGNMENT_ID --location=ZONE

在 Ops Agent 操作系统政策涵盖的虚拟机上卸载 Ops Agent

如果您在 Ops Agent 操作系统政策涵盖的虚拟机上手动卸载 Ops Agent,则政策会重新安装该代理。如需卸载 Ops Agent,您必须先从虚拟机中移除 goog-ops-agent-policy 标签。从虚拟机中移除 Ops Agent 操作系统政策标签后,您可以永久卸载 Ops Agent。

在特定虚拟机上卸载 Ops Agent

如需从特定虚拟机移除政策并卸载 Ops Agent,您可以使用 Google Cloud 控制台或 gcloud CLI。

控制台

  1. 在 Google Cloud 控制台的导航面板中,选择 Compute Engine,然后选择虚拟机实例

    前往虚拟机实例

  2. 选择要修改的虚拟机的名称。

  3. 点击修改

  4. 转到标签部分,然后点击 + 添加标签

  5. 找到包含 goog-ops-agent-policy 键的标签,然后点击删除一项

  6. 卸载代理

gcloud

  1. 如需移除虚拟机的 goog-ops-agent-policy 标签,请运行以下命令:

    gcloud compute instances update VM_NAME \
      --remove-labels=goog-ops-agent-policy
    
  2. 卸载代理

在所有虚拟机上卸载 Ops Agent

如需从具有 Ops Agent 操作系统政策分配的可用区的虚拟机中卸载 Ops Agent,请使用 Cloud Monitoring 提供的脚本。您无法使用 Google Cloud 控制台从一组虚拟机中卸载代理。

如需运行该脚本,您必须拥有 GuestPolicy Editor 角色 (roles/osconfig.guestPolicyEditor)。

在 Cloud Shell 中运行以下脚本。您可以提供任意数量的区域:

curl -sSO https://dl.google.com/cloudagents/undo-ops-agent-policies.sh
bash undo-ops-agent-policies.sh ZONE1 ZONE2

该脚本会在每个可用区中执行以下任务:

  1. 查找所有 Ops Agent 操作系统政策。
  2. 修改每项政策,以便在其覆盖的虚拟机上卸载 Ops Agent。
  3. 删除 Ops Agent 操作系统政策。
  4. 从每个涵盖的虚拟机中移除 goog-ops-agent-policy 标签。

向现有虚拟机添加 Ops Agent 操作系统政策覆盖范围

Ops Agent 操作系统政策仅涵盖具有 goog-ops-agent-policy 标签且与现有 Ops Agent 操作系统政策分配位于同一可用区的虚拟机。但是,您可以将覆盖范围扩展到在未分配 Ops Agent 操作系统政策的情况下创建的其他虚拟机。

如需将政策覆盖范围扩展到虚拟机,您需要了解可用区中的 Ops Agent 操作系统政策分配的模板版本。如果您的可用区有多个 Ops Agent 操作系统政策分配,则查找具有最新模板版本的分配。如需显示区域中的 Ops Agent 操作系统政策分配列表,请运行以下命令:

gcloud compute os-config os-policy-assignments list --location=ZONE
  --filter="ASSIGNMENT_ID ~ goog-ops-agent"

如需将政策覆盖范围扩展到其他虚拟机,请使用 Google Cloud 控制台或 gcloud CLI:

控制台

  1. 在 Google Cloud 控制台的导航面板中,选择 Compute Engine,然后选择虚拟机实例

    前往虚拟机实例

  2. 虚拟机实例列表中,选中要加标签的虚拟机旁边的复选框,然后点击标签

  3. 如需添加标签,请点击 + 添加标签,然后添加键值对。键必须为 goog-ops-agent-policy,值为所需的模板版本,例如 1-0-0

  4. 保存更改。

gcloud

如需将政策覆盖范围扩展到没有覆盖范围的虚拟机,请运行以下命令:

gcloud compute instances update VM_NAME --zone=ZONE
  --update-labels=goog-ops-agent-policy:v2-x86-template-1-0-0
gcloud compute instances add-metadata VM_NAME --zone=ZONE
  --metadata=enable-osconfig=TRUE

权限

Ops Agent 安装使用虚拟机管理器,需要相应权限才能激活 VM Manager API 并创建政策。使用 Editor 角色 (roles/Editor) 可提供所有所需的权限。或者,您可以让项目管理员使用 Google Cloud CLI 授予最小权限。

在创建虚拟机期间安装 Ops Agent 所需的权限:

  • serviceusage.services.get
  • serviceusage.services.enable
  • osconfig.osPolicyAssignments.get
  • osconfig.osPolicyAssignments.create
  • osconfig.projectBillingConfigs.update
  • compute.instances.create

在现有虚拟机上安装 Ops Agent 所需的权限:

  • serviceusage.services.get
  • serviceusage.services.enable
  • osconfig.osPolicyAssignments.get
  • osconfig.osPolicyAssignments.create
  • osconfig.projectBillingConfigs.update
  • compute.instances.setMetadata
  • compute.instances.setLabels

您可以在 IAM 基本角色和预定义角色参考文档中找到提供这些权限的相应角色(osconfig.projectBillingConfigs.update 权限除外)。osconfig.projectBillingConfig 角色拥有此权限。此角色无法在 Google Cloud 控制台中获得,但可以通过 gcloud CLI 授予。

用于授予权限的角色的示例命令:

gcloud projects add-iam-policy-binding project-id --member='user:user-email' --role='roles/osconfig.projectBillingConfigEditor'