機械翻訳について

条件の使用

Oracle Cloud Stackテンプレートを編集し、異なる条件でスタックを作成する方法をカスタマイズします。

はじめには、「条件とは何ですか?」を参照してください。

条件付き関数の使用

Oracle Cloud Stackはこれらの条件関数をサポートしています: EqualsGreaterThanLessThanContainsEmptyMatchNotAndOr

これらの関数は、スタックが作成される際にOracle Cloud Stackによって実行時に実行されます。 各関数は2つの入力文字列を評価し、テンプレート内の関数のロケーションに文字列trueまたは文字列falseを返します。 条件付き関数への入力は、GetParamなどの文字列を返すリテラル文字列または関数になります。

たとえば、3つのパラメータを含むテンプレート内のリソース定義を考えてみます。

myresource:
  type: xyz
  parameters:
    dbEnabled: {"Fn::Equals":[{"Fn::GetParam":"dbVersion"},"12.2"]}
    cacheEnabled: {"Fn::GreaterThan":[{"Fn::GetParam":"cacheSize"},"0"]}
    backupEnabled: {"Fn::Not":[{"Fn::Equals":[{"Fn::GetParam":"container"},""]}]}

これらの条件付き関数では、次のロジックが得られます。

  • dbVersionテンプレート・パラメータの値が、値"12.2"に設定された場合にのみ、dbEnabledパラメータは"true"に設定されます。

  • cacheSizeテンプレート・パラメータの値がゼロより大きい場合にのみ、cacheEnabledパラメータは"true"に設定されます。

  • containerテンプレート・パラメータの値が空の文字列でない場合にのみ、backupEnabledパラメータが"true"に設定されます。

詳細は、「関数一覧」を参照してください。

グローバル条件の定義

多くの場合、テンプレートの複数の場所で同じ条件式(cacheSizeがゼロより大きい)を使用する必要があります。 そのかわりに、これらの条件をテンプレート内の単一の場所に定義し、条件をテンプレート全体で参照することもできます。

テンプレート・ファイルのconditionsノード内のグローバル条件を定義します。 各条件に名前と、その値がtrueまたはfalseと評価される式を与えます。 例:

conditions:
  includeMyApp: {"Fn::Equals":[{"Fn::GetParam":"dbVersion"},"12.2"]}

このサンプル・テンプレートは、dbVersionテンプレート・パラメータの値が "12.2"に等しい場合にのみ、値がtrueであるincludeMyAppという条件を定義します。

関数でのグローバル条件の使用

If関数を使用して、テンプレートの特定の場所でグローバル条件を評価します。 2つの文字列値と、グローバル条件の名前を指定します。 指定した条件がtrueと評価された場合、If関数は最初の値を返します。 それ以外の場合、関数は2番目の値を返します。

次の例では、includeMyApp条件がtrueの場合、リソースのshapeパラメータには値"oc3"が割り当てられます。条件がfalseの場合は値"oc4"が割り当てられます。

myresource:
  type: xyz
  parameters:
    shape: {"Fn::If":["includeMyApp","oc3","oc4"]}

If関数を使用すると、条件の評価後に現在のオブジェクト、属性またはシーケンス・アイテムを削除することもできます。 true引数またはfalse引数のいずれかに、変数OPC::NoValueを使用します。 この例では、useDB条件がfalseの場合に、dbServiceパラメータがこのリソースの定義から動的に削除されます。

myresource:
  type: xyz
  parameters:
    clusterSize: 2
    dbService: {"Fn::If":["useDB","MyOracleDB-1","OPC::NoValue"]}

グローバル条件のリソースへの割当て

テンプレート内の各リソースには、グローバル条件の名前をオプションで割り当てることができます。 この条件がtrueと評価された場合、リソースはスタックの一部として作成されます。 falseと評価された場合、リソース(および依存するリソース)は作成されません。

condition属性を、リソースの定義内(parametersの後ろ)に配置します。 例:

resources:
  myapp:
    type: xyz
    parameters:
      param1: value1
      param2: value2
    condition: includeMyApp

テンプレート・パラメータの条件の使用

また、テンプレート・パラメータまたはパラメータ・グループの定義内で、条件付き関数とグローバル条件を使用することもできます。 これらの条件は、スタックを作成するときにパラメータまたはグループをOracle Cloud Stackコンソールに表示するかどうかを制御します。 条件がfalseと評価された場合、パラメータまたはグループはユーザー・インタフェースで非表示になります。 trueと評価された場合、パラメータまたはグループが表示されます。 これらの条件は、ユーザーがテンプレート・パラメータの値を変更するたびに動的に再評価されます。

たとえば、boolean(チェックボックス)パラメータを使用して、別のパラメータがユーザーに表示されるかどうかを判断できます:

parameters:
  useBackup:
    label: Use Backup
    type: Boolean
    mandatory: false
    default: false
  backupPath:
    label: Backup Path
    type: String
    condition: {"Fn::Equals":[{"Fn::GetParam":"useBackup"},"true"]}

または、同じパラメータとグローバル条件を使用して、パラメータ・グループ全体がユーザーに表示されるタイミングを制御します:

parameters:
  useBackup:
    label: Use Backup
    type: Boolean
    mandatory: false
    default: false
  ...
parameterGroups:
  - label: Backup Configuration
    parameters: [ backupPath, backupTime ]
    condition: backupEnabled
conditions:
  backupEnabled: {"Fn::Equals":[{"Fn::GetParam":"useBackup"},"true"]}