SaltStack - 如何在 pillar.get 语句中使用粒度值?
SaltStack - How can I use grain values in pillar.get statement?
我的应用程序中有一些与 ip、mac 地址、服务器名称等相关的配置值,我正试图提出一个将匹配正确值的模块化状态从我的支柱 pillar.get。我没有在 pillar.get 中找到任何关于如何使用粒度值的信息。
支柱示例:
account:
qa:
server1:
appUsername: 'user2'
appPassword: 'password2'
server2:
appUsername: 'user2'
appPassword: 'password2'
prod:
server3:
appUsername: 'user3'
appPassword: 'password3'
server4:
appUsername: 'user4'
appPassword: 'password4'
我模板中的行:
keyUser={{ salt['pillar.get']('account:grains['env']:grains['id']:appUsername', 'default_user') }}
keyPass={{ salt['pillar.get']('account:grains['env']:grains['id']:appPassword', 'default_pass') }}
这看起来很自然,但无论我尝试什么都会出错,或者会逃避实际的谷物查找并给我默认值。我在 google 上也找不到任何内容。有人有解决办法吗?我应该在 pillar 上动态设置 appUsername 和 appPassword 值吗?我喜欢 pillar 中的布局,因为它是一个非常容易阅读的查找 table,没有大量的条件 jinja。
首先,您不能只将 grains['env']
嵌入支柱查找字符串中 - 您需要连接。其次,您的 Jinja 作业看起来有误。试试这个:
{% set keyUser = pillar.get('account:'~grains['env']~':'~grains['id']~':appUsername', 'default_user') %}
~
是 Jinja 中的 concatenate operator。
此外,salt['pillar.get']('blah')
与 pillar.get('blah')
相同。
但是!如果没有实际错误,很难确定 and/or 完整模板。
我的应用程序中有一些与 ip、mac 地址、服务器名称等相关的配置值,我正试图提出一个将匹配正确值的模块化状态从我的支柱 pillar.get。我没有在 pillar.get 中找到任何关于如何使用粒度值的信息。
支柱示例:
account:
qa:
server1:
appUsername: 'user2'
appPassword: 'password2'
server2:
appUsername: 'user2'
appPassword: 'password2'
prod:
server3:
appUsername: 'user3'
appPassword: 'password3'
server4:
appUsername: 'user4'
appPassword: 'password4'
我模板中的行:
keyUser={{ salt['pillar.get']('account:grains['env']:grains['id']:appUsername', 'default_user') }}
keyPass={{ salt['pillar.get']('account:grains['env']:grains['id']:appPassword', 'default_pass') }}
这看起来很自然,但无论我尝试什么都会出错,或者会逃避实际的谷物查找并给我默认值。我在 google 上也找不到任何内容。有人有解决办法吗?我应该在 pillar 上动态设置 appUsername 和 appPassword 值吗?我喜欢 pillar 中的布局,因为它是一个非常容易阅读的查找 table,没有大量的条件 jinja。
首先,您不能只将 grains['env']
嵌入支柱查找字符串中 - 您需要连接。其次,您的 Jinja 作业看起来有误。试试这个:
{% set keyUser = pillar.get('account:'~grains['env']~':'~grains['id']~':appUsername', 'default_user') %}
~
是 Jinja 中的 concatenate operator。
此外,salt['pillar.get']('blah')
与 pillar.get('blah')
相同。
但是!如果没有实际错误,很难确定 and/or 完整模板。