所有 Salt Stack 函数都可以设置为变量吗?
All Salt Stack functions able to be set as variables?
我错误地认为,如果您可以在 SaltStack 的命令行上 运行 一个函数,那么您可以将该输出设置为一个变量。例如,考虑以下输出所有 minions 的时区:
salt '*' timezone.get_zone
它输出像 Etc/UTC
这样的单个字符串作为时区。我正在为 运行 一些基于本地服务器时区的 cron 作业编写一个函数。但是,在神社模板中,当我设置时:
...
{% 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>
有什么建议吗?
<function get_zone at 0x7fb48a7c9f50>
是一条线索。 salt['timezone.get_zone']
正在返回一个函数。要实际调用它,您需要在它后面加上括号,所以您的行需要看起来像:
{% set timezone = salt['timezone.get_zone']() %}
这应该适合你。它在我的测试中有效。
我错误地认为,如果您可以在 SaltStack 的命令行上 运行 一个函数,那么您可以将该输出设置为一个变量。例如,考虑以下输出所有 minions 的时区:
salt '*' timezone.get_zone
它输出像 Etc/UTC
这样的单个字符串作为时区。我正在为 运行 一些基于本地服务器时区的 cron 作业编写一个函数。但是,在神社模板中,当我设置时:
...
{% 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>
有什么建议吗?
<function get_zone at 0x7fb48a7c9f50>
是一条线索。 salt['timezone.get_zone']
正在返回一个函数。要实际调用它,您需要在它后面加上括号,所以您的行需要看起来像:
{% set timezone = salt['timezone.get_zone']() %}
这应该适合你。它在我的测试中有效。