オーケストレーションは、JSON形式のファイルに格納されます。
次のJSONファイルの例は、オーケストレーションのハイレベルの構造を示しています。 主要な構造はオブジェクト・プラン(oplan)と呼ばれます。 1つのオーケストレーションに、最大10個のoplanを含めることができます。 oplanにはオブジェクトが含まれ、関係を介して宣言された依存関係を含めることができます。
注意:
オーケストレーション・テンプレートでは、オブジェクト名、ラベルおよび他のユーザー固有の値にプレースホルダ・テキストを使用します。 これらのテンプレートを使用してオーケストレーションを構築する場合は、プレースホルダ値とユーザーの環境固有の値を置き換えてください。
JSONファイルでは、オーケストレーションの各要素間にカンマが必要です。
{
"description": "someDescriptionHere",
"name": "/<tenant_name>/public/<orchestration_name>",
"oplans": [
{
"ha_policy": "active",
"label": "someText",
"obj_type": "objectType",
"objects": [
{
definitions of objects specific to this object type
}
]
},
{
"label": "someText",
"obj_type": "objectType",
"objects": [
{
definitions of objects specific to this object type
}
]
},
.
. up to 10 oplans
.
]
}
注意:
オーケストレーションではオブジェクトを使用して、オーケストレーション可能な様々なシステム・コンポーネントをカプセル化します。 たとえば、起動プランでは、obj_typeはlaunchplanです。 objectsセクションのフィールドはオブジェクト・タイプによって異なります。
次の表に、オーケストレーションの要素を示します。
表A-1 オーケストレーションの要素
| オブジェクト識別子 | 説明 | 使用可能な要素または値 |
|---|---|---|
|
オーケストレーションの説明 |
オーケストレーションを説明するテキスト。 |
|
オーケストレーションの名前。 これは3つのコンポーネントで構成され、 例: |
オーケストレーションの名前を指定するテキスト。 |
|
オブジェクト・プランは、オーケストレーションにオブジェクトを定義するためのオーケストレーションの主要な構造です。 |
オーケストレーションでさまざまなオブジェクトを定義するための要素を持つ計画のリスト: |
|
ユーザーが指定したオブジェクトの名前。 ラベルは、関係の指定に使用されたり、エラー状態のoplanを特定するためにオーケストレーション・レベルのエラー・メッセージに表示されます。 |
オブジェクトを説明するテキスト。 |
|
オーケストレーションのコンポーネントが起動する順序を指定するコンテナ構造。 オーケストレーションのrelationshipsセクションでは、oplanのラベルおよび関係タイプを指定します。 |
関係を説明するJSON構造化要素。 |
次の表に、oplansの要素を示します。
表A-2 oplanの要素
| オブジェクト識別子 | 説明 | 使用可能な値または要素 |
|---|---|---|
|
オブジェクト・タイプ( 高可用性または監視が必要ない場合は、 |
monitor: オブジェクト・タイプ launchplanおよび storage/volumeにのみ設定されます。
|
|
定義するオブジェクトのタイプ。 |
|
|
オブジェクト・タイプにオブジェクトを定義するためのコンテナ構造。 |
|
これらが事前に作成されていなかった場合は、オーケストレーションの開始時にオーケストレーションで参照されるネットワーク、ストレージまたは他のオブジェクトが作成され、オーケストレーションの停止時にはこれらが破棄されます。
オーケストレーションの構造およびその要素のスキーマの詳細は、次の各項で説明します。
オーケストレーションの構造
{
"name": <string>,
"description": <string>,
"oplans": [ <oplan>,...]
"relationships": [ <oplan_relationship>,...] (optional)
}
次の表に、オーケストレーションの要素を示します。
| フィールド | 説明 |
|---|---|
name |
オーケストレーション・プランの名前 |
description |
オーケストレーション・プランの説明 |
oplans |
oplanのリスト |
relationships |
このオーケストレーションで満たされる必要のある関係指定のリスト |
oplanのオーケストレーション・テンプレート
オブジェクト・プラン(oplan)は、最上位のオーケストレーション属性です。 オブジェクト・プラン内で、様々なオブジェクト・タイプを指定し、各オブジェクト・タイプに対し1つ以上のオブジェクトを定義できます。
{
"label": <string>
,"obj_type": "launchplan" | "storage/volume",
"objects": [ <objtype_launchplan>,...] | [ <objtype_storagevolume>,...]
"ha_policy": "monitor" | "active", (optional)
}
次の表に、オブジェクト・プランの属性を示します。
| フィールド | 説明 |
|---|---|
ha_policy |
oplanのHA動作を決定します。 activeの指定は、プランの起動にのみ適用され、インスタンスが予期せず終了した場合は、インスタンスが自動的に再起動されます。 monitorの指定は、すべてのオブジェクト・タイプに適用されます。すべてのオブジェクトの状態が監視されるため、状態が変わるとオーケストレーションに反映されます。 ha_policyが指定されていない場合、ストレージ・ボリュームは監視されません。 起動プランはデフォルトで監視されるため、このプロパティを省略してもタイプlaunchplanのオブジェクトには影響しません。 |
label |
oplanの説明。 |
obj_type |
オブジェクトのタイプ。 |
objects |
タイプobj_typeのすべてのオブジェクトのリスト。 |
Oplanの関係
{
"oplan": <string>,
"to_oplan": <string>,
"type": "depends",
}
次の表に、oplanの関係の属性を示します。
| フィールド | 説明 |
|---|---|
oplan |
oplan1のラベル |
to_oplan |
oplan1が依存するoplanのラベル |
type |
関係のタイプ。 これはdependsである必要があります。 |
オブジェクト・タイプ: 起動プランのオーケストレーション・テンプレート
1つ以上のインスタンスを定義する場合は、このオブジェクト・タイプを使用します。 オーケストレーションでは、instanceはlaunchplanオブジェクト・タイプの属性です。
{
"instances": [ <instance>,...]
"relationships": [ <instance_relationship>,...] (optional)
}
次の表に、launchplanの属性を示します。
| フィールド | 説明 |
|---|---|
instances |
起動プランで定義されたインスタンスのリスト。 |
relationships |
起動プランのインスタンスと現在実行中のインスタンスの間に存在する関係のリスト。 |
オブジェクト・タイプ: ストレージ/ボリュームのオーケストレーション・テンプレート
インスタンスにアタッチするストレージ・ボリュームを作成するには、このオブジェクト・タイプを使用します。
{
"name": <string>,
"properties": [ <string>, ...]
"size": <string>,
"description": <string>, (optional)
"source_storagevolume_name": <string>, (optional)
"imagelist": <string>, (optional)
"imagelist_entry": <number>, (optional)
"tags": [ <string>, ...] (optional)
"quota": <string>, (optional)
}
次の表に、storage/volumeの属性を示します。
| フィールド | 説明 |
|---|---|
name |
ストレージ・ボリュームの名前 |
properties |
このストレージ・ボリュームに関連付けられているストレージ・プロパティのリスト。 |
size |
バイト数またはバイトの倍数で測定したこのストレージ・ボリュームのサイズ |
description |
ストレージ・ボリュームの説明。 |
source_storagevolume_name |
作成時にこのボリュームにコピーする既存のストレージ・ボリュームの名前。 imagelistオプションを指定する場合は使用できません。 |
imagelist |
作成時にこのボリュームに抽出するマシン・イメージの名前。 source_storagevolume_nameオプションを指定する場合は使用できません。 |
imagelist_entry |
抽出する特定のイメージ・リスト入力バージョン。 |
tags |
ストレージ・ボリュームにタグ付けする文字列のリスト。 |
quota |
このボリュームが作成される割当て。 |
インスタンス属性
オーケストレーションでは、instanceはlaunchplanオブジェクト・タイプの属性です。 インスタンス属性で参照されるオブジェクトが、インスタンスと同じオーケストレーションで定義される場合は、各オブジェクトとインスタンスの起動プランの間で関係を指定する必要があります。
{
"shape": <string>,
"networking": <string>,
"imagelist": <string>,
"label": <string>, (optional but recommended)
"name": <string>, (optional but recommended)
"storage_attachments": [ <storage_attachment>, ...] (optional)
"tags": [ <string>, ...] (optional)
"attributes": <userdata>, (optional)
"nis": <nis>, (optional)
"sshkeys": [ <string>, ...] (optional)
"entry": <number>, (optional)
"quota": <string>, (optional)
}
次の表に、instancesの属性を示します。
| フィールド | 説明 |
|---|---|
shape |
インスタンスのサイズまたはリソース要件(メモリー/CPU)を定義します。 サイト構成で定義されたシェイプのいずれかに対応する必要があります。 |
networking |
インスタンスにアタッチする仮想NICのネットワーク指定子へのデバイス名のマッピング。 |
imagelist |
起動するイメージ・リストの名前。 |
label |
ユーザーによって割り当てられたラベル。特に、インスタンス間関係を定義する場合。 オプションですが、使用をお薦めします。 一部のエラー・メッセージおよびステータス・メッセージでも使用されます。 指定されていない場合、ラベルが自動的に割り当てられます。 |
name |
サーバーで生成されたインスタンスの名前。 これはオプションですが、使用することをお薦めします。 名前の接頭辞を指定すると、list instanceなどのCLIコマンドの使用時にインスタンスの検出および識別が容易になります。 ユーザーは名前の接頭辞を指定でき、システムにより生成されたUUIDが接頭辞に付加されます。 例: tenant_name/public/instance_nameはインスタンス名tenant_name/public/instance_name/uuidになります。 名前が指定されていない場合の名前は、tenant_name/public/uuidになります。 |
storage_attachments |
ストレージ・アタッチメント情報を含むディクショナリのリスト。 |
tags |
インスタンスにタグ付けする文字列のリスト。 |
attributes |
メタデータ・サービスを通じてインスタンスに対して使用可能になるユーザー定義のキー値ペアのコレクション。 |
placement_requirements |
該当なし |
nis |
ネットワーク情報サービス構成。 |
sshkeys |
インスタンスにインストールされているSSHキー。 |
entry |
オプションのイメージ・リスト入力番号。 指定されていない場合、デフォルト値が使用されます。 |
quota |
このインスタンスが実行される割当て。 |
relationships属性
オーケストレーションでは、relationshipsはlaunchplanオブジェクト・タイプの属性です。
{
"instances": [ <string>, ...]
"type": "same_node" | "different_node",
}
次の表に、relationshipsの属性を示します。
| フィールド | 説明 |
|---|---|
instances |
インスタンスのラベルのリスト。 instance: running instance nameを使用して、launchplanのインスタンスとすでに実行中のインスタンスの間の関係を作成することもできます。 |
type |
指定されたインスタンス間の関係のタイプ。 |
nis属性
{
"domain": <string>,
"servers": [ <nis_server>, ... ]
}
次の表に、nisの属性を示します。
| フィールド | 説明 |
|---|---|
domain |
NISドメイン名。 |
servers |
NISサーバー・エントリのリスト。 |
nis_server属性
{
"name": <string>,
"ip": <string>,
}
次の表に、nis_serverの属性を示します。
| フィールド | 説明 |
|---|---|
name |
NISサーバーの名前。 |
ip |
NISサーバーのIPアドレス。 |
userdata属性
{
"userdata": { <string>: <string>, ... }
}
次の表に、userdataの属性を示します。
| フィールド | 説明 |
|---|---|
userdata |
メタデータ・サービスを通じてインスタンスに対して使用可能になるユーザー定義のキー値ペアのコレクション。 |
networking属性
{ <string>: <networkblock>,
...
}
次の表に、networkingの属性を示します。
| フィールド | 説明 |
|---|---|
string |
networkblockで記述されたネットワークの一意のラベル。 net0など、短い文字列が使用されます。 ネットワーク・エントリは、ドキュメントに出現する順序ではなくソート順で、このキーを使用して処理されます。 |
storage_attachment属性
{
"volume": <string>,
"index: <number>,
}
次の表に、storage_attachmentの属性を示します。
| フィールド | 説明 |
|---|---|
volume |
インスタンスがアタッチされるストレージ・ボリュームの名前。 |
index |
デバイス名の生成時に使用される整数のインデックス(例: /dev/sda1の1)。 |
networkblock属性
{
"vnet" | "vnetreservation": <string>,
"options": <networkblock_options>, (optional)
}
次の表に、networkblockの属性を示します。
| フィールド | 説明 |
|---|---|
vnet |
完全なvNet名。 1つのvNetまたはvNet予約のみ指定できます。 |
options |
インスタンスのネットワーク構成のオプションのセット。 複数のネットワークにオプションが含まれる場合は、特定のオプションを指定する最初のブロックが使用され、その他は無視されます。 |
networkblock_options属性
{
"dns": <networkblock_dns>, (optional)
"hostname": <string>, (optional)
"network_route": [ <networkblock_route>,... ] (optional)
"default_gateway": <boolean>, (optional)
"provider": <boolean>, (optional)
"primary": <boolean>, (optional)
}
次の表に、networkblock_optionsの属性を示します。
| フィールド | 説明 |
|---|---|
hostname |
インスタンスのネットワークIPに関連付けられているホスト名を指定します。 複数のネットワークに複数のホスト名が指定されている場合は、ブールのprimary属性でプライマリ・ホスト名を示す必要があります。 そうしないと、最初のネットワーク(キーでソートされた)のホスト名が、インスタンスのホスト名として使用されます。 |
network_route |
ルーティング・ルールのリスト。 |
default_gateway |
デフォルト・ルーティングにこのネットワークのゲートウェイを使用する必要があることを示すブール・フラグ。 設定されていない場合、デフォルトはfalseです。 |
provider |
基礎となるサービス・ネットワークでインスタンスをプロバイダ(フル・メンバーシップ)として構成するために使用できるブール・フラグ。 |
primary |
このネットワークに指定されたホスト名をインスタンスのホスト名として使用する必要があることを示すブール・フラグ。 指定されていない場合、デフォルトはfalseです。 どのネットワークにもtrueとして指定されていない場合は、最初のネットワーク(キーでソートされた)が、インスタンスのホスト名として使用されます。 |
networkblock_dns属性
{
"search_domains": <string>,
"servers": <string>,
}
次の表に、networkblock_dnsの属性を示します。
| フィールド | 説明 |
|---|---|
search_domains |
インスタンスに構成するDNS検索ドメインのセットを指定する、カンマ区切り値形式の単一文字列。 |
servers |
インスタンスに構成するDNSサーバーのセットを指定する、カンマ区切り値形式の単一文字列。 |
networkblock_route属性
{
"type": "rule" | "static" | "policy"
"name": "SameNICReply" # only if "rule"
"ip_network": <string>, # only if "static" or "policy"
"via": <string>, # only if "static" or "policy"
}
次の表に、networkblock_routeの属性を示します。
| フィールド | 説明 |
|---|---|
type |
rule、staticまたはpolicyである必要がある文字列。 この値に従って、他のすべてのプロパティを記述どおりに指定する必要があります。 |
name |
タイプがruleの場合のみ有効です。 使用するルールの名前を指定する文字列。 現在使用できるのはSameNICReplyのみです。 このルールは、インスタンスで作成されたソースベースのルーティング・ルールになり、vNet IPパケットの受信と同じネットワーク・インタフェースを介してリプライ・パケットをルーティングするよう設計されています。 |
ip_network |
タイプがstaticまたはpolicyの場合のみ有効です。 宛先IPアドレス範囲をCIDR形式で指定する文字列。 |
via |
タイプがstaticまたはpolicyの場合のみ有効です。 ゲートウェイIPアドレスを指定する文字列。 |