如果您在创建了 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 操作系统政策分配相关。
控制台
-
在 Google Cloud 控制台中,转到操作系统政策页面:
如果您使用搜索栏查找此页面,请选择子标题为 Compute Engine 的结果。
在虚拟机实例标签页上,选择要检查的虚拟机。
如果该虚拟机在 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。
控制台
-
在 Google Cloud 控制台中,转到虚拟机实例页面:
如果您使用搜索栏查找此页面,请选择子标题为 Compute Engine 的结果。
选择虚拟机的名称。
在基本信息面板中,找到标签条目。
如果虚拟机在 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 操作系统政策分配是否已正确部署到特定可用区。
控制台
-
在 Google Cloud 控制台中,转到操作系统政策页面:
如果您使用搜索栏查找此页面,请选择子标题为 Compute Engine 的结果。
如需查看操作系统政策发布的状态,请点击操作系统政策分配标签页。
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。
控制台
gcloud
如需移除虚拟机的
goog-ops-agent-policy
标签,请执行以下操作: 运行以下命令:gcloud compute instances update VM_NAME \ --remove-labels=goog-ops-agent-policy
卸载代理。
在所有虚拟机上卸载 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
该脚本会在每个可用区中执行以下任务:
- 查找所有 Ops Agent 操作系统政策。
- 修改每项政策,以便在其覆盖的虚拟机上卸载 Ops Agent。
- 删除 Ops Agent 操作系统政策。
- 从涵盖的每个虚拟机中移除
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:
控制台
-
在 Google Cloud 控制台中,转到虚拟机实例页面:
如果您使用搜索栏查找此页面,请选择子标题为 Compute Engine 的结果。
在虚拟机实例列表中,选中要加标签的虚拟机旁边的复选框,然后点击标签。
如需添加标签,请点击 + 添加标签,然后添加键值对。键必须为
goog-ops-agent-policy
,值为所需的模板版本,例如1-0-0
。保存更改。
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'