如何从一个支柱文件中导入另一个支柱文件中的数据?

How do I import data in one pillar file from another?

情况:我们有多个盐公式,其中某些支柱配置的选项在我们的环境中是相同的。例如,他们对上游服务使用相同的 URL。我们希望避免在多个支柱位置重复这些值(我们想要一个单一的真理点),但我们不想以共享支柱键的方式编写公式(正交对灵魂有益)。

在我看来,执行此操作的正确方法是拥有一个包含 "shared" 值的支柱文件,然后将它们从那里导入到特定于公式的支柱文件中的适当位置。例如:

# pillar/shared.sls
upstream: https://example.com/youarehere

# pillar/formula1.sls
{%- from shared import upstream %}
formula1:
  upstream_uri: {{ upstream }}

# pillar/formula2.sls
{%- from shared import upstream %}
formula2:
  upstream_url: {{ upstream }}

# and so on...

当然,这并不像写的那样有效。正确的做法是什么?

试试这个:

pillar/shared.sls

upstream: https://example.com/youarehere

pillar/formula1.sls

{% import_yaml "shared.sls" as defaults %}
formula1:
  upstream_uri: {{ defaults.upstream }}

pillar/formula2.sls

{% import_yaml "shared.sls" as defaults %}
formula2:
  upstream_url: {{ defaults.upstream }}