使用代理策略
代理程式 (指派) 原則會告知 Schematics 要使用哪個代理程式在特定網路區域中執行工作區及動作工作。 每一個代理程式都有一或多個相關聯的原則,可識別在代理程式上執行的工作區及動作工作。 例如,代理程式可能存在於中,且工作可以在下列隔離區域中執行:
- 雲端地區 (region-1、region-2、region-3)
- 應用程式層、資料層、管理層的 VPC 區域
- 雲端供應商或內部部署
- 貴組織內的部門區域,例如
HR、Finance、Manufacturing
只有單一原則可以與工作區或動作相關聯。 如果現有原則以相同的工作區或動作為目標,則原則建立會失敗。
您可以使用 Schematics 原則指令 CLI 來建立、更新及刪除 agent assignment policy。
代理程式的 agent-assignment-policy 是使用工作區或動作的下列屬性來定義。 選項屬性可以是下列旗標的組合:
tags-選取具有相符使用者標籤的工作區或動作。locations-選取相符 Schematics 位置中的工作區或動作。resource-groups-選取具有相符資源群組的工作區或動作。
若 agent-1 的選取政策中指定了 tags=[dev],且 resource-group=[rg-2],Schematics 會自動將符合 tags 及 resource-group 條件的所有工作區相關工作(包括 Git 下載、Terraform 規劃、套用及銷毀作業),路由至 agent-1 執行。
使用使用者介面建立代理程式原則
- 登入 IBM Cloud控制台。
- 點選選單圖示
>平台自動化>Schematics>擴充>策略標籤 >建立策略。
- 在 建立原則 區段中:
- 請輸入唯一的「政策名稱」。
- 請輸入說明。
- 選取 原則類型 作為代理程式指派原則。
- 從下拉選項中選取 位置和 資源群組。
- 輸入代理程式的 標籤。
- 按下一步。
- 在 原則參數 區段中:
- 請從下拉式清單中選擇您的代理商。
- 在 定義原則屬性 區段中。
- 選取 物件類型 作為
workspace或action。 - 選取資源群組。
- 選取 物件位置。
- 輸入 物件標籤。
- 按下一步。
- 選取 物件類型 作為
- 在 原則預覽 區段中:
- 選取需要成為原則一部分的工作區。
- 在 建立原則 區段中:
- 按一下建立。
使用使用者介面列出所有原則
- 登入 IBM Cloud控制台。
- 點擊選單圖示
>平台自動化>Schematics>擴充>策略標籤。
使用使用者介面顯示原則
- 登入 IBM Cloud控制台。
- 點擊選單圖示
>平台自動化>Schematics>擴充>策略標籤。
- 從清單中按一下您的原則,以檢視原則詳細資料。
- 在「指派的代理程式」視窗中,按一下 代理程式詳細資料 以檢視代理程式配置。
使用使用者介面更新代理程式原則
您可以使用 AGENT_ID 來參照代理程式,以更新代理程式原則來變更選項標籤或說明。
- 登入 IBM Cloud控制台。
- 點擊選單圖示
>平台自動化>Schematics>擴充>策略標籤。
- 從清單中按一下您的原則,以檢視原則詳細資料。
- 按一下 動作 > 編輯原則,以更新參數。
使用使用者介面刪除原則
- 登入 IBM Cloud控制台。
- 點擊選單圖示
>平台自動化>Schematics>擴充>策略標籤。
- 從清單中按一下您的原則,以檢視原則詳細資料。
- 按一下 動作 > 刪除原則,以刪除參數。
使用 CLI 建立代理程式原則
使用 CLI 建立代理程式原則。 如需代理程式原則選項的完整清單,請參閱 原則指令 文件。
開始之前:
- 將 Schematics 外掛程式 版本安裝或更新為
1.12.12或更高版本。 - 選取在其中定義代理程式的 IBM Cloud 地區。 執行
ibmcloud target -r <region>指令來設定 CLI 地區。 - 建立代理程式原則檔案
定義 JSON 原則檔
這裡提供 JSON 原則檔範例。 將 <...> 位置保留元取代為實際值。
- 要在上執行的代理程式工作是使用
target區塊來定義。 - 用於選取要在代理程式上執行之工作區或動作的屬性由
parameter區塊定義。
可以在任何編輯器或 IDE 中編輯原則 JSON 檔案。 它們必須是有效的 JSON。
原則 JSON 檔案語法:
{
"target": {
"selector_kind": "ids",
"selector_ids": [
"<agent id>"
]
},
"parameter": {
"agent_assignment_policy_parameter": {
"selector_kind": "scoped",
"selector_scope": [{
"kind": "workspace",
"tags": [
"<user_tag>"
],
"resource_groups": [
"<resource_group>"
],
"locations": [
"<region>"
]
}]
}
}
}
範例
{
"target": {
"selector_kind": "ids",
"selector_ids": [
"agent-prod-live.deA.e055"
]
},
"parameter": {
"agent_assignment_policy_parameter": {
"selector_kind": "scoped",
"selector_scope": [{
"kind": "workspace",
"tags": [
"live-prod"
],
"resource_groups": [
"Default"
],
"locations": [
"eu-de"
]
}]
}
}
}
建立代理程式原則
範例
ibmcloud schematics policy create --name agent-policy-testing-cli-jan-10 --kind agent_assignment_policy --location eu-de --resource-group Default --target-file policy.json
輸出
Creating policy...
ID agent-policy-testing-cli-jan-10.deP.c737
Name agent-policy-testing-cli-jan-10-27
Description
Kind agent_assignment_policy
Location eu-de
Resource Group aac37f57b20142dba1a435c70aeb12df
Target
Tags [TAGS]
- workspace-policy:prod
使用 CLI 列出所有原則
您可以使用 policy list 指令來顯示帳戶中所定義的原則清單。
範例
ibmcloud schematics policy list
輸出
Retrieving policies...
OK
Name ID Description Kind Tags
agent-policy-testing-cli-jan-10 agent-policy-testing-cli-jan-10.deP.c737 workspace-policy:prod
policy-023e7204-c33d-49b8-a9f3-695ff085290d policy-023e7204-c33d-49b8-a9f3-695ff085290d.gbP.8b3c Created agent-assignment-policy for the ...
policy-067dfb28-928b-4e90-ad2b-9d26343a1ceb policy-067dfb28-928b-4e90-ad2b-9d26343a1ceb.deP.796d Created agent-assignment-policy for
Showing 1-3 of 3 items
使用 CLI 顯示原則
您可以使用 policy get 指令來檢視代理程式原則的配置。
範例
ibmcloud schematics policy get agent-policy-testing-cli-jan-10.deP.c737
輸出
Retrieving policy...
ID agent-policy-testing-cli-jan-10.deP.c737
Name agent-policy-testing-cli-jan-10
Description
Kind agent_assignment_policy
Location eu-de
Resource Group aac37f57b20142dba1a435c70aeb12df
Target
Tags [TAGS]
- workspace-policy:prod
使用 CLI 更新代理程式原則
您可以使用 AGENT_ID 輸入引數來參照代理程式,以更新代理程式原則來變更選項標籤或說明。
ibmcloud schematics policy update --id agent-policy-testing-cli-jan-10.deP.c737 --kind agent_assignment_policy --resource-group Default --tags workspace-policy:prod --description testing-policy-cli --tags jobtag
Updating policy...
ID agent-policy-testing-cli-jan-10.deP.c737
Name agent-policy-testing-cli-jan-10
Description testing-policy-cli
Kind agent_assignment_policy
Location eu-de
Resource Group Default
Target
Tags [TAGS]
- workspace-policy:prod
- jobtag
更新之後,請擷取原則以確認變更。
範例
ibmcloud schematics policy get --id agent-policy-testing-cli-jan-10.deP.c737
輸出
Retrieving policy...
ID agent-policy-testing-cli-jan-10.deP.c737
Name agent-policy-testing-cli-jan-10
Description testing-policy-cli
Kind agent_assignment_policy
Location eu-de
Resource Group Default
Target
Tags [TAGS]
- workspace-policy:prod
- jobtag
使用 CLI 刪除原則
您可以 刪除原則,並傳遞 AGENT_ID 輸入引數。
ibmcloud schematics policy delete --id agent-policy-testing-cli-jan-10.deP.c737
Do you really want to delete the policy? [y/N]> y
Initiating policy delete...
使用 API 建立代理程式原則
請依照以下 步驟 取得您的 IAM 存取憑證,並透過 API 對 IBM Cloud Schematics 進行驗證。 如需代理程式原則 API 的相關資訊,請參閱 代理程式原則 API 工作狀態。
使用 API 建立原則的範例
POST /v2/settings/policies HTTP/1.1
Host: schematics.cloud.ibm.com
Content-Type: application/json
Authorization: Bearer <auth_token>
{
"name": "policy-1",
"description": "Policy for job execution of secured workspaces on agent1",
"resource_group": "Default",
"tags": [
"policy:secured-job"
],
"location": "us-south",
"kind": "agent_assignment_policy",
"target": {
"selector_kind": "ids",
"selector_ids": [
"agent5.8442"
]
},
"parameter": {
"agent_assignment_policy_parameter": {
"selector_kind": "scoped",
"selector_scope": [
{
"kind": "workspace",
"tags": [
"env:dev",
"k8s"
],
"resource_groups": [
"test"
],
"locations": [
"us-south"
]
}
]
}
}
}
使用 API 取得原則的範例
GET /v2/settings/policies/<your policy_id> HTTP/1.1
Host: schematics.cloud.ibm.com
Content-Type: application/json
X-ENABLE-POLICIES: true
Authorization: Bearer <auth_token>
使用 API 更新原則的範例
PATCH /v2/settings/policies/<your policy_id> HTTP/1.1
Host: schematics.cloud.ibm.com
Content-Type: application/json
X-ENABLE-POLICIES: true
Authorization: Bearer <auth_token>
{
"name": "policy-1",
"description": "updated Policy for job execution of secured workspaces on agent1",
"resource_group": "Default",
"tags": [
"policy:secured-job"
],
"location": "us-south",
"kind": "agent_assignment_policy",
"target": {
"selector_kind": "ids",
"selector_ids": [
"agent5.13a6"
]
},
"parameter": {
"agent_assignment_policy_parameter": {
"selector_kind": "scoped",
"selector_scope": [
{
"kind": "action",
"tags": [
"env:dev",
"k8s"
],
"resource_groups": [
"dummy_resource_group"
],
"locations": [
"us-south"
]
}
]
}
}
}
使用 API 尋找原則的範例
POST /v2/settings/policies/search HTTP/1.1
Host: schematics.cloud.ibm.com
Content-Type: application/json
Authorization: Bearer <auth_token>
{
"parameter": {
"kind": "workspace",
"tags": [
"env:dev",
"k8s"
],
"resource_groups": [
"test"
],
"locations": [
"us-south"
]
},
"target": "action"
}
您現在可以使用代理程式來執行 Schematics Terraform 或 Ansible 工作。 代理程式會執行符合已定義選取原則參數之工作區或動作的任何工作:
- 資源群組
- 位置
- 標籤
請注意,必須在工作區或動作建立時間設定標籤。 透過 Schematics 使用者介面所進行的任何標籤變更,在政策評估過程中均不會被偵測或納入考量。
執行之後,工作區或動作工作日誌包含一個標頭,指出在其上執行工作的代理程式。
2023/04/08 15:22:07 [1m----- New Workspace Action -----[21m[0m
2023/04/08 15:22:07 Request: activitId=e3fcfdfdb13b07a1c60176e4b95c41ba, account=, owner=steve_strutt@uk.ibm.com, requestID=0a8a3428-b461-4dd0-8104-e859d68d35f6, OrchestratorID=orchestrator-5c8585dc74-6z9s5, agentID=agent-test-da.deA.e055, agentName=agent-test-da, jobRunnerID=jobrunner-5d99b5cfb7-p5xcz
2023/04/08 15:22:07 Related Workspace: name=myworkspace, agentID=agent-test-da.deA.e055 sourcerelease=(not specified), sourceurl=https://github.com/stevestrutt/multitier-vpc-bastion-host, branch=(not specified), folder=.
2023/04/08 15:22:07 --- Ready to execute the command on Agent agent-test-da.deA.e055 ---
下一步
您可以查看 代理程式常見問題(FAQ),以瞭解與代理程式相關的任何常見問題。
當不再需要代理程式時,可以遵循 刪除代理程式 中的步驟來移除代理程式。