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

在Salt自定义Grains中无法访问默认Grains数据,请求技术协助

解决Salt自定义Grains无法访问默认Grains的问题

问题核心

自定义Grains脚本可能在系统默认Grains完成加载前执行,导致__grains__字典无目标数据;同时需确认默认Grains中序列号的键名是否匹配。

解决方案

1. 确认默认Grains的序列号键名

在Salt Master上执行命令,查看目标minion的所有默认Grains数据:

salt 'ms_minion' grains.items

从输出中找到序列号对应的键,常见为serialnumber或serial_number,后续代码需使用实际匹配的键名。

2. 改用__salt__模块获取默认Grains数据

由于__grains__在自定义Grains加载阶段可能未完全初始化,通过__salt__调用grains.get方法能确保获取到已加载的默认Grains数据。修改自定义Grains脚本(/srv/salt/_grains/gethwtype.py):

#!/usr/bin/env python3

def gethwtype():
    # 调用salt模块获取serialnumber,不存在时返回空字符串作为默认值
    hw = __salt__['grains.get']('serialnumber', '')
    grains = {}
    if hw:
        grains["bm_tag"] = hw
    return grains

3. 刷新Grains缓存并验证

执行命令同步并刷新目标minion的Grains缓存:

salt 'ms_minion' saltutil.sync_grains
salt 'ms_minion' grains.refresh

验证自定义Grains是否生效:

salt 'ms_minion' grains.get bm_tag

额外注意事项

  • 确保自定义Grains脚本权限正确:执行chmod 755 /srv/salt/_grains/gethwtype.py
  • Salt 3004.2版本中,__salt__模块在自定义Grains脚本中默认可用,无需额外配置

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.22 18:52:08