首页 文章

Jinja在被送到仆从之前或之后的支柱中呈现了吗?

提问于
浏览
2

假设我在两个不同的环境中有不同的凭据,但这是它们之间唯一不同的东西,我不想为单个项目制作额外的支柱文件 .

假设我像这样攻击问题:

{%- set deployment = grains.get('deployment') %}
{%- load_yaml as credentials %}
prod: prodpassword
test: testpassword
dev:  devpassword
{%- endload %}

some_app:
  user: someuser
  password: {{ credentials[deployment] }}

  ...more configuration here...

这按预期工作 . 但是,测试中的小兵理论上可以获得prod的密码吗?这取决于dict查找是在数据发送到客户端之前还是之后发生的,我认为,这又取决于jinja的呈现时间 . 主设备是先渲染它然后发送结果数据,还是minion按原样接收支柱文件,然后自己渲染它?

1 回答

  • 2

    支柱数据总是在主人身上呈现,而不是主人 . 然而,主人确实可以访问仆从的粒子,这就是你的例子有效的原因 .

    给定一个Pillar SLS文件,其中包含以下内容:

    test: {{ grains['id'] }}
    

    将产生以下支柱数据:

    # salt testminion pillar.item test
    testminion:
        ----------
        test:
            testminion
    

    来源:我是SaltStack核心开发人员 .

相关问题