クラウドプロビジョニングとガバナンス での式の使用
ポリシーアクションの式により、値を設定またはオーバーライドできます。詳細計画内の式は、リソースの属性にアクセスでき、値を要求フォームのフィールドにマップできます。式は、リソースブロック、詳細計画、ポリシー、および クラウドプロビジョニングとガバナンス でスクリプトが許可される任意の場所で使用できます。
式の使用
式は、システムで動的に生成された情報の値 (ユーザーがクラウドユーザーポータルで行った選択の値など) を保持できます。式は、リソースブロック、詳細計画、ポリシー、および クラウドプロビジョニングとガバナンス でスクリプトが許可される任意の場所で使用できます。
- リソースブロックでの式の使用
各リソースブロック操作では、式を使用して各パラメーターの値を保持します。式では、ハードコードされた値、ユーザーがクラウドユーザーポータルでプロビジョニングするスタックからのデータ、CMDB のデータ、およびスクリプトから派生したデータを使用できます。デフォルトでは、クラウドプロビジョニングとガバナンス は、各リソースブロック操作に対して、一連のパラメーターとその式を生成します。
たとえば、リソースが属するデータセンターを保持するパラメーター Location は、式
${parameter.Location}を使用します。図 : 1. リソースブロック内の式 - 詳細計画での式の使用
詳細計画は、式を使用して、リソースブロックの各操作の入力パラメーターをマップできます。デフォルトでは、詳細計画には、リソースブロックで指定されているのと同じパラメーターと値が表示されます。
式を使用して詳細計画属性にアクセスできます。[マッピング] 列の式は、ステップの各操作の詳細計画属性を定義します。たとえば、スタック要求フォームに表示される Location 属性は、
{$parameter.Location}式を使用してアクセスできます。${parameter.Location}の値を持つ Location パラメーターは、詳細計画操作を選択すると [入力] タブに表示されます。図 : 2. 詳細計画内の式 - ポリシーアクションでの式の使用
ポリシーアクションでは、式を使用して、ユーザーがクラウドユーザーポータルの要求フォームで送信するパラメーター値をオーバーライドできます。スタック操作でユーザーデータにアクセスしてオーバーライドすることもできます。たとえば、次の式を使用してスタックの名前を変更します。
formData.Stackname = "your-naming-convention";図 : 3. ポリシースクリプト内の式
式を使用して詳細計画属性にアクセスできます。[マッピング] 列の式は、ステップの各操作の詳細計画属性を定義します。たとえば、仮想マシンの要求フォームに表示される Location 属性には、式 {$parameter.Location} でアクセスします。
式のタイプ
- 定義式
- 定義式は、事前バインディング (または静的バインディング) の一種です。これらのバインディングはコンパイル時バインディングを参照し、ユーザーがスタック要求フォームを送信したとき (スタックまたはリソースのプロビジョニングが開始されたとき) に評価されます。定義式は、 オーケストレーション中に生成されたデータにアクセスできません。定義式は中括弧で囲まれます。たとえば、
${parameter.CloudAccount}のようになります。 - ランタイム式
- ランタイム式は、遅延バインディング (または動的バインディング) の一種です。これらのバインディングはランタイムバインディングを参照し、オーケストレーション中に作成されたデータにアクセスできます (スタックアイテムなど)。ランタイム式は、オーケストレーション実行中に呼び出されたときに評価されます。ランタイム式は、通常、テーブル内のデータをドット連結するために使用されます。ランタイム式は、括弧で囲まれます。たとえば、
$(Stack.items[VM1].attributes[node_id])のようになります。 - 定義式/ランタイム式
- 一部の式には、定義式とランタイム式の両方が含まれます。
- 複合式
- 任意のタイプの式を他の式内に入れ子にできます。
定義式の構文と例
${parameter.}。このような式を使用して、詳細計画プロビジョニングなどのプロセスの入力属性から値を取得します。データはテーブルからフェッチされません。${Stack.items[]}。この構文を使用して、スタック内の特定のアイテムの属性にアクセスします。${randomNumber}。この構文を使用して、乱数を生成します。たとえば、ランダムなノード名またはスタック名を使用して VM をプロビジョニングできます。
| 例 | 説明 |
|---|---|
| ${parameter.BillingCode} | この式は、詳細計画での請求コードパラメーターの表示方法を示します。 |
| ${parameter.formData.CatalogAttributeType} | この式は、ユーザーがクラウドユーザーポータルでカタログアイテムのフォームに入力している間に、ユーザーが送信するカタログ属性を受け取ります。 |
| ${parameter.userData.userId} | この式は、ユーザーがクラウドユーザーポータルでカタログアイテムのフォームに入力している間に、ユーザーの ID を受け取ります。 |
| ${Stack.items[Virtual Server].attributes[sys_id]} | この式は、スタック以外の仮想サーバーの sys_id を取得します。仮想サーバーは、スタックで使用されるリソースブロックのエイリアスです。 |
ランタイム式の構文と例
$(ci.tablename)。ここでtablenameはシステム内のテーブルであり、通常は CMDB の CI テーブルです。この構文を使用して、テーブルのフィールドの値にアクセスします。$(Stack.items[])。この構文を使用して、スタック内の特定のアイテムの属性にアクセスします。
| 例 | 説明 |
|---|---|
$(ci.cmdb_ci_cloud_subnet[ sys_id=12231231231231231231].cidr) |
この式はクラウドサブネットテーブルへのドット連結を指定し、指定された sys_id を持つ特定のレコードを検索して、cidr 列から値を取得します。 |
$(ci.sn_cmp _ip_pool[subnet=${parameter.formData.Subnet Id}]) |
この式は、ランタイムタイプの式と定義タイプの式を組み合わせたものです。等号 = は、値の一致を評価するために使用されます。この式は IP プールテーブルへのドット連結を指定し、ユーザーが送信したサブネット ID を持つサブネットを検索します。 |
$(ci.cmdb_ci_cloud_subnet[${parameter.formData.SubnetId}].cidr) |
この式は、ランタイムタイプの式と定義タイプの式を組み合わせたものです。この式は、ユーザーがプロビジョニング中に選択したサブネットから cidr フィールドの値を取得します。角括弧 [] は、式がクラウドサブネットテーブルへのドット連結を指定し、詳細計画のプロビジョニング時にユーザーが送信したサブネット値を調べることを示します。式は cidr フィールド値を取得し、サブネットの sys_id の cidr フィールドの値に連結されます。 |
| ${Stack.items[Virtual Server].attributes[sys_id]} | 定義式の例のように、この式は、スタック以外の仮想サーバーの sys_id を取得します。 |
式の例
$(ci.cmdb_ci_nic[$(Script:CMPVMNICs.getNICs[arg=$(Stack.items[Virtual Server].attributes[sys_id])])].private_ip) - $(ci:テーブルからデータを取得するランタイム式。
- cmdb_ci_nic:NIC (ネットワークインターフェイスカード) の CI。
- $(Script:スクリプトベースの式。
- CMPVMNICs:スクリプトインクルード。
- getNICs:スクリプトインクルード内の関数。
- arg:スクリプトインクルード関数の引数。複数の属性がある場合、引数は「,」で区切られます。
- $(Stack.items:スタックからスタックアイテムを取得するランタイムスタック式。引数は、詳細計画で指定されたエイリアスです。
- Virtual Server:詳細計画で使用されるリソースのエイリアス。
- $(Stack.items[Virtual Server].attributes[sys_id]):スタック内のスタックアイテム ("Virtual Server") リソースインスタンスの sys_id を取得します。
- private_ip:cmdb_ci_nic からの属性。必要に応じてパブリック IP に置き換えます。
式
Simple parameter mapping expression このタイプの式は、詳細計画操作、リソースブロック、ポリシーなどのプロセスの入力属性から値を取得します。データはテーブルからフェッチされません。詳細計画からリソース、さらにはクラウド API までなど、あるレイヤーから別のレイヤーに値をマップします。
|
Stack item expression CMDB の CI インスタンスは、各スタックアイテムを表します。スタックアイテム式を使用して、スタックアイテムを支援する CI またはスタックアイテム自体の第 1 レベルのプロパティを検索します。
|
Property override expressions in policies ポリシーでは、システムから値をプルするか、乱数を使用して、プロパティをオーバーライドできます。クラウドユーザーポータルのフォームと、フォームで操作を実行したユーザーの両方のデータを使用できます。
|
Script expression この例では、
|
CI lookup expression テーブル内 (通常は CMDB の CI テーブル) のフィールドの値にアクセスします。
|
Random number expression 乱数を生成します。たとえば、ランダムなノード名またはスタック名を使用して VM をプロビジョニングできます。
|
Scratchpad expression/Resource operation output attribute expression ある操作から別の操作に出力属性を読み取ります。
|
Conditions in expressions 詳細計画のステップおよびリソース操作のステップで条件式を使用して、ステップを条件付きで実行またはスキップできます。条件式は Javascript 式であり、式の置換をサポートします。
|
Complex expression 式はネストできます。この例では、
|
Order context この式はライフサイクル操作に役立ち、sn_cmp_order テーブルの一部として順序属性でドット連結できます。
|