管理 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 操作系统政策标签,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 操作系统政策标签,则 labels 列表中会显示 goog-ops-agent-policy。例如:

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 操作系统政策分配的 ID 以字符串“goog-ops-agent”开头。如果分配已成功发布,则其发布状态为“成功”。

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。如需卸载 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 操作系统政策分配,则查找具有最新模板版本的分配。如需在 Google Cloud 控制台中显示 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'