使不存在的柱子导致警告或错误
Make non-existent pillar cause warning or error
有没有办法在找不到请求的柱子时导致盐状态渲染输出警告或错误?
我正在为具有很多 组件的系统设置 Saltstack,并且我们使用支柱来确保不同的 Salt 状态在适当的情况下具有相同的值。我们还旨在保留所有在支柱中因安装而异的价值观。所以有很多支柱文件,支柱变量的总量有点混乱。当我们再次安装这个系统时,我们必须确保所有支柱都已定义并具有适当的值。在此过程中,当支柱未定义时发出警告或错误将非常有帮助,而不是必须通过整个 minion grep "None",然后找出哪里出了问题。有什么办法可以解决此类警告或错误吗?
我们不可能是唯一一家拥有复杂盐安装的公司。
解决方案:
正如批准的答案中所链接的那样,解决方案是将以下内容添加到 /etc/salt/minion:
pillar_raise_on_missing: True
PILLAR_RAISE_ON_MISSING: True
记得重启salt-minion
你可以确保支柱 return 如果不是这样定义的错误:
{%- set port = pillar['db']['host'] %}
或者如果有 none,您可以指定默认值。
{%- set host = salt['pillar.get']('db:host', 'localhost') %}
如果支柱已定义但没有价值,您可以使用支柱模块,以获得错误。
在这里查看:https://docs.saltstack.com/en/latest/ref/modules/all/salt.modules.pillar.html#salt.modules.pillar.get
Attempt to retrieve the named value from pillar, if the named value is
not available return the passed default. The default return is an
empty string except opts['pillar_raise_on_missing'] is set to
True, in which case a KeyError will be raised.
默认行为是在请求的支柱值不存在时产生错误。文档建议使用 pillar.get 和默认值,以便填充缺失值,但这不是必需的。要从状态中获取硬错误,请改为对支柱进行属性查找。
假设您有一个如下所示的支柱文件:
some_app:
opt1: 23
opt2: null
以下是访问它们的一些方法以及它们的作用:
{{ pillar['some_app']['opt1'] }} # Prints 23
{{ pillar.some_app.opt1 }} # Alternate syntax, also prints 23
{{ pillar['some_app']['missing_opt'] }} # ERROR
{{ pillar.some_app.missing_opt }} # ERROR
{{ pillar.get('some_app:missing_opt', 17) }} # No error, prints 17
{{ pillar['some_app']['opt2'] }} # Also no error. I think it prints None.
标记为'error'的方法会使状态在运行时大声失败,我想这就是你想要的。
有没有办法在找不到请求的柱子时导致盐状态渲染输出警告或错误?
我正在为具有很多 组件的系统设置 Saltstack,并且我们使用支柱来确保不同的 Salt 状态在适当的情况下具有相同的值。我们还旨在保留所有在支柱中因安装而异的价值观。所以有很多支柱文件,支柱变量的总量有点混乱。当我们再次安装这个系统时,我们必须确保所有支柱都已定义并具有适当的值。在此过程中,当支柱未定义时发出警告或错误将非常有帮助,而不是必须通过整个 minion grep "None",然后找出哪里出了问题。有什么办法可以解决此类警告或错误吗?
我们不可能是唯一一家拥有复杂盐安装的公司。
解决方案: 正如批准的答案中所链接的那样,解决方案是将以下内容添加到 /etc/salt/minion:
pillar_raise_on_missing: True
PILLAR_RAISE_ON_MISSING: True
记得重启salt-minion
你可以确保支柱 return 如果不是这样定义的错误:
{%- set port = pillar['db']['host'] %}
或者如果有 none,您可以指定默认值。
{%- set host = salt['pillar.get']('db:host', 'localhost') %}
如果支柱已定义但没有价值,您可以使用支柱模块,以获得错误。 在这里查看:https://docs.saltstack.com/en/latest/ref/modules/all/salt.modules.pillar.html#salt.modules.pillar.get
Attempt to retrieve the named value from pillar, if the named value is not available return the passed default. The default return is an empty string except opts['pillar_raise_on_missing'] is set to True, in which case a KeyError will be raised.
默认行为是在请求的支柱值不存在时产生错误。文档建议使用 pillar.get 和默认值,以便填充缺失值,但这不是必需的。要从状态中获取硬错误,请改为对支柱进行属性查找。
假设您有一个如下所示的支柱文件:
some_app:
opt1: 23
opt2: null
以下是访问它们的一些方法以及它们的作用:
{{ pillar['some_app']['opt1'] }} # Prints 23
{{ pillar.some_app.opt1 }} # Alternate syntax, also prints 23
{{ pillar['some_app']['missing_opt'] }} # ERROR
{{ pillar.some_app.missing_opt }} # ERROR
{{ pillar.get('some_app:missing_opt', 17) }} # No error, prints 17
{{ pillar['some_app']['opt2'] }} # Also no error. I think it prints None.
标记为'error'的方法会使状态在运行时大声失败,我想这就是你想要的。