我错误地认为如果你可以在SaltStack的命令行上运行一个函数,你可以将该输出设置为变量。例如,考虑以下输出所有小兵的时区:
salt '*' timezone.get_zone
它输出单个字符串,如Etc/UTC
作为时区。我正在编写一个函数来根据本地服务器的时区运行一些cron作业。但是,在jinja模板中,当我设置:
...
{% set timezone = salt['timezone.get_zone'] %}
{% if timezone == 'America/Los_Angeles' %}
0 23 * * * root somecommand
{% else %}
# TIMEZONE NOT FOUND
{% endif %}
....
我总是得到该模板的# TIMEZONE NOT FOUND
输出。如果我尝试通过公式的SLS文件中的context
传递时区,我会在渲染后得到以下内容:
<function get_zone at 0x7fb48a7c9f50>
有什么建议吗?
答案 0 :(得分:2)
<function get_zone at 0x7fb48a7c9f50>
是一个线索。 salt['timezone.get_zone']
正在返回一个函数。要实际调用它,你需要在它之后放置parens,所以你的行需要看起来像:
{% set timezone = salt['timezone.get_zone']() %}
这对你有用。它在我的测试中起作用。