エージェント・ポリシー
エージェント (割り当て) ポリシーは、特定のネットワーク・ゾーンでワークスペースおよびアクション・ジョブを実行するために使用するエージェントを Schematics に指示します。 各エージェントには、そのエージェントで実行されるワークスペース・ジョブとアクション・ジョブを識別するための 1 つ以上のポリシーが関連付けられています。 例えば、エージェントが存在する可能性があり、以下の分離ゾーンでジョブを実行できます。
- クラウド領域 (region-1、 region-2、 region-3)
- アプリケーション層、データ層、管理層の VPC ゾーン
- クラウド・ベンダーまたはオンプレミス
- 組織内の部門別ゾーン(
HR、Financeなど)Manufacturing
ワークスペースまたはアクションに関連付けることができるポリシーは 1 つだけです。 同じワークスペースまたはアクションをターゲットとする既存のポリシーが存在する場合、ポリシーの作成は失敗します。
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のplan、apply、destroyジョブを含むワークスペースジョブを、
agent-1 上で実行されるよう自動的にルーティングします。
UI を使用したエージェントポリシーの作成
- IBM Cloudコンソールにログインします。
- メニューアイコンの
>Platform Automation>Schematics>Extensions>Policies タブ >Create policyをクリックします。
- 「ポリシーの作成」 セクションで、以下のようにします。
- 一意のポリシー名を入力してください。
- 説明を入力してください。
- エージェント割り当てポリシーとして 「ポリシー・タイプ」 を選択します。
- 「ロケーション」 を選択し、ドロップダウン・オプションから 「リソース・グループ」 を選択します。
- エージェントの 「タグ」 を入力します。
- 次へ をクリックします。
- 「ポリシー・パラメーター」 セクションで、以下を行います。
- ドロップダウンリストからエージェントを選択してください。
- 「ポリシー属性の定義」 セクションで、以下のようにします。
- 「オブジェクト・タイプ」 として
workspaceまたはactionを選択します。 - **「リソース・グループ」**を選択します。
- 「オブジェクトの場所」 を選択します。
- 「オブジェクト・タグ」 と入力します。
- 次へ をクリックします。
- 「オブジェクト・タイプ」 として
- 「ポリシーのプレビュー」 セクションで、以下のようにします。
- ポリシーの一部にする必要があるワークスペースを選択します。
- 「ポリシーの作成」 セクションで、以下のようにします。
- 「作成」 をクリックします。
UI を使用したすべてのポリシーのリスト
- IBM Cloudコンソールにログインします。
- メニューアイコンの
>Platform Automation>Schematics>Extensions>Policies タブをクリックします。
UI を使用したポリシーの表示
- IBM Cloudコンソールにログインします。
- メニューアイコンの
>Platform Automation>Schematics>Extensions>Policies タブをクリックします。
- リストからポリシーをクリックして、ポリシーの詳細を表示します。
- 「割り当て済みエージェント」 ウィンドウで、 「エージェントの詳細」 をクリックしてエージェント構成を表示します。
UI を使用したエージェント・ポリシーの更新
エージェントを AGENT_ID で参照することにより、エージェント・ポリシーを更新して選択タグまたは説明を変更することができます。
- IBM Cloudコンソールにログインします。
- メニューアイコンの
>Platform Automation>Schematics>Extensions>Policies タブをクリックします。
- リストからポリシーをクリックして、ポリシーの詳細を表示します。
- 「アクション」 > 「ポリシーの編集」 をクリックして、パラメーターを更新します。
UI を使用してポリシーを削除する
- IBM Cloudコンソールにログインします。
- メニューアイコンの
>Platform Automation>Schematics>Extensions>Policies タブをクリックします。
- リストからポリシーをクリックして、ポリシーの詳細を表示します。
- パラメーターを削除するには、 「アクション」 > 「ポリシーの削除」 をクリックします。
CLI を使用したエージェントポリシーの作成
CLI を使用してエージェント・ポリシーを作成します。 エージェント・ポリシー・オプションの完全なリストについては、 ポリシー・コマンド の資料を参照してください。
始める前に
- Schematics プラグイン のバージョンを
1.12.12以上にインストールまたは更新します。 - エージェントが定義されている IBM Cloud 地域を選択します。
ibmcloud target -r <region>コマンドを実行して、CLI リージョンを設定します。 - エージェント・ポリシー・ファイルの作成
JSONポリシーファイルの定義
サンプルの JSON ポリシー・ファイルを以下に示します。 <...> プレースホルダーを実際の値に置き換えます。
- 実行されるエージェント・ジョブは、
targetブロックを使用して定義されます。 - エージェントで実行するワークスペースまたはアクションを選択するための属性は、
parameterブロックによって定義されます。
ポリシー JSON ファイルは、任意のエディターまたは IDE で編集できます。 それらは有効な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 を使用したエージェント・ポリシーの作成
手順に従って、API を使用して IAM アクセス・トークンを取得し、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 ---
次のステップ
エージェントに関連する一般的な質問については、 エージェントの FAQ を確認してください。
エージェントが不要になったら、 エージェントの削除 の手順に従って削除することができます。