盐定制谷物 - 尝试返回空的'list-type'谷物



我想拥有

salt 'target' grains.items

返回一个带有粒度的结果,这是一个空列表:

target:
     ...other grains...
     grain_name: 
        None
    ...other grains...

所以,稍后,我可以运行这个自定义盐状态并使用salt.states.grains.append。我的自定义盐状态(通过/srv/salt/_files 中名为 grains_name_state.sls 的 sls 文件(如下所示:

grain_name:
    grains.append:
        - value: whatever_value

我的自定义粒度模块(通过主服务器上/srv/salt/_grains 中名为 custom_grain.py 的 python 文件(如下所示:

#!/usr/bin/env python
def my_custom_grain():
    #initialize an empty grains list for the grain 'grain_name'
    grains = {}
    grains['grain_name'] = []
    return grains

所以,打电话 salt 'target' saltutil.sync_grains应将自定义粒度加载到目标工作节点中。然后,salt 'target' grains.items应包含目标的结果,并将"grains_name"值显示为"无"。但相反,它包含以下内容:

target:
    ...other grains...
    grain_name:
    ...other grains...

然后,当我尝试时,salt 'target' state.apply grains_name_state,它会产生一个失败,说"评论:谷物grain_name不存在">

想通了; 不过,我不确定为什么当颗粒应该是列表类型并且可附加时salt.states.list_append有效。使用 Saltstack 2016.3.3+,我的自定义盐状态(通过/srv/salt/_files 中名为 grains_name_state.sls 的 sls 文件(如下所示:

grain_name:
    grains.list_present:
        - value: whatever_value

然后,在第一个 highstate/state.apply 之后,grain_name粒度可用于 list_present(重复的追加命令(。

最新更新