web-dev-qa-db-ja.com

ソルト:ピラーデータのプロパティ?

ソルトスタックの柱からのデータのプロパティ(計算された属性)が欲しいのですが:

システムは次のように構成されています。

systems:
  - customer: foo 
    project: bar
    stage: p
    ...
  - customer: foo
    project: bar
    stage: q
    ...

次のような変数「system.name」を計算したいと思います:"{customer}_{project}_{stage}"

上記の例から、次の2つの計算値を取得します。

  • system.name = "foo_bar_p"
  • system.name = "foo_bar_q"

system.nameまたはsystem.customerと同じようにsystem.projectにアクセスできます。

これを行う方法は?

1
guettli

私はあなたが望むようにプロパティを定義することはできないと思います。

ただし、jinjaコマンドを使用して、状態ファイルまたはテンプレート内でこの値を計算できます。例えば:

{% for system in salt['pillar.get']('systems', []) %}
  {% do system.update({'name': system.customer + '_' + system.project + '_' + system.stage}) %}
test_state_for_{{ system.name }}:
  test.configurable_test_state:
    - result: False
    - comment: {{ system }}
{% endfor %}

この例では、system dictがnameの計算値で更新(マージ)されています。system.customer + '_' + system.project + '_' + system.stage