You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Salt SLS文件Jinja条件语句报错:ESXi高级配置检查失败

Salt SLS模板调用vmware_esxi模块的错误修正

你的SLS文件报错核心是参数传递方式错误和条件判断逻辑位置错误,以下是具体问题分析和修正方案:

问题分析

  1. 参数传递错误:在Jinja模板中调用salt['vmware_esxi.get_advanced_config']时,你用了CLI式的字符串参数('host_name={{ host }}'),这会导致函数收到的是字面量host_name={{ host }}而非实际主机名,因此出现"Datacenter未找到"的错误。
  2. 条件判断逻辑错误:你把==0的判断嵌入到了函数参数的引号内,这会让函数误将整个字符串当作参数解析,完全偏离了原本的判断意图。

修正后的SLS代码

{% for host in salt['vmware_esxi.list_hosts']() %}
    {% set current_config = salt['vmware_esxi.get_advanced_config'](host_name=host, config_name='Net.BlockGuestBPDU') %}
    {% if current_config == 0 %}
    set_advanced_option_{{ host }}:
      module.run:
        - name: vmware_esxi.set_advanced_config
        - host_name: {{ host }}
        - config_name: Net.BlockGuestBPDU
        - config_value: 1
    {% endif %}
{% endfor %}

关键修改点

  • 用{% set %}单独获取当前配置值,调用模块函数时直接传递host_name=host、config_name='Net.BlockGuestBPDU'作为关键字参数,确保函数能正确识别目标主机。
  • 将==0的判断移到函数调用之后,仅当当前配置值确实为0时才触发设置操作,避免重复执行无用的配置命令。
  • 统一模板缩进规范,减少潜在的解析问题。

内容的提问来源于stack exchange,提问作者Brian

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.03 04:10:28