如何从一个支柱文件中导入另一个支柱文件中的数据?
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 }}
情况:我们有多个盐公式,其中某些支柱配置的选项在我们的环境中是相同的。例如,他们对上游服务使用相同的 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 }}