使用代理政策
代理程序 (分配) 策略告知 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 会自动路由工作空间作业,包括 Git 下载,Terraform 计划,应用,销毁与 tags
和 resource-group
条件匹配的所有工作空间的作业,以在 agent-1
上执行。
使用 UI 创建代理程序策略
- 登录 IBM Cloud控制台。
- 点击 "菜单图标,然后点击 "
"平台自动化"Schematics">"扩展">"政策标签>"制定政策。
- 在 创建策略 部分中:
- 输入唯一的保单名称。
- 输入描述。
- 选择 策略类型 作为代理程序分配策略。
- 从下拉选项中选择 位置和 资源组。
- 输入代理程序的 标记。
- 单击下一步。
- 在 策略参数 部分中:
- 从下拉列表中选择您的代理商。
- 在 定义策略属性 部分中。
- 选择 对象类型 作为
workspace
或action
。 - 选择资源组。
- 选择 对象位置。
- 输入 对象标记。
- 单击下一步。
- 选择 对象类型 作为
- 在 策略预览 部分中:
- 选择需要作为策略一部分的工作空间。
- 在 创建策略 部分中:
- 单击创建。
使用 UI 列出所有策略
- 登录 IBM Cloud控制台。
- 单击菜单图标
>平台自动化>Schematics>扩展>策略选项卡。
使用 UI 显示策略
- 登录 IBM Cloud控制台。
- 单击菜单图标
>平台自动化>Schematics>扩展>策略选项卡。
- 单击列表中的策略以查看策略详细信息。
- 在“已分配的代理程序”窗口中,单击 代理程序详细信息 以查看代理程序配置。
使用 UI 更新代理程序策略
您可以通过使用 AGENT_ID
引用代理程序来更新代理程序策略以更改选择标记或描述。
- 登录 IBM Cloud控制台。
- 单击菜单图标
>平台自动化>Schematics>扩展>策略选项卡。
- 单击列表中的策略以查看策略详细信息。
- 单击 操作 > 编辑策略 以更新参数。
使用 UI 删除策略
- 登录 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 UI 对标记执行的任何更改。
执行后,工作空间或操作作业日志包含一个头,该头指示在其上执行作业的代理程序。
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 ---
后续步骤
您可以查看 代理程序常见问题,以了解与代理程序相关的任何常见问题。
不再需要代理程序时,可以遵循 删除代理程序 中的步骤将其除去。