管理 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 操作系统涵盖范围内 政策,那么 OS policy 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 操作系统政策标签,然后添加 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 操作系统政策分配的 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,您必须先 从虚拟机中移除 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 提供的脚本。无法卸载 从一组虚拟机中移除代理。

要运行该脚本,您必须拥有 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'