2017-06-12 28 views
1

我想有盐定制谷物 - 试图返回一个空的“名单式”粮食

salt 'target' grains.items

回用粮的结果,这是一个空列表:

target: 
    ...other grains... 

    grain_name: 
     None 

    ...other grains... 

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

grain_name: 
    grains.append: 
     - value: whatever_value 

我的自定义晶粒模块(经由一个python文件,命名为custom_grain.py,在/ SRV /盐/上的主_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,它产生一个失败说“评论:粮食grain_name不存在”

回答

0

想通了;虽然,我不知道为什么salt.states.list_append适用于粮食应该是列表类型和可追加。 (通过SLS文件,命名为grains_name_state.sls,在/ SRV /盐/ _files)与Saltstack 2016.3.3+,我的自定义状态,盐的工作如下:

grain_name: 
    grains.list_present: 
     - value: whatever_value 

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