5.4. カスタム UI コンポーネントとフィルター
Ansible Backstage Plugins は、Ansible Automation Platform のリソース選択および認証と直接統合することで、ソフトウェアテンプレートのエクスペリエンスを強化するカスタム UI コンポーネントを提供します。
5.4.1. AAPTokenField リンクのコピーリンクがクリップボードにコピーされました!
AAPTokenField は、backstage スキャフォールダーテンプレートで使用されるセキュアな認証フィールドです。Ansible Automation Platform OAuth2 トークンを自動的に取得して保存し、すべての rhaap:* アクションで使用できるようになるため、シームレスな認証が可能になります。
AAPTokenField プロパティー
次の表は、テンプレートのプロパティーセクションで使用されるフィールドのプロパティーの詳細を示しています。
| Property | 型 | 説明 |
|---|---|---|
|
| string | UI に表示されるラベル (例: "AAP Token")。デフォルトは "AAP Token" です。 |
|
| string | 入力フィールドの下に表示される短いヘルプテキスト。 |
|
| string |
|
|
| boolean |
|
認証フローとトークン管理
すべての rhaap:* アクションには、Ansible Automation Platform での認証に OAuth2 トークンが必要です。このフィールドは、次のプロセスを通じてトークンを管理します。
- Token Source: トークンは、Ansible Automation Platform OAuth2 認証プロバイダーから自動的に取得されます。
-
Storage: トークンは Backstage シークレット内にセキュアに保存されるか、
@ansible/backstage-plugin-auth-backend-module-rhaap-providerを通じて取得されます。 -
Usage: トークンは、
token入力パラメーターを使用して各アクションに渡されます。
RHAAP 認証プロバイダーを使用すると、トークンは自動的に注入され、次に示すようにワークフロー手順で参照できます。
- id: create-project
action: rhaap:create-project
input:
token: ${{ parameters.AAP_TOKEN }}
# ... other inputs
例
次の例は、backstage テンプレート内で AAPTokenField を宣言および参照する方法を示しています。ui:widget:hidden と ui:backstage: review: show: false は、トークンが UI に公開されないようにするために使用されることに注意してください。
apiVersion: scaffolder.backstage.io/v1beta3
kind: Template
metadata:
name: my-AAP-template
title: Example AAP Template
spec:
parameters:
- title: Authentication
properties:
token:
title: AAP Authentication Token
type: string
description: Oauth2 token
ui:field: AAPTokenField
ui:widget: hidden
ui:backstage:
review:
show: false
steps:
- id: launch-job
name: Launch AAP Job Template
action: rhaap:launch-job-template
input:
token: ${{ parameters.token }}
...
エラーと検証の処理
すべての rhaap:* アクションには、組み込みの検証機能とユーザーにとって分かりやすいエラー報告機能が含まれています。
- 検証: トークンが欠落しているか無効な場合、このアクションにより "`Authorization token not provided`." エラーが出力されます。
- エラーメッセージ: アクションは API クライアントエラーをキャッチし、スタックトレースを公開せずに意味のあるメッセージを抽出して表示します。
- ワークフローの安全性: 認証エラーによりステップが失敗した場合、後続のステップは自動的にスキップされ、安全で予測可能なワークフローが維持されます。
5.4.2. AAPResourcePicker リンクのコピーリンクがクリップボードにコピーされました!
AAPResourcePicker は、backstage スキャフォールダーテンプレートの動的フィールドです。Ansible Automation Platform API から直接 Ansible Automation Platform リソース (インベントリー、組織、認証情報など) のリストを取得して表示し、ユーザーが自動化ワークフローのリソースを選択できるようにします。
AAPResourcePicker プロパティー
次の表は、テンプレートの properties セクションでリソースピッカーを設定するための重要なプロパティーの詳細を示しています。
| Property | 型 | 説明 |
|---|---|---|
|
| string | UI に表示されるラベル (例: "Inventory")。 |
|
| string | フィールドの下に表示される短いヘルプテキスト。 |
|
| string |
|
|
| string |
取得して表示する特定の Ansible Automation Platform (AAP) リソースタイプ (例: |
|
| string | リソース ID の取得に使用されるプロパティー名 (デフォルト: “id”)。 |
|
| string | リスト内のリソース名表示に使用されるプロパティー名 (デフォルト: “name”)。 |
|
| string | 複数選択フィールドの場合は “array” に設定し、単一選択フィールドの場合はこのプロパティーを省略します。 |
例
次の例は、AAPResourcePicker を使用して、インベントリー を選択するための単一選択フィールドを作成する方法を示しています。
apiVersion: scaffolder.backstage.io/v1beta3
kind: Template
metadata:
name: my-AAP-template
title: Example AAP Template
spec:
parameters:
- title: Authentication
properties:
jobInventory:
title: Inventory
description: Select inventory
resource: inventories
ui:field: AAPResourcePicker
default: DemoInventory
5.4.3. カスタムフィルター リンクのコピーリンクがクリップボードにコピーされました!
このプラグインは、リソースオブジェクトから特定のプロパティーを抽出するためのカスタムフィルターを提供します。これは、backstage ステップ間でデータを渡すために不可欠です。
| フィルター | 目的 | 使用例 |
|---|---|---|
|
| リソースオブジェクトから特定のプロパティーを 1 つ抽出します。 | `$!{{ parameters.organization |
| resourceFilter('name') }}` |
| 複数のリソースオブジェクトから特定のプロパティーを抽出します (入力が配列の場合)。 |