Grains: - grains.append # 向grains中添加key/value, 不存在则创建,存在则追加,被追加的key将有两个值,salt '*' grains.append key val. 特别注意:append 操作要时 key必须是个列表 - grains.delkey # 删除指定的grains key,value也会一起删除。salt '*' grains.delkey key - grains.delval # 删除指定的grains key 的 value值,并不会删除key,主要注意删除value后会将value变成None. salt '*' grains.delval key - grains.equals # 判断key/value 是否匹配,匹配返回True,反之则为False. salt '*' grains.equals key value - grains.fetch # 获取指定key的value值,如果不存在则返回空字符串,和get类似。 salt "*" grains.fetch key - grains.filter_by # 过滤查找 - grains.get # 获取, 和fetch类似 - grains.get_or_set_hash # salt '*' grains.get_or_set_hash 'django:SECRET_KEY' 50 - grains.has_value # salt '*' grains.has_value pkg:apache - grains.item # 获取指定grains item信息(也可以获取多个,多个用空格分隔),例如: grains.item wan, 获取wan的信息 # salt '*' grains.item wan minion: ---------- wan: 41.2.2.2 - grains.items # 获取minion的所有grains item信息 - grains.ls # 获取grains的所有item key值 - grains.remove # 和append 对应,移除grains key 的value 列表中的一个。salt '*' grains.remove key val - grains.set # 设置key 为任意值,value是嵌套模式的。 # salt '*' grains.set 'apps:myApp:port' 2209 # salt '*' grains.set 'apps:myApp' '{port: 2209}' - grains.setval # 设置key . salt '*' grains.setval key val # salt '*' grains.setval key "{'sub-key': 'val', 'sub-key2': 'val2'}" salt '*' grains.setval key11 "{'sub-key': 'val', 'sub-key2': 'val2'}" minion: ---------- key11: ---------- sub-key: val sub-key2: val2 salt '*' grains.item key11:sub-key minion: ---------- key11:sub-key: val salt '*' grains.item key11:sub-key2 minion: ---------- key11:sub-key2: val2 - grains.setvals # 设置多个key/value,salt '*' grains.setvals "{'key1': 'val1', 'key2': 'val2'}" salt '*' grains.setvals "{'key1': 'val1', 'key2': 'val2'}" minion: ---------- key1: val1 key2: val2
自定义Grains方法
自定义grains模块应放在名为_grains
的子目录中,该子目录位于master配置文件指定的file_roots
下。 默认路径为/srv/salt/_grains
。 运行state.highstate
时,或者通过执行saltutil.sync_grains
或saltutil.sync_all
函数时,会将自定义grains模块分发给minions。
函数的名称无关紧要,根本不会影响grains数据; 只有返回的key:value才会成为grains数据中的一部分
注意:当grain_cache设置为False时,构建grain字典并将其存储在minion的内存中。 每次minion重新启动或运行saltutil.refresh_grains
时,都会从头开始重建grain字典。
自定义脚本会上传到minion的/var/cache/salt/minion/extmods/grains目录下
案例:
get_time.py
#!/usr/bin/env python
# coding=utf-8
from datetime import datetime
def get_server_time():
grains = {}
grains['server_time'] = datetime.now().strftime('%Y-%m-%d %H:%M:%S')
return grains