使用 OS 政策,在 Linux 和 Windows 虛擬機器 (VM) 執行個體之間維持一致的軟體設定。
事前準備
- 查看 OS 政策和 OS 政策指派。
- 查看 OS Config 配額。
-
如果尚未設定,請先設定驗證機制。驗證是指驗證身分,以便存取 Google Cloud 服務和 API 的程序。如要在本機開發環境中執行程式碼或範例,您可以選取下列任一選項,向 Compute Engine 進行驗證:
Select the tab for how you plan to use the samples on this page:
Console
When you use the Google Cloud console to access Google Cloud services and APIs, you don't need to set up authentication.
gcloud
-
After installing the Google Cloud CLI, initialize it by running the following command:
gcloud init
If you're using an external identity provider (IdP), you must first sign in to the gcloud CLI with your federated identity.
- Set a default region and zone.
Terraform
To use the Terraform samples on this page in a local development environment, install and initialize the gcloud CLI, and then set up Application Default Credentials with your user credentials.
- Install the Google Cloud CLI.
-
If you're using an external identity provider (IdP), you must first sign in to the gcloud CLI with your federated identity.
-
To initialize the gcloud CLI, run the following command:
gcloud init
-
If you're using a local shell, then create local authentication credentials for your user account:
gcloud auth application-default login
You don't need to do this if you're using Cloud Shell.
If an authentication error is returned, and you are using an external identity provider (IdP), confirm that you have signed in to the gcloud CLI with your federated identity.
For more information, see Set up authentication for a local development environment.
REST
To use the REST API samples on this page in a local development environment, you use the credentials you provide to the gcloud CLI.
After installing the Google Cloud CLI, initialize it by running the following command:
gcloud init
If you're using an external identity provider (IdP), you must first sign in to the gcloud CLI with your federated identity.
For more information, see Authenticate for using REST in the Google Cloud authentication documentation.
-
支援的作業系統
如需支援 OS 政策的作業系統和版本完整清單,請參閱「作業系統詳細資料」。
權限
您可以使用 OS 政策在 VM 上安裝及管理軟體套件,因此建立及管理 OS 政策,就等同於授予 VM 遠端程式執行存取權。設定 OS 政策時,IAM 權限會用於控管政策資源的存取權,並記錄活動稽核記錄。
專案擁有者具備完整權限,可建立及管理 OS 政策指派作業。您必須授予其他使用者權限,您可以授予下列精細角色:
- OSPolicyAssignment 管理員 (
roles/osconfig.osPolicyAssignmentAdmin
):包含建立、刪除、更新、取得及列出 OS 政策指派作業的權限。 - OSPolicyAssignment 編輯器 (
roles/osconfig.osPolicyAssignmentEditor
):包含更新、取得及列出 OS 政策指派項目的權限。 - OSPolicyAssignment 檢視者 (
roles/osconfig.osPolicyAssignmentViewer
):包含唯讀權限,可取得及列出 OS 政策指派作業。
設定權限的指令範例
如要將 OS 政策指派作業的管理員存取權授予使用者,請執行下列指令:
gcloud projects add-iam-policy-binding PROJECT_ID \ --member user:USER_ID@gmail.com \ --role roles/osconfig.osPolicyAssignmentAdmin
更改下列內容:
PROJECT_ID
:專案 IDUSER_ID
:使用者的 Google Workspace 使用者名稱
建立 OS 政策指派作業
如要建立及發布 OS 政策指派作業,請完成下列步驟:
- 設定 VM 管理員。
- 為使用者指派必要權限。
- 參閱「OS 政策和 OS 政策指派」一文。
- 建立 OS 政策資源。
如要建立及發布 OS 政策指派,請使用下列任一方法:
主控台
如要建立及發布 OS 政策指派作業,請完成下列步驟:
- 在本機用戶端上建立或下載 OS 政策。檔案格式必須是 JSON 或 YAML。如要進一步瞭解如何建立 OS 政策,或查看 OS 政策範例,請參閱「OS 政策」。
前往 Google Cloud 控制台的「OS policies」(作業系統政策)頁面。
按一下「建立 OS 政策指派作業」。
在「Assignment ID」部分,提供 OS 政策指派的名稱。請參閱「資源命名慣例」。
在「OS 政策」部分上傳 OS 政策檔案。
在「Target VM instances」(目標 VM 執行個體) 區段中,指定目標 VM。
- 選取要套用政策的 VM 所在區域。
- 選取 OS 系列。
- 選用:您可以指定包含和排除標籤,進一步篩選 VM。
舉例來說,您可以選取測試環境中的所有 Ubuntu VM,並指定下列項目,排除執行 Google Kubernetes Engine 的 VM:
- OS 系列:
ubuntu
- 包含:
env:test
、env:staging
- 排除:
goog-gke-node
指定推出計畫。
- 指定波次大小 (亦稱為中斷預算)。例如 10%。
- 指定等待時間。例如 15 分鐘。
按一下「開始推出」。
gcloud
如要在區域中建立及推出 OS 政策指派,請完成下列步驟:
以 JSON 或 YAML 格式建立 OS 政策指派資源。這個檔案會定義要套用至 VM 的 OS 政策、要套用政策的目標 VM,以及套用 OS 政策的推出速度。如要進一步瞭解此檔案和範例指派作業,請參閱「OS 政策指派」。
使用
os-config os-policy-assignments create
指令,即可在指定位置建立及推出 OS 政策指派作業。gcloud compute os-config os-policy-assignments create OS_POLICY_ASSIGNMENT_ID \ --location=ZONE \ --file=OS_POLICY_ASSIGNMENT_FILE \ --async
更改下列內容:
OS_POLICY_ASSIGNMENT_ID
:OS 政策指派的名稱。請參閱「資源命名慣例」。ZONE
:建立 OS 政策指派作業的區域。OS_POLICY_ASSIGNMENT_FILE
:您在上一個步驟中建立的 OS 政策指派檔案的絕對路徑。
示例
gcloud compute os-config os-policy-assignments create my-os-policy-assignment \ --location=asia-south1-a \ --file=/downloads/assignment-config.yaml \ --async
輸出結果會與下列內容相似:
Create request issued for: [my-os-policy-assignment] Check operation [projects/384123488288/locations/asia-south1-a/osPolicyAssignments/my-os-policy-assignment/operations/fb2011d6-61de-46f1-afdb-bc96bdb3fbaa] for status.
請記下作業的完整資源名稱。在前述範例中,完整的資源名稱如下:
projects/384123488288/locations/asia-south1-a/osPolicyAssignments/my-os-policy-assignment/operations/fb2011d6-61de-46f1-afdb-bc96bdb3fbaa
您可以使用這個完整的資源名稱,取得或取消推播作業的詳細資料。請參閱「推出」一節。
Terraform
如要建立 OS 政策指派作業,請使用
google_os_config_os_policy_assignment
資源。以下範例會驗證 Apache 網路伺服器是否在 CentOS VM 上執行。
如要瞭解如何套用或移除 Terraform 設定,請參閱「基本 Terraform 指令」。
REST
如要在本機用戶端上建立 OS 政策指派作業,請完成下列步驟:
建立 OS 政策指派作業。檔案類型必須為 JSON。如要進一步瞭解如何建立 OS 政策指派作業,或查看 OS 政策指派作業範例,請參閱「OS 政策指派」。
如果您想使用範例 YAML OS 政策指派,必須將其轉換為 JSON。
在 API 中,建立目標為
projects.locations.osPolicyAssignments.create
方法的POST
要求。在要求主體中,貼上上一個步驟中的 OS 政策指派規格。
POST https://osconfig.googleapis.com/v1/projects/PROJECT_ID/locations/ZONE/OSPolicyAssignments?osPolicyAssignmentId=OS_POLICY_ASSIGNMENT_ID { JSON_OS_POLICY }
更改下列內容:
PROJECT_ID
:您的專案 IDOS_POLICY_ASSIGNMENT_ID
:OS 政策指派的名稱JSON_OS_POLICY
:在前一個步驟中建立的 OS 政策指派規格。必須採用 JSON 格式。如要進一步瞭解參數和格式,請參閱Resource: OSPolicyAssignment
。ZONE
:建立 OS 政策指派作業的可用區
示例
舉例來說,如要為 Google Cloud Observability 建立 OS 政策指派,並使用範例 OS 政策指派在所選 VM 上安裝監控和記錄代理程式,請完成下列步驟:
- 將範例轉換為 JSON
- 請發出以下要求:
POST https://osconfig.googleapis.com/v1/projects/PROJECT_ID/locations/ZONE/OSPolicyAssignments?osPolicyAssignmentId=OS_POLICY_ASSIGNMENT_ID { "osPolicies": [ { "id": "setup-repo-and-install-package-policy", "mode": "ENFORCEMENT", "resourceGroups": [ { "resources": [ { "id": "setup-repo", "repository": { "yum": { "id": "google-cloud-monitoring", "displayName": "Google Cloud Monitoring Agent Repository", "baseUrl": "https://packages.cloud.google.com/yum/repos/google-cloud-monitoring-el8-x86_64-all", "gpgKeys": [ "https://packages.cloud.google.com/yum/doc/yum-key.gpg", "https://packages.cloud.google.com/yum/doc/rpm-package-key.gpg" ] } } }, { "id": "install-pkg", "pkg": { "desiredState": "INSTALLED", "yum": { "name": "stackdriver-agent" } } } ] } ] } ], "instanceFilter": { "inclusionLabels": [ { "labels": { "used_for": "testing" } } ] }, "rollout": { "disruptionBudget": { "fixed": 10 }, "minWaitDuration": { "seconds": 300 } } }
推出作業
OS 政策指派作業會根據推出速度部署。也就是說,指定一組 VM 的工作會逐步部署,不會立即套用至所有 VM。我們會逐步推出變更,讓您有時間介入並取消推出作業,以防新變更導致回歸。
如果 API 的方法呼叫可能需要很長的時間才能完成,API 會傳回長時間執行的作業 (LRO)。如要進一步瞭解 LRO,請參閱「長時間執行的作業」。
每次建立、更新或刪除 OS 政策指派作業時,OS Config API 都會建立 LRO。每個 LRO 都會傳回作業資源。這個作業資源類似於以下內容:
Create request issued for: [my-os-policy-assignment] Check operation [projects/384123488288/locations/asia-south1-a/osPolicyAssignments/my-os-policy-assignment/operations/fb2011d6-61de-46f1-afdb-bc96bdb3fbaa] for status.
每項建立、更新或刪除作業也會產生新的 OS 政策指派修訂版本。如要查看 OS 政策指派作業的修訂版本,請參閱「列出 OS 政策指派作業修訂版本」。
您可以使用 Google Cloud CLI 取得部署作業的詳細資料,或取消部署作業。
取得推行作業詳細資料
如要取得推出作業的詳細資料,請使用 os-config os-policy-assignments operations describe
指令。
gcloud compute os-config os-policy-assignments operations describe FULLY_QUALIFIED_OPERATION_NAME
將 FULLY_QUALIFIED_OPERATION_NAME
替換為從建立、更新或刪除作業傳回的作業完整修飾資源名稱。
示例
gcloud compute os-config os-policy-assignments operations describe \ projects/384123488288/locations/asia-south1-a/osPolicyAssignments/my-os-policy-assignment/operations/fb2011d6-61de-46f1-afdb-bc96bdb3fbaa
輸出範例
done: true metadata: '@type': type.googleapis.com/google.cloud.osconfig.$$api-version$$.OSPolicyAssignmentOperationMetadata apiMethod: CREATE osPolicyAssignment: projects/3841234882888/locations/asia-south1-a/osPolicyAssignments/my-os-policy-assignment@cfb78790-41d8-40d1-b8a1-1eaf6011b909 rolloutStartTime: '2021-04-15T00:53:52.963569Z' rolloutState: SUCCEEDED rolloutUpdateTime: '2021-04-15T00:53:53.094041Z' name: projects/3841234882888/locations/asia-south1-a/osPolicyAssignments/my-os-policy-assignment/operations/cfb78790-41d8-40d1-b8a1-1eaf6011b909 response: '@type': type.googleapis.com/google.cloud.osconfig.$$api-version$$.OSPolicyAssignment baseline: true description: My test policy instanceFilter: inclusionLabels: - labels: label-key-not-targeting-instances: label-value-not-targeting-instances name: projects/3841234882888/locations/asia-south1-a/osPolicyAssignments/my-os-policy-assignment osPolicies: - id: q-test-policy mode: ENFORCEMENT resourceGroups: - osFilter: osShortName: centos osVersion: '7' resources: - id: add-repo repository: yum: baseUrl: https://packages.cloud.google.com/yum/repos/google-cloud-ops-agent-el7-x86_64-all
取消推出作業
主控台
前往 Google Cloud 控制台的「OS policies」頁面。
按一下「OS 政策指派」分頁標籤。
針對要取消推出作業的 OS 政策指派,依序按一下「動作 (>「取消推出作業」。
)」按一下「取消推播」。
gcloud
如要取消推播,請使用 gcloud compute os-config os-policy-assignments operations cancel
指令。
gcloud compute os-config os-policy-assignments operations cancel FULLY_QUALIFIED_OPERATION_NAME
將 FULLY_QUALIFIED_OPERATION_NAME
替換為從建立、更新或刪除作業傳回的作業完整修飾資源名稱。
示例
gcloud compute os-config os-policy-assignments operations cancel \ projects/384123488288/locations/asia-south1-a/osPolicyAssignments/my-os-policy-assignment/operations/fb2011d6-61de-46f1-afdb-bc96bdb3fbaa
如果指令執行成功,系統不會傳回任何輸出內容。
後續步驟
- 進一步瞭解作業系統政策。
- 管理 OS 政策指派。