使用代理策略

代理程式 (指派) 原則會告知 Schematics 要使用哪個代理程式在特定網路區域中執行工作區及動作工作。 每一個代理程式都有一或多個相關聯的原則,可識別在代理程式上執行的工作區及動作工作。 例如,代理程式可能存在於中,且工作可以在下列隔離區域中執行:

  • 雲端地區 (region-1、region-2、region-3)
  • 應用程式層、資料層、管理層的 VPC 區域
  • 雲端供應商或內部部署
  • 貴組織內的部門區域,例如 HRFinanceManufacturing

只有單一原則可以與工作區或動作相關聯。 如果現有原則以相同的工作區或動作為目標,則原則建立會失敗。

您可以使用 Schematics 原則指令 CLI 來建立、更新及刪除 agent assignment policy

代理程式的 agent-assignment-policy 是使用工作區或動作的下列屬性來定義。 選項屬性可以是下列旗標的組合:

  • tags-選取具有相符使用者標籤的工作區或動作。
  • locations-選取相符 Schematics 位置中的工作區或動作。
  • resource-groups-選取具有相符資源群組的工作區或動作。

agent-1 的選取政策中指定了 tags=[dev],且 resource-group=[rg-2],Schematics 會自動將符合 tagsresource-group 條件的所有工作區相關工作(包括 Git 下載、Terraform 規劃、套用及銷毀作業),路由至 agent-1 執行。

使用使用者介面建立代理程式原則

  1. 登入 IBM Cloud控制台
  2. 點選選單圖示漢堡包圖示>平台自動化>Schematics>擴充>策略標籤 >建立策略
    • 建立原則 區段中:
      • 請輸入唯一的「政策名稱」。
      • 請輸入說明
      • 選取 原則類型 作為代理程式指派原則。
      • 從下拉選項中選取 位置資源群組
      • 輸入代理程式的 標籤
      • 下一步
    • 原則參數 區段中:
      • 請從下拉式清單中選擇您的代理商
      • 定義原則屬性 區段中。
        • 選取 物件類型 作為 workspaceaction
        • 選取資源群組
        • 選取 物件位置
        • 輸入 物件標籤
        • 下一步
      • 原則預覽 區段中:
        • 選取需要成為原則一部分的工作區。
  3. 按一下建立

使用使用者介面列出所有原則

  1. 登入 IBM Cloud控制台
  2. 點擊選單圖示漢堡圖示>平台自動化>Schematics>擴充>策略標籤。

使用使用者介面顯示原則

  1. 登入 IBM Cloud控制台
  2. 點擊選單圖示漢堡圖示>平台自動化>Schematics>擴充>策略標籤。
  3. 從清單中按一下您的原則,以檢視原則詳細資料。
  4. 在「指派的代理程式」視窗中,按一下 代理程式詳細資料 以檢視代理程式配置。

使用使用者介面更新代理程式原則

您可以使用 AGENT_ID 來參照代理程式,以更新代理程式原則來變更選項標籤或說明。

  1. 登入 IBM Cloud控制台
  2. 點擊選單圖示漢堡圖示>平台自動化>Schematics>擴充>策略標籤。
  3. 從清單中按一下您的原則,以檢視原則詳細資料。
  4. 按一下 動作 > 編輯原則,以更新參數。

使用使用者介面刪除原則

  1. 登入 IBM Cloud控制台
  2. 點擊選單圖示漢堡圖示>平台自動化>Schematics>擴充>策略標籤。
  3. 從清單中按一下您的原則,以檢視原則詳細資料。
  4. 按一下 動作 > 刪除原則,以刪除參數。

使用 CLI 建立代理程式原則

使用 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 -----  New Workspace Action  -----
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),以瞭解與代理程式相關的任何常見問題。

當不再需要代理程式時,可以遵循 刪除代理程式 中的步驟來移除代理程式。