在 SaltStack 中使用 Jinja 插入环境变量
Insert Environment Variable using Jinja in SaltStack
我正在尝试读取文件夹中的 JSON 文件。使用 import_json。
这是我的代码
{% set instance_id = grains['INSTANCE_ID'] %}
INSTANCE_ID Env Var:
environ.setenv:
- name: INSTANCE_ID
- value: {{ grains['INSTANCE_ID'] }}
- update_minion: True
{% import_json "/tmp/$INSTANCE_ID/conf.json" as config_properties %}
但是我收到这个错误
Data failed to compile:
Rendering SLS 'base:cloud.steps.conf' failed: Jinja error: /tmp/$INSTANCE_ID/conf.json.
虽然当我手动插入 INSTANCE_ID 时它按预期工作。
我想要的是能够插入 $INSTANCE_ID
或直接插入粒度值 {{ grains['INSTANCE_ID'] }}
有人可以帮我解决这个问题吗?
谢谢。
{% import_json "/tmp/$INSTANCE_ID/conf.json" as config_properties %}
我想您正在尝试计算上述语句中的变量 $INSTANCE_ID
。 Jinja 模板评估表达式语句中的变量。
本例中变量设置在第一行,使用set
{% set instance_id = grains['INSTANCE_ID'] %}
因此,您可以在表达式中将其与字符串追加一起使用,例如
{% import_json "/tmp/" ~ instance_id ~ "/conf.json" as config_properties %}
以上语句应该可以解决您的错误。
此外,我建议使用变量来评估上面的字符串表达式的值,例如
{% set conf_json_path = "/tmp/" ~ instance_id ~ "/conf.json" %}
并像这样使用它
{% import_json conf_json_path as config_properties %}
希望对您有所帮助!
万一你想直接使用grains
字典,你可以像这样使用值
{% set conf_json_path = "/tmp/" ~ grains['INSTANCE_ID'] ~ "/conf.json" %}
我正在尝试读取文件夹中的 JSON 文件。使用 import_json。 这是我的代码
{% set instance_id = grains['INSTANCE_ID'] %}
INSTANCE_ID Env Var:
environ.setenv:
- name: INSTANCE_ID
- value: {{ grains['INSTANCE_ID'] }}
- update_minion: True
{% import_json "/tmp/$INSTANCE_ID/conf.json" as config_properties %}
但是我收到这个错误
Data failed to compile:
Rendering SLS 'base:cloud.steps.conf' failed: Jinja error: /tmp/$INSTANCE_ID/conf.json.
虽然当我手动插入 INSTANCE_ID 时它按预期工作。
我想要的是能够插入 $INSTANCE_ID
或直接插入粒度值 {{ grains['INSTANCE_ID'] }}
有人可以帮我解决这个问题吗? 谢谢。
{% import_json "/tmp/$INSTANCE_ID/conf.json" as config_properties %}
我想您正在尝试计算上述语句中的变量 $INSTANCE_ID
。 Jinja 模板评估表达式语句中的变量。
本例中变量设置在第一行,使用set
{% set instance_id = grains['INSTANCE_ID'] %}
因此,您可以在表达式中将其与字符串追加一起使用,例如
{% import_json "/tmp/" ~ instance_id ~ "/conf.json" as config_properties %}
以上语句应该可以解决您的错误。
此外,我建议使用变量来评估上面的字符串表达式的值,例如
{% set conf_json_path = "/tmp/" ~ instance_id ~ "/conf.json" %}
并像这样使用它
{% import_json conf_json_path as config_properties %}
希望对您有所帮助!
万一你想直接使用grains
字典,你可以像这样使用值
{% set conf_json_path = "/tmp/" ~ grains['INSTANCE_ID'] ~ "/conf.json" %}