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

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

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

  • 判斷政策涵蓋哪些 VM。
  • 決定政策涵蓋的區域。
  • 將政策涵蓋範圍擴展至現有 VM。
  • 從政策涵蓋的 VM 解除安裝代理程式。

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

您可以使用 Google Cloud 控制台或 Google Cloud CLI,查看 Google Cloud 專案中哪些 VM 透過 OS 政策指派作業套用 Ops Agent OS 政策。如果認為 VM 缺少涵蓋範圍,可以按照下列步驟排解問題:

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

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

控制台

  1. 前往 Google Cloud 控制台的「OS policies」(作業系統政策) 頁面:

    前往「OS policies」(作業系統政策)

    如果您是使用搜尋列尋找這個頁面,請選取子標題為「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"

輸出內容會顯示 VM 清單,其中包含作業套件代理程式 OS 政策指派項目。如果 VM 已安裝作業套件代理程式,「摘要」欄的值會是「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

確認 VM 具有 Ops Agent 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 適用於 Ops Agent 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 policies」(作業系統政策)

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

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

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

gcloud

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

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

輸出內容會顯示可用區中的 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 鍵的標籤,然後按一下「刪除項目」

  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. 找出所有作業套件代理程式 OS 政策。
  2. 編輯每項政策,在涵蓋的 VM 上解除安裝作業套件代理程式。
  3. 刪除作業套件代理程式 OS 政策。
  4. 從每個涵蓋的 VM 移除「goog-ops-agent-policy」標籤。

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

作業套件代理程式 OS 政策只涵蓋具有 goog-ops-agent-policy 標籤的 VM,且這些 VM 與現有的作業套件代理程式 OS 政策指派項目位於同一可用區。不過,您可以將涵蓋範圍擴展至其他 VM,這些 VM 是在未指派 Ops Agent OS 政策的情況下建立。

如要將政策涵蓋範圍擴展至 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 執行個體) 清單中,選取要加上標籤的 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.projectFeatureSettings.update
  • compute.instances.create

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

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

如要瞭解提供這些權限的對應角色,請參閱 IAM 基本與預先定義角色參考資料

授予權限角色的指令範例:

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