Salt Custom Grains - 尝试返回一个空的'list-type'粒子

时间:2017-06-12 22:01:14

标签: python salt salt-stack

我想要

salt 'target' grains.items

使用grain返回结果,这是一个空列表:

target:
     ...other grains...

     grain_name: 
        None

    ...other grains...

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

grain_name:
    grains.append:
        - value: whatever_value

我的自定义grain模块(通过python文件,名为custom_grain.py,在master上的/ srv / salt / _grains中)如下:

#!/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'值显示为None。但它包含了这个:

target:
    ...other grains...

    grain_name:

    ...other grains...

然后,当我尝试salt 'target' state.apply grains_name_state时,会产生一个失败,说“评论:谷物粒子名称不存在”

1 个答案:

答案 0 :(得分:0)

想出来;但是,我不确定为什么salt.states.list_append在grain应该是list-type并且可以追加时才能工作。 使用Saltstack 2016.3.3 +,我的自定义盐状态(通过sls文件,名为grains_name_state.sls,在/ srv / salt / _files中)如下:

"module 'crypto' not found:"

然后,在第一个highstate / state.apply之后,grain_name grain可以使用list_present(一个重复的append命令)。