我想要
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
时,会产生一个失败,说“评论:谷物粒子名称不存在”
答案 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命令)。