【问题标题】:All Salt Stack functions able to be set as variables?所有 Salt Stack 函数都可以设置为变量吗?
【发布时间】:2016-03-16 05:33:12
【问题描述】:

我错误地认为,如果你可以在 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>

有什么建议吗?

【问题讨论】:

    标签: timezone jinja2 salt-stack


    【解决方案1】:

    <function get_zone at 0x7fb48a7c9f50> 是一个线索。 salt['timezone.get_zone'] 正在返回一个函数。要真正调用它,你需要在它后面加上括号,所以你的行需要看起来像:

    {% set timezone = salt['timezone.get_zone']() %}

    这应该对你有用。它在我的测试中有效。

    【讨论】:

    • 非常感谢!实际上我确实尝试过(''),因为我知道我可能需要传递一个空字符串,但这会引发错误。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-03-06
    • 2014-01-02
    • 1970-01-01
    • 2011-09-04
    • 1970-01-01
    • 2021-06-01
    • 1970-01-01
    相关资源
    最近更新 更多