カタログ・マニフェストをローカルで編集する
カタログ・マニフェスト・ファイルは、カタログを通じてユーザーと共有したいオンボード・ソリューションに関する情報を指定します。 ライセンスやコンプライアンスに関する情報を提供したり、特定の設定を行ったり、製品の使用目的について説明したりすることができます。
コンソールを使ってカタログの詳細を編集したいですか? 提供されたウィザードを使用して、マニフェスト・ファイルをエクスポートします に従って選択し、ソース・レポに追加することができる。 プロジェクト内で配置可能なアーキテクチャをスタックして いる場合、プロジェクトからプライベート・カタログにアーキテクチャを追加すると、カタログ・マニフェストが作成されます。
カタログの詳細をマニフェスト・ファイルにマッピングする
マニフェストファイルに追加されたコンテンツがユーザーにどのように表示されるかを視覚化するために、 ibm_catalog.json とカタログ詳細ページの関係を示す以下の例を参照してください。
展開可能なアーキテクチャ名、説明、機能、およびバリエーションがカタログマニフェストファイルでどのように定義され、ユーザーがカタログ詳細ページでどのようにその情報を見るかを見てみましょう。
カタログマニフェストファイルでどのように定義されているかに基づいて、ユーザーがバリエーションを比較できるように、バリエーション特徴リストがどのように使用されているかを見てみましょう。
権限とアーキテクチャ図の詳細がカタログマニフェストファイルのどこで指定され、カタログ詳細ページでどのように表示されるか見てみましょう。
また、 Workload Protection を使用してインベントリ結果で検証される特定のコンプライアンス・レベルをアーキテクチャが満たしている場合、バリエーションごとにそのコンプライアンスを主張することができます。 Workload Protection ポリシーを指定することで、 ibm_catalog.json ファイルにおいて、アーキテクチャが一定のコンプライアンス・レベルを満たす方法を定義します。 また、 Workload Protection
は、デプロイされたリソースを使用してコンプライアンスを検証するため、アーキテクチャが作成するリソースをデプロイする必要があります。 詳細は、「 展開可能なアーキテクチャのコンプライアンス情報を管理する 」を参照してください。
次の例では、マニフェスト ファイルで定義されたコンプライアンス情報がユーザーにどのように表示されるかを見てみましょう。
マニフェストの編集
ローカルでマニフェストを編集するには、次の手順を使用できます。
- 次の例のマニフェストファイルをローカルエディタにコピーします。
- ファイル
ibm_catalog.jsonに名前を付ける。 - マニフェストの例を参考にして、お好みの設定をファイルに追加してください。 各値の詳細については、 利用可能な値を ご覧ください。
- ソースコード・リポジトリのルート・フォルダーにファイルを追加する。
- 展開可能なアーキテクチャをカタログに追加 します。
デプロイ可能なアーキテクチャがすでにプライベートカタログにオンボードされている場合、コンソールから マニフェストをダウンロード できます。
マニフェストファイルの例
以下のコード・スニペットはテンプレートとして使用できる。
{
"products": [
{
"name": "",
"label": "",
"product_kind": "",
"tags": [
"tag 1",
"tag 2"
],
"keywords": [
"keyword 1",
"keyword 2",
"keyword 3"
],
"short_description": "Short description of your product.",
"long_description": "A longer description of your product.",
"offering_docs_url": "URL",
"offering_icon_url": "URL or emebbed image",
"provider_name": "Community",
"module_info": {
"works_with": [
{
"catalog_id": "",
"name": "module name",
"kind": "terraform",
"version": "0.1.0",
"flavor": "Variation name"
}
]
},
"support_details": "Explanation of support.",
"features": [
{
"title": "Feature 1 title"
"description": "Feature 1 description"
},
{
"title": "Feature 2 title"
"description": "Feature 2 description"
}
],
"flavors": [
{
"label": "Display name",
"name": "Programatic name",
"index": 1,
"install_type": "Install type",
"working_directory": "Directory path",
"usage_template": "template",
"scripts": [
{
"type": "ansible",
"short_description": "Short description of what your script is intended to do.",
"path": "Path to script location.",
"stage": "The stage. For example, pre.",
"action": "The action. For example, validate."
}
],
"change_notices": {
"breaking": [
{
"title": "Title of breaking change",
"description": "Description of the change."
}
],
"new": [
{
"title": "Title of new feature",
"description": "Description of the new feature or capability."
}
],
"update": [
{
"title": "Title of general update",
"description": "Description of the general update."
}
]
},
"compliance": {
"authority": "scc-v3",
"controls": [
{
"profile": {
"name": "Security and Compliance Center profile name",
"version": "Profile version"
},
"names": [
"Control name 1 e.g. AC-2(a)",
"Control name 2",
"Control name 3"
]
}
]
},
"configuration": [
{
"key": "key type e.g. ssh_key",
"required": true
},
{
"key": "Key type e.g. ibmcloud_api_key",
"required": true,
"type": "The data type"
}
],
"outputs": [
{
"description": "Output description",
"key": "key"
},
{
"description": "Output description",
"key": "key"
}
],
"dependencies": [
{
"catalog_id": "ID",
"id": "ID",
"name": "Product programmatic name",
"kind": "Format kind",
"version": "Versions or range of versions",
"flavors": [
"Variation name 1",
"Variation name 2",
"Variation name 3"
],
"install_type": "fullstack or extension",
}
],
"iam_permissions" [
{
"role_crns": [
"CRN 1 e.g. crn:v1:bluemix:public:iam::::serviceRole:Manager",
"CRN 2 e.g. crn:v1:bluemix:public:iam::::role:Administrator"
],
"service_name": "Programatic service name e.g. is.vpc"
}
],
"licenses": [
{
"name": "License name",
"smref": "Link to the license"
}
],
"schematics_env_values": {
"value": "value",
"smref": " "
},
"architecture": {
"descriptions": " ",
"features": [
{
"title": "Feature 1 title",
"description": "Feature 1 description"
},
{
"title": "Feature 1 title",
"description": "Feature 1 description"
}
],
"diagram": {
"caption": "Diagram caption",
"url": "Link to diagram or embedded image",
"metadata": []
},
"description": "Description of the diagram"
}
}
]
}
]
}
使用可能な値
以下のセクションには、マニフェスト・ファイルで参照できる各値に関する情報が含まれています。
製品
productsの値は、サイズが1以上の商品の配列を示します。 リポジトリのルートにカタログ マニフェスト ファイルが存在する場合、そのファイル内の製品のみをインポートできます。 製品は1つずつ輸入される。 products 、以下の値を含めることができる:
label
製品の表示名。 この値は、オンボーディング時に入力した表示名と一致する必要があります。
name
製品のプログラム名。
version
製品のバージョンを SemVer 形式で記載。メジャーバージョン、マイナーバージョン、リビジョンを含む。例えば、 1.0.0。 この値は、製品がカタログにオンボードされるときにも指定できる。
product_kind
導入しようとしている製品の種類。 有効な値は、ソフトウェア、モジュール、ソリューションのいずれか。 ソリューションとは、展開可能なアーキテクチャとして知られている。
keywords
ユーザーが検索しようとする特定の単語やフレーズの配列。
short_description
御社の製品がどのようなもので、どのような価値があるのかを簡潔にまとめたもの。
long_description
製品の詳細な説明で、製品の価値とユーザーにとっての利点を説明します。
provider_name
ユーザーは、製品の提供者によってカタログをフィルタリングすることができます。 プライベート・カタログに製品をオンボードする場合、プロバイダー名はデフォルトで Community に設定されます。 ただし、このフィールドをカスタマイズして会社名や組織名を表示することは可能です。 IBM は予約値で、 IBM ビルド製品にのみ使用できます。
offering_docs_url
ユーザーがアクセスできる製品に関する文書へのリンク。
offering_icon_url
製品のカタログ入力ページに表示したいアイコンがある URL へのリンク。
support_details
サポート連絡先、サポート拠点、サポート方法を含むことができるマークダウン形式のサポート情報。
features
製品のプロセス、能力、結果を強調する詳細については、 products 内のセクションヘッダーを参照のこと。 これらの製品レベルの特徴は、製品説明とともにカタログのエントリーページに記載されます。 例えば、CPU要件やセキュリティ機能などが挙げられる。 各エントリは、前のセクションのマニフェストの例に示されているように、配列として定義されます。 features :
features[].title- 機能の名前。
features[].description- 機能の簡潔な説明。
モジュール
module_info の値は、展開可能なアーキテクチャが互換性を持つ他の製品に関する情報を示す。 module_info :
works_with
展開可能なアーキテクチャと互換性のある単一製品に関する情報については、セクションヘッダを参照のこと。 works_with :
works_with[].catalog_id(オプション)- 商品が掲載されているカタログのID。 指定がない場合、 IBM Cloud カタログがデフォルトとなる。
works_with[].id(オプション)- 製品のID。
name、IDは不要。 works_with[].name(オプション)- 展開可能なアーキテクチャで動作する製品のプログラム名。
works_with[].kind- デプロイ可能なアーキテクチャで動作するモジュールの形式。 多くの場合、これは
terraform。 works_with[].version- SemVer 形式で、展開可能なアーキテクチャで動作する製品バージョンのバージョンまたは範囲。
works_with[].flavors[](オプション)- 互換性のあるバリエーションのプログラム名。 バリエーションは個別にカタログに搭載され、バージョン番号が与えられる。 バリエーション名の例としては、
standardやadvancedなどがある。
フレーバー
展開可能なアーキテクチャのバリエーションについては、セクションヘッダを参照のこと。 フレーバーはコンソールのバリエーションとして知られるようになった。 flavors 、以下の値を含めることができる:
label
バリエーションの表示名。
name
バリエーション番組名。
short_description
このバージョンのバリエーションについての簡単な説明。
index
バリエーションがカタログに掲載される順番。
working_directory
レポジトリのルートレベルにある作業ディレクトリの場合、作業ディレクトリを指定する必要はありません。 ルートにない場合は、リポジトリのルートからのパスを列挙してください。 例えば、./examples/ です。
usage
アーキテクチャーを組み込む方法や、Terraformを使ってローカルで実行する方法についての情報。
usage_template
usage に似ている。 テンプレートでは、値を代入するプレースホルダーとして変数を使うことができる。 文字列は usage プロパティに格納される。
| テンプレート変数 | 置換値 |
|---|---|
| ${{version}} | このバリエーションまたはフレーバーのバージョン文字列。 |
| ${{flavor}} | バリエーションまたはフレーバーのプログラム名。 |
| ${{kind}} | 実施する種類。 I.e. terraform. |
| ${{id}} | 製品ID。 |
| ${{name}} | 当該サービスまたは製品のプログラム名。 |
| ${{catalogID}} | そのオファリングまたは製品が掲載されているカタログのID。 |
| ${{workingDirectory}} | フレーバーまたはバリエーションの作業ディレクトリ。 |
licenses
flavors セクション内のセクションヘッダで、ユーザーが製品をインストールする際に同意する必要のあるエンドユーザーライセンス契約に関する情報を提供します。 ご使用条件は、IBM Cloud サービス契約に追加されます。
{
"id": "string, license id",
"name": "string, license display name",
"type": "string, type of license, e.g. Apache xxx",
"url": "string, URL for the license text",
"description": "string, license description"
}
licenses :
licenses[].id- ライセンスID。
licenses[].name- ライセンスの名前。
licenses[].type- ライセンスのタイプ。 例えば、 Apache。
licenses[].url- URL ユーザーが使用許諾契約書にアクセスできる場所。
licenses[].description- ライセンスの説明。
compliance
flavors セクション内のセクションヘッダで、デフォルトのインストール設定でアーキテクチャが満たすコンプライアンス制御を示す。 クレームの評価と検証は Workload Protection によって行われる。
次の例は、 compliance セクションの JSON 構造を示している:
"flavors": [{
"compliance": {
"authority": "scc-wp-v1",
"profiles": [{
"profile_name": "",
"profile_version": ""
}],
"controls": [{
"profile": {
"name": "",
"version": ""
},
"names": []
}]
}
}]
カタログ・マニフェスト JSON ファイルに複数のポリシーをリストできますが、プライベート・カタログのコンプライアンス情報に追加されるのは最初のポリシーだけです。
compliance :
compliance.authority- Workload Protection v1 が唯一の権威である。 これはプログラム上では
scc-wp-v1と記述される。 compliance.profiles[]- 要求されているコントロールを含むポリシーの配列。 Workload Protection で、あらかじめ定義されたポリシー を確認できます。
compliance.profiles[].profile_name- ポリシーの名前。 例えば、
NISTです。 ポリシー名は Workload Protection で確認できます。 compliance.profiles[].profile_version- ポリシーのバージョン。 例えば、
1.0.0です。 ポリシーのバージョンは Workload Protection にあります。 compliance.controls[]- このバリエーションで主張されるコントロールの数々。 カタログマニフェストは、コントロールのプロファイル名、プロファイルバージョン、およびコントロール名を指定することで要求できるコントロールの配列を受け入れます。
compliance.controls[].profile- 特定のポリシーからコントロールを追加することを示すオブジェクト。
compliance.controls[].profile.name- 請求されたコントロールのポリシー名。 例えば、
NISTです。 ポリシー名は Workload Protection で確認できます。 compliance.controls[].profile.version- ポリシーのバージョン。 例えば、
1.0.0です。 ポリシーのバージョンは Workload Protection にあります。 compliance.controls[].names[]- クレームされたコントロール名の配列。 例:
["CM-7(b)", "AC-2(a)"]
Readmeとカタログマニフェストファイルにコントロールが含まれている場合、マニフェストファイルが優先されます。 カタログマニフェストファイルに記載されているコントロールが、Readme ファイルに記載されているコントロールと一致していることを確認するのがベストプラクティスです。
change_notices (オプション)
デプロイ可能なアーキテクチャの新バージョンをリリースする際に、ユーザーに警告を発したくなるような3種類の変更のリストです。 breaking changes、 new features、 general updates を指定できます。 破格の変更とは、以前のバージョンで利用可能だった機能を壊してしまうアップデートのことです。 新機能は、ユーザーが新バージョンで遭遇する可能性のある新機能をハイライトします。
アップデートには、必ずしも既存の機能を壊さない変更された動作や、デプロイ可能なアーキテクチャを使いやすくする変更など、ユーザーに強調したい変更が含まれます。
"change_notices": {
"breaking": [
{
"title": "",
"description": ""
}
],
"new_features": [
{
"title": "",
"description": ""
}
],
"updates": [
{
"title": "",
"description": ""
}
]
}
iam_permissions (オプション)
セクションヘッダには、ユーザーがデプロイ可能なアーキテクチャバージョンで作業するために必要なすべてのIAMパーミッションのリストがあります。 IAM許可情報には、必要なサービスのプログラム名と、必要なロールのCRNのリストが含まれる。 UI からカタログ マニフェスト ファイルを構築する場合、CRN はすでに含まれています。
次の例は、 iam_permissions セクションの JSON 構造を示している:
"flavors": [{
"iam_permissions": [{
"service_name": "IAM defined service name",
"notes": "Optional notes about this permission",
"role_crns": ["crn:v1:..."],
"resources": [{
"name": "resource name",
"description": "resource description",
"role_crns": ["crn:v1:..."]
}]
}]
}]
iam_permissions :
iam_permissions[].service_name- ユーザーがアクセスしなければならないサービスのプログラム名。
iam_permissions[].notes(オプション)- この役割について、またはこの役割が含まれる理由について、ユーザーにより詳しい情報を提供してください。 例:
This role is only required if you are using IBM Key Protect for encryption. iam_permissions[].role_crns[]- セクションヘッダは、アクセスロールのリストを示す。
iam_permissions[].resources[]- パーミッションのリソースの配列。
iam_permissions[].resources[].name- リソースの名前。
iam_permissions[].resources[].description- リソースの説明。
iam_permissions[].resources[].role_crns[]- セクションヘッダで、アクセスロールのリストを指示する。
architecture
flavors セクション内のセクションヘッダ。説明、機能、図を含む、展開可能なアーキテクチャーのバージョンに関する高レベルの情報を指定する。 キャプション付きの複数の図を提供することができる。
次の例は、 architecture セクションの JSON 構造を示している:
"flavors": [{
"architecture": {
"features": [{
"title": "",
"description": ""
}],
"diagrams": [{
"diagram": {
"caption": "",
"url": "",
"type": "image/svg+xml",
"thumbnail_url": ""
},
"description": ""
}]
}
}]
architecture :
architecture.features[]- そのバージョン、または該当する場合はアーキテクチャのバリエーションにおけるプロセス、機能、および成果を明らかにする一連の情報。 コンソールを使ってオンボーディングする場合、これらの詳細はハイライトと呼ばれる。 これらの詳細は、カタログエントリーのバリエーション選択ボックスに表示されます。 製品に複数のアーキテクチャのバリエーションがある場合、ユーザーは各バリエーションの機能を比較して、自分のニーズに合ったものを選ぶことができます。
architecture.features[].title- 機能の名前。
architecture.features[].description- この機能の説明。
architecture.diagrams[]- ダイアグラムのキャプション、ダイアグラムの SVG を埋め込むための URL、要素 ID や要素の説明などのダイアグラムのメタデータ、参照アーキテクチャーの説明を含む、アーキテクチャーのダイアグラムの配列。
architecture.diagrams[].diagram- 特異なアーキテクチャ図に関する情報を含むオブジェクト。
architecture.diagrams[].diagram.url- 図のSVGへの URL。 SVGを埋め込むこともできます。
architecture.diagrams[].diagram.api_url- カタログ管理API URL。
architecture.diagrams[].diagram.url_proxy- プロキシされた画像に関する情報を含むオブジェクト。
architecture.diagrams[].diagram.url_proxy.url- URL プロキシされた画像。
architecture.diagrams[].diagram.url_proxy.sha- 画像の
sha識別子。 architecture.diagrams[].diagram.caption- アーキテクチャ図の短いラベル。
architecture.diagrams[].diagram.type- メディアの種類。
architecture.diagrams[].diagram.thumbnail_url- 図のサムネイルへのリンク。
architecture.diagrams[].description- システムの概要や、展開可能なアーキテクチャのコンポーネント間の関係、制約、境界など、アーキテクチャ図全体に関する情報。
dependencies
展開可能なアーキテクチャと互換性のある製品のリストについては、 flavors セクション内のセクションヘッダを参照のこと。 依存関係は必須または任意である。 ここに含まれる依存関係は、 swappable_dependencies セクションにも追加できない。 情報には、製品のプログラム名と製品バージョンが含まれる。 オプションで、カタログIDと依存するバリエーションのリストを含めることができます。
次の例は、 dependencies セクションの JSON 構造を示している:
"flavors": [{
"dependencies": [{
"catalog_id": "catalog ID",
"id": "offering ID",
"name": "offering name",
"kind": "terraform",
"version": "SemVer version e.g. 3.1.2",
"flavors": ["flavor name"],
"install_type": "fullstack or extension",
"optional": true,
"description": "Description of optional dependency",
"on_by_default": false,
"input_mapping": [{
"dependency_output": "kms_instance_crn",
"version_input": "existing_kms_instance_crn"
}]
}]
}]
デプロイ可能なアーキテクチャをカタログに登録する際に、依存関係を満たす必須アーキテクチャと、独自のアーキテクチャと連動するオプションのアーキテクチャに関する情報を提供できます。 詳細については、 オンボーディング中にデプロイ可能なアーキテクチャを拡張するを 参照してください。
dependencies :
dependencies[].catalog_id(オプション)- 商品が掲載されているカタログのID。 指定がない場合、 IBM Cloud カタログがデフォルトとなる。
dependencies[].id(オプション)- 製品 ID。
name、IDは不要。 dependencies[].name(オプション)- 製品のプログラム名。
dependencies[].kind- 依存関係のフォーマットの種類。 スタックコンフィグファイルが存在する、グループ化されたデプロイ可能なアーキテクチャには、
stack。 1つまたは複数のモジュールだけで構成される展開可能なアーキテクチャには、terraform。 dependencies[].version- SemVer 形式で、依存関係に含めるバージョンまたはバージョンの範囲。
dependencies[].flavors[](オプション)- アーキテクチャが互換性のあるバリエーション名の配列。
dependencies[].default_flavor(オプション)- 複数のバリエーションがアーキテクチャと互換性がある場合、またはアーキテクチャの展開に必要な場合に、ユーザーに選択されるデフォルトのバリエーションを指定します。
flavorsプロパティに含まれていれば、ユーザーは別のバリエーションを選択できます。 この値は、その変動のnameです。 このプロパティを使用するには、dependency_version_2をtrueに設定する必要があります。 設定されていない場合、デフォルトのバリエーションはユーザーに提供されません。 dependencies[].optional- 依存関係が必須か必須でないかを指定する。 デフォルト値は
falseです。 このプロパティを使用するには、dependency_version_2をtrueに設定する必要があります。 dependencies[].description(オプション)- ユーザーが、より広いソリューションの中でそのアーキテクチャがどのように機能するのか、また、なぜそのアーキテクチャを入れたくなるのかを理解できるように、あなた自身のアーキテクチャと互換性のあるオプションのアーキテクチャの説明を提供しましょう。 このプロパティを使用するには、
dependency_version_2をtrueに設定する必要があります。 dependencies[].on_by_default- ユーザーが配備可能なアーキテクチャーをカタログからプロジェクトに追加するときに、オプションの依存関係を選択するかどうかを指定します。 ユーザーは、このアーキテクチャが不要であれば、選択を解除することができる。 デフォルト値は
falseです。 このプロパティを使用するには、dependency_version_2とoptionalもtrueに設定する必要があります。 dependencies[].input_mapping[](オプション)- 互換アーキテクチャとオンボーディングするアーキテクチャの間で参照される値を指定する配列。 このプロパティを使用するには、
dependency_version_2をtrueに設定する必要があります。 dependencies[].input_mapping[].dependency_outputまたはdependencies[].input_mapping[].dependency_input(オプション)- オンボーディングするアーキテクチャが参照する依存関係の変数を指定します。 値は依存関係の変数名である。 これら2つのプロパティのうち1つだけを提供すべきである。
reference_versionがtrueに設定されている場合、この変数はオンボーディングしているアーキテク チャのversion_input変数を参照する。 dependencies[].input_mapping[].version_input(オプション)dependency_outputまたはdependency_inputの値を参照する、オンボーディングするアーキテクチャの入力変数の名前を指定します。reference_versionがtrueに設定されている場合、dependency_input変数は、オンボー ドしているアーキテクチャのversion_input変数を参照します。dependencies[].input_mapping[].value(オプション)- オンボーディングしているアーキテクチャ(
version_input)またはその依存関係(dependency_input)からの入力のプリセット値を指定します。ここで指定する値は、version_inputまたはdependency_inputが指定され、dependency_outputが指定されていない場合にのみ使用されます。version_inputが指定されている場合、ユーザーによってアーキテクチャとその依存関係がプロジェクトに追加されると、アーキテクチャのversion_inputはここで指定された値にプリセットされます。dependency_inputが指定されている場合、アーキテクチャとその依存関係がユーザーによってプロジェクトに追加されると、依存関係のdependency_inputはここで指定された値にプリセットされます。 dependencies[].input_mapping[].reference_version(オプション)- オンボーディングするアーキテクチャとその依存関係の間の参照の流れを示す。 デフォルト値は
falseです。 デフォルトの動作は、アーキテクチャ入力(version_input)が、依存関係(dependency_inputまたはdependency_output)からの入力または出力のいずれかを参照することである。 このフラグがtrueに設定されている場合、dependency_inputはversion_inputの値を参照する。
dependency_version_2 (オプション)
dependencies セクションへのピア dependency_version_2 更新された依存関係の処理を、このデプロイ可能なアーキテクチャで使用することを指定する。 optional プロパティまたは dependencies セクション内の input_mapping セクションを使用している場合、この値を true に設定する。 そうでない場合は、 false に設定してください。 このプロパティが true に設定されている場合、 optional プロパティが false に設定されているすべての依存関係は、オンボーディングしているアーキテクチャをデプロイするために必要です。
swappable_dependencies (オプション)
展開可能なアーキテクチャと互換性のある製品のリストについては、セクションヘッダを参照のこと。 dependencies アレイとは異なり、このセクションの製品はスワップ可能である。 ユーザーは、依存関係を満たすために使いたい製品を選ぶことができる。 スワップ可能な依存関係は、必須またはオプションである。 ここに含まれる依存関係は、 dependencies 配列にも追加できない。 情報には、製品のプログラム名と製品バージョンが含まれる。
オプションで、カタログIDと依存するバリエーションのリストを含めることができます。 このプロパティを使用するには、 dependency_version_2 を true に設定する必要があります。
{
"optional": "true or false",
"name": "Name for this group of swappable dependencies",
"default_dependency": "the name of the dependency that is selected by default",
"dependencies": [
{
"name": "offering name",
"id": "offering ID",
"kind": "terraform",
"version": "SemVer version e.g. 3.1.2",
"flavors": [
"flavor name"
],
"install_type": "fullstack or extension",
"catalog_id": "catalog ID",
"input_mapping": [
{
"dependency_output": "kms_instance_crn",
"version_input": "existing_kms_instance_crn"
}
]
},
{
"name": "offering name",
"id": "offering ID",
"kind": "terraform",
"version": "SemVer version e.g. 3.1.2",
"flavors": [
"flavor name"
],
"install_type": "fullstack or extension",
"catalog_id": "catalog ID",
"input_mapping": [
{
"dependency_output": "kms_instance_crn",
"version_input": "existing_kms_instance_crn"
}
]
}
]
}
swappable_dependencies :
swappable_dependencies[].name(オプション)- アーキテクチャーがカタログにオンボードされているときに使用され、
swappable_dependenciesの特定のグループを識別するのに役立ちます。 swappable_dependencies[].default_dependency(オプション)nameデフォルトでユーザーに選択される、グループ内の依存関係の 1 つ。swappable_dependencies[].dependencies- このグループ内でスワップ可能な依存関係の配列。 この配列内の値は、セクションで説明した値と同じです。
dependenciesセクションで説明されている値と同じです。
release_notes_url
URL をアーキテクチャのリリースノートに追加した。
configuration
flavors セクション内のセクションヘッダで、特定のバリエーションに対するデプロイメント変数の設定を指定する。 カタログ・データ型は、ネイティブのデータ型を拡張するために使用され、 IBM Cloud コンソールで作業する際のユーザー体験を向上させる。 ローカル・マシンや他の環境でコードを実行している場合、変数は使用されない。 例えば、 string のタイプで定義されたTerraform変数の機能を拡張し、UIでセンシティブとして扱われるようにするために使用される
password のカタログタイプである。
次の例は、コンフィギュレーション・セクションのJSON構造を示している:
"flavors": [{
"configuration": [{
"key": "deployment_variable_name",
"type": "string",
"default_value": "default value",
"description": "Description shown to users",
"display_name": "Display Name",
"required": true,
"hidden": false,
"options": ["option1", "option2"],
"custom_config": {
"type": "widget_id",
"grouping": "Target",
"grouping_index": 1
},
"value_constraints": [{
"type": "regex",
"value": "^.{12,30}$",
"description": "Must be between 12 and 30 characters"
}]
}]
}]
configuration :
configuration[].key-
コンフィギュレーション・キー。 この値はデプロイメント変数の名前と一致しなければならない。
configuration[].type-
お客様定義または選択できる入力のタイプ。 データ型は、カタログ管理サービスがサポートしていなければならない。 ネイティブなTerraformの型は、サポートされているいくつかの型にマッピングされる。 例えば、Terraform のタイプ
mapはobjectに相当する。 Terraform のタイプlistはarrayに相当する。 Terraformのタイプstring、sensitive属性はpassword。 ディプロイメント可能なアーキテクチャを消費する顧客は、カタログマニフェストで定義した入力タイプの値を提供する必要があります。サポートされる定義済みタイプ:
booleanは、trueまたはfalseの文字列入力をユーザーから要求する。floatはユーザーから小数点以下を要求される。intはユーザーからの整数入力を必要とする。numberには数値が必要である。number型は、整数も4.56のような小数も表すことができる。passwordはユーザーからの文字列入力を必要とする。 この文字列はコンソールとログで再編集される。stringは、テキストを表すユニコード文字のシーケンスを必要とします。 接尾辞として追加するランダムな文字列をオプションで含めることができ、接頭辞やベース名として使用される文字列の名前の衝突を避けることができます。 このランダム文字列の長さを指定することもできる。 生成される文字列は、小文字、a-z、特殊文字なし、ダッシュで始まる、例えば、myString-wx。 デフォルト値も与えられている場合は、接尾辞が追加される。 デフォルト値が与えられていない場合、値はダッシュ文字を除いたサフィックスとなる。 以下に例を示します。
"random_string": { "length": 2 }objectはユーザーからのTerraformオブジェクトの入力を必要とする。 細については、mapを参照してください。
あらかじめ定義された型は、ユーザーによる手入力が必要である。
サポートされているカスタムタイプ
arrayはコンマで区切られた値のリストを必要とする。regionは、ユーザーがドロップダウン・リストから展開可能なアーキテクチャを展開する地域を選択することを要求する。 エンドユーザーが利用できる地域を絞り込むことができます。 例えば、利用可能な地域をそれらの国に限定するために、地域フィルターにcountry_id:us,ca,jpを指定することができます。 詳細については、 フィルタリング構文を 参照のこと。textareaは、ユーザーが複数行に分割できるテキストを入力することを要求する。 例えば、説明文。vpcは、ユーザーがドロップダウンリストから名前でVPCを選択することを要求する。 出力されるのは、テンプレートが必要とするVPC名またはIDです。vpc ssh keyでは、仮想マシンへの認証にVPC SSHキーを選択する必要があります。clusterは、 Kubernetes Service または Red Hat OpenShift クラスタを選択する必要があります。 出力はクラスタIDです。power iaasPower Virtual Server のインスタンスを選択する必要がある。resource groupリソースグループを選択する必要があります。 リソースグループのID、名前、またはCRNが出力される。multi-line secure valueは、複数行に分割できるテキストをユーザーが入力することを要求し、コンソールやログではそのテキストが再編集される。 例えば、長いキーが必要な場合、その値はワークスペースでは隠される。schematics workspaceは、ユーザーがドロップダウンリストから特定のワークスペースを選択することを要求する。 このリストは、デプロイ可能なアーキテクチャで定義された依存関係に基づいて動的にフィルタリングされる。 たとえば、配置可能なアーキテクチャexample-da-1が別の配置可能なアーキテクチャexample-da-2に依存している場合、example-da-1の入力ドロップダウンリストには、example-da-2に関連するワークスペースのみが表示されます。 その後、example-da-1をセットアップする際に、example-da-2のワークスペースの適切なインスタンスを選択する。json editorは、より大きなJSON入力またはプレーン・テキスト・ファイルを指定するスペースをユーザーに提供する。code editorはJSONかHCL形式の入力を選べるので、Terraformベースの入力に便利です。Platform resourceは、指定したリソースタイプのインスタンスリソースをリストから選択することをユーザーに要求します。 リ ソ ース タ イ プは、VPC Subnet,VPC Image,VPC Floating IPs,Cloud Logs,Sysdig,Cloud Object Storage,Key Protect, またはSecrets Managerのいずれかです。 ユーザーが選択できる値として、ID、名前、またはCRNを指定し、単一または複数の選択を許可することができます。 出力されるのは、Terraformのコードが必要とする名前またはIDである。secret_groupは、ユーザーが特定の Secrets Manager インスタンスから名前で秘密グループを選択することを要求する。 出力は秘密グループのIDまたは名前である。 特定の Secrets Manager インスタンスからグループをリストするには、この型をplatform resourceカスタム型、リソース型Secrets Manager、およびcrn値型出力と関連付ける必要があります。secretは、ユーザーが特定の Secrets Manager インスタンスから名前で秘密を選択することを要求する。 出力は秘密のID、名前、またはCRNである。 特定の Secrets Manager インスタンスから秘密をリストするために、この型は少なくともplatform resourceカスタム型、リソース型Secrets Manager、およびcrn値型出力に関連付けられていなければならない。 オプションで、secret_groupタイプと同様に、id値タイプ出力と関連付けることで、その Secrets Manager インスタンス内の特定の秘密グループからの秘密を一覧表示することができる。kms_keyは、ユーザーが特定の Key Protect インスタンスからキーを選択することを要求する。 出力はキーのID、名前、またはCRNである。 特定の Key Protect インスタンスからキーを一覧表示するには、この型をplatform resourceカスタム型、リソース型Key Protect、値型出力crnと関連付ける必要があります。
configuration[].default_value-
デフォルトとして設定される値。
configuration[].virtual(オプション)-
入力を Schematics サービスに渡すかどうかを指定するフラグ。
trueに設定された場合、入力は Schematics に渡されない。 互換性のあるアーキテクチャで参照されているが、オンボーディングしているデプロイ可能なアーキテクチャでは使用されていない、デプロイ可能なアーキテクチャ内の入力に対して、このフラグをtrueに設定します。input_mapping。dependenciesまたはswappable_dependenciesセクションに追加してください。 configuration[].description-
デプロイ可能なアーキテクチャのユーザーに対してUIに表示したい変数の説明。
configuration[].display_name-
設定タイプとして表示される名前。
configuration[].required-
ユーザーがインストール時にパラメータを指定する必要があるかどうかを示すブール値。
configuration[].hidden-
インストール時にパラメータをユーザーから隠すかどうかを示すブール値。
configuration[].options[]-
ユーザーがパラメータに対して選択できるオプションの配列。
configuration[].custom_config-
カスタムコンフィギュレーションを使用できることを示すオブジェクト。
configuration[].custom_config.type-
設定に使用されるウィジェットタイプのID。
configuration[].custom_config.grouping-
コンフィギュレーション・タイプをカタログのどこに表示するか。 有効な値は
Target、Resource、Deploymentである。 configuration[].custom_config.original_grouping-
コンフィギュレーション・タイプが元々表示されていた場所。 有効な値は
Target、Resource、Deploymentである。 configuration[].custom_config.grouping_index-
この設定項目が複数ある場合の順番。
configuration[].custom_config.config_constraints-
カスタムウィジェットに与えられる制約パラメータのマップ。
configuration[].custom_config.associations-
コンフィギュレーションに関連するパラメータのオブジェクト。
configuration[].configuration_group-
関連する構成グループの名前。
configuration[].value_constraints[]-
値の制約の配列。各制約は検証ルールを定義する。
configuration[].value_constraints[].type-
制約のタイプ。 現時点では、
regexのみがサポートされています。 configuration[].value_constraints[].value-
JavaScript 正規表現。
configuration[].value_constraints[].description-
指定された値が指定された正規表現にマッチしない場合に表示されるメッセージ。
schematics_env_values
flavors セクションの中で、 schematics_env_values は、 Schematics サービスに渡す必要がある値と変数名のリストを指定し、Terraform の実行中に環境変数として使用します。 これはセキュアな値かもしれないし、Terraformのロギングの設定かもしれないし、他のものかもしれない。 文字列を指定するか、 Secrets Manager への参照を作成するかを選択できる。 両方が指定された場合は、
Secrets Manager の参照が使用される。
次の例は、schematics_env_valuesセクションのJSON構造を示しています:
"flavors": [{
"schematics_env_values": {
"value": "[{\"name\": \"TF_LOG\",\"value\": \"TRACE\",\"secure\": true,\"hidden\": true}]",
"sm_ref": "cmsm_v1:{...}"
}
}]
schematics_env_values :
schematics_env_values.value- 環境変数とその値の配列を含むJSON文字列。
schematics_env_values.value[].name- 環境変数の名前を指定します。
schematics_env_values.value[].value- 環境変数の値を指定します。
schematics_env_values.value[].secure- 実行ログに環境変数の値をクリアテキストで表示するかどうかを指定する。 可能な値は、
trueまたはfalseです。 schematics_env_values.value[].hidden- この変数を実行ログに含めるかどうかを指定する。 可能な値は、
trueまたはfalseです。 schematics_env_values.sm_ref- シークレットとして保存される環境変数を含む Secrets Manager インスタンスへの参照。 secretは、環境変数とその値の配列を含むJSON文字列でなければならない。
以下の例のJSON文字列には、 TF_LOG と TF_IGNORE という2つの変数と、Terraform実行時に環境変数として追加されるその値が含まれています:
"schematics_env_values": {
"value": "[{\"name\": \"TF_LOG\",\"value\": \"TRACE\",\"secure\": true,\"hidden\": true},{\"name\": \"TF_IGNORE\",\"value\": \"TRACE\",\"secure\": false,\"hidden\": false}]"
}
リスト内の引用符にはエスケープ文字を使用してください。
以下の例では、 Secrets Manager にある秘密への参照を使用しています:
"schematics_env_values": {
"sm_ref": "cmsm_v1:{\"name\": \"envVarSecret\",\"id\":\"1234567890\",\"service_id\":\"crn:v1:bluemix:public:secrets-manager:eu-gb:a/1234567890:1234567890::\",\"service_name\":\"My SM instance\",\"group_id\":\"1234567890\",\"group_name\":\"My SM group\",\"resource_group_id\":\"1234567890\",\"region\":\"eu-gb\",\"type\":\"arbitrary\"}"
}
minimum_compatible_version (オプション)
現在のバージョンと互換性のある最も古いバージョンを示すsemver値。 現在のバージョンと互換性のある以前のバージョンがない場合は、このフィールドに現在のバージョンの値を指定する。 デフォルトでは、現在のバージョンは以前のすべてのバージョンと互換性があります。
ignore_readme
true に設定されている場合、このバージョンにオンボードするときに readme ファイルは使用されず、 long_description フィールドは空になります。 long_description フィールドが空の場合、そのバージョンのカタログ一覧の「 関連リンク」 メニューに readme ファイルへのリンクが表示されません。
terraform_version
バージョンの検証とインストールに必要なHashicorp Terraformランタイムのバージョン。 マニフェストでこの値を設定すると、ソースコードで指定されている値が上書きされます。
outputs
Terraformの出力値に関する情報のセクションヘッダ。
{
"key": "name of the output value as defined in the Terraform",
"description": "The description of the key"
}
outputs :
outputs[].key- 出力値を指定する。
outputs[].description- 出力値の簡単な要約。
install_type
展開可能なアーキテクチャが fullstack か extension かを指定する。 拡張として記載されているアーキテクチャーには前提条件が必要です。 この値を extension に設定した場合は、 dependencies 配列も完了する必要があります。 dependency_version_2 が true に設定されている場合、このプロパティは無視される。
scripts
同じリポジトリに含まれるスクリプトのリストで、指定されたアクションの特定の段階でプロジェクトが実行できるもの。 マップの各キーは、エントリーのフォーマット action と stage と一致しなければならない。 Stage は pre か post のいずれかでなければならない。 Action は validate、
deploy、 undeploy のいずれかでなければならない。
{
"short_description": "description for the script",
"type": "type of script. i.e. ansible",
"path": "the path to the script in the repo. Must begin with scripts/...",
"stage": "pre or post",
"action": "The action that executes the script. Options include validate, deploy, or undeploy."
}