管理作業套件代理程式 OS 政策涵蓋的 VM

如果您在建立 Compute Engine VM 時已安裝 Ops Agent,或是在某些情況下,如果您使用控制台在現有 VM 上安裝代理程式, Google Cloud 也會建立 VM Manager OS 政策,用於安裝及監控 Ops Agent。 Google Cloud 本文件說明如何查詢這些 Ops Agent OS 政策,以及在受政策涵蓋的 VM 上管理 Ops Agent。如要瞭解如何建立自動安裝 Ops Agent 的 VM,請參閱「在建立 VM 時安裝 Ops Agent」一文。

建立作業套件代理程式 OS 政策後,您可以執行下列操作:

  • 判斷政策適用於哪些 VM。
  • 判斷政策涵蓋哪些區域。
  • 將政策涵蓋範圍擴大至現有 VM。
  • 從政策涵蓋的 VM 中解除安裝代理程式。

找出受作業套件代理程式 OS 政策涵蓋的 VM

您可以使用 Google Cloud 控制台或 Google Cloud CLI,查看 Google Cloud 專案中哪些 VM 受到 Ops Agent OS 政策的涵蓋,如果您認為某個 VM 缺少涵蓋範圍,可以按照下列步驟進行疑難排解:

確認作業套件代理程式 OS 政策已指派給某個區域中的 VM

如要確認某個可用區中的 VM 是否適用於 Ops Agent OS 政策,請使用 Google Cloud 控制台或 gcloud CLI,查看 VM 是否與 Ops Agent OS 政策指派相關。

主控台

  1. 在 Google Cloud 控制台中,前往「OS policies」頁面:

    前往「OS 政策」

    如果您是使用搜尋列尋找這個頁面,請選取子標題為「Compute Engine」的結果

  2. 在「VM instances」(VM 執行個體) 分頁中,選取要檢查的 VM。

  3. 如果 VM 受作業套件代理程式 OS 政策涵蓋,則「OS 政策 ID」欄會包含 goog-ops-agent-policy,狀態則為「符合規定」。

gcloud

如要顯示區域中的 Ops Agent OS 政策指派項目清單,請執行下列指令:

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

輸出內容會顯示已指派作業套件代理程式 OS 政策的 VM 清單。如果在 VM 上安裝作業套件代理程式,摘要欄的值會是「1/1 policies compliant」。

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

確認 VM 具有作業套件代理程式 OS 政策標籤

如要查看 Google Cloud 專案中哪些 VM 具有 Ops Agent OS 政策標籤 goog-ops-agent-policy,請使用 Google Cloud 控制台或 gcloud CLI。

主控台

  1. 前往 Google Cloud 控制台的「VM instances」(VM 執行個體) 頁面

    前往「VM instances」(VM 執行個體) 頁面

    如果您是使用搜尋列尋找這個頁面,請選取子標題為「Compute Engine」的結果

  2. 選取 VM 名稱。

  3. 在「基本資訊」面板中,找出「標籤」項目。

    如果 VM 受作業套件代理程式 OS 政策涵蓋,則會顯示 goog-ops-agent-policy:v2-x86-template-1-0-0 之類的標籤。

gcloud

如要查看所有具有 Ops Agent OS 政策標籤 goog-ops-agent-policy 的 VM,請執行下列指令:

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

輸出結果會顯示 VM 的名稱、區域和標籤。例如:

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'}

如要查看特定 VM 是否具有 Ops Agent OS 政策標籤,請執行下列指令:

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

輸出內容會顯示 VM 的標籤清單。如果您的 VM 有作業套件代理程式 OS 政策標籤,goog-ops-agent-policy 就會顯示在 labels 清單中。例如:

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

確認已成功部署 Ops Agent OS 政策指派

查看 Google Cloud 專案 OS 政策指派作業,確認作業套件代理程式 OS 政策指派作業已正確部署至特定可用區。

主控台

  1. 在 Google Cloud 控制台中,前往「OS policies」頁面:

    前往「OS 政策」

    如果您是使用搜尋列尋找這個頁面,請選取子標題為「Compute Engine」的結果

  2. 如要查看 OS 政策的推出狀態,請按一下「OS 政策指派作業」分頁。

    Ops Agent OS 政策指派作業的 ID 開頭為「goog-ops-agent」。如果指派成功推出,則推出狀態會顯示「Succeeded」。

gcloud

如要查看區域中的所有 Ops Agent OS 政策指派,請執行下列指令:

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

輸出內容會顯示可用區中的作業套件代理程式 OS 政策指派作業清單。如果指派項目已順利推出,則推出狀態會顯示為「SUCCEEDED」。例如:

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 OS 政策指派的詳細資料,請執行下列指令:

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

在作業套件代理程式 OS 政策涵蓋的 VM 中解除安裝作業套件代理程式

如果您在作業套件代理程式 OS 政策涵蓋的 VM 上手動解除安裝作業套件代理程式,政策就會重新安裝作業套件代理程式。如要解除安裝 Ops Agent,您必須先從 VM 中移除 goog-ops-agent-policy 標籤。從 VM 中移除作業套件代理程式 OS 政策標籤後,您可以永久解除安裝作業套件代理程式。

卸載特定 VM 上的作業套件代理程式

如要移除政策並從特定 VM 解除安裝 Ops Agent,您可以使用 Google Cloud 主控台或 gcloud CLI。

主控台

  1. 前往 Google Cloud 控制台的「VM instances」(VM 執行個體) 頁面

    前往「VM instances」(VM 執行個體) 頁面

    如果您是使用搜尋列尋找這個頁面,請選取子標題為「Compute Engine」的結果

  2. 選取要編輯的 VM 名稱。

  3. 按一下 [編輯]

  4. 前往「標籤」專區,然後點選「+ 新增標籤」

  5. 找出標有 goog-ops-agent-policy 的標籤,然後按一下「Delete item」

  6. 解除安裝代理程式

gcloud

  1. 如要從 VM 移除 goog-ops-agent-policy 標籤,請執行下列指令:

    gcloud compute instances update VM_NAME \
      --remove-labels=goog-ops-agent-policy
    
  2. 解除安裝代理程式

在所有 VM 上解除安裝作業套件代理程式

如要在已指派作業套件代理程式 OS 政策的可用區 VM 中,卸載作業套件代理程式,請使用 Cloud Monitoring 提供的指令碼。您無法使用 Google Cloud 控制台從一組 VM 中解除安裝代理程式。

如要執行指令碼,您必須具備 GuestPolicy 編輯者角色 (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 OS 政策。
  2. 編輯各項政策,讓政策在涵蓋的 VM 上卸載作業套件代理程式。
  3. 刪除作業套件代理程式 OS 政策。
  4. 從每個涵蓋的 VM 中移除 goog-ops-agent-policy 標籤。

為現有 VM 新增作業套件代理程式 OS 政策涵蓋範圍

作業套件代理程式 OS 政策只涵蓋具有 goog-ops-agent-policy 標籤,且與現有作業套件代理程式 OS 政策指派相同可用區的 VM。不過,您可以將涵蓋範圍擴大至未指派 Ops Agent OS 政策的其他 VM。

如要將政策涵蓋範圍擴大到 VM,您必須知道可用區中 Ops Agent OS 政策指派的範本版本。如果您的區域有多個 Ops Agent OS 政策指派,請找出使用最新範本版本的指派。如要顯示某個區域中的 Ops Agent OS 政策指派項目清單,請執行下列指令:

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

如要將政策涵蓋範圍擴大至其他 VM,請使用 Google Cloud 控制台或 gcloud CLI:

主控台

  1. 前往 Google Cloud 控制台的「VM instances」(VM 執行個體) 頁面

    前往「VM instances」(VM 執行個體) 頁面

    如果您是使用搜尋列尋找這個頁面,請選取子標題為「Compute Engine」的結果

  2. 在「VM instances」清單中,選取要加上標籤的 VM 旁邊的核取方塊,然後按一下「Labels」

  3. 如要新增標籤,請按一下「+ 新增標籤」,然後新增鍵/值組合。鍵必須為 goog-ops-agent-policy,值則為所需的範本版本,例如 1-0-0

  4. 儲存變更。

gcloud

如要將政策涵蓋範圍擴大至未涵蓋的 VM,請執行下列指令:

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

權限

安裝作業套件代理程式時會使用 VM 管理員,並需要權限來啟用 VM Manager API 及建立政策。您可以使用「編輯者」角色 (roles/Editor) 取得所有必要權限,也可以請專案管理員使用 Google Cloud CLI 授予最低權限。

在建立 VM 時安裝作業套件代理程式所需的權限:

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

在現有 VM 上安裝作業套件代理程式所需的權限:

  • 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'