saltstack Grains

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_grainssaltutil.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

 连接

连接

Saltstack自动化(三)Grains组件 – 云原生之路

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值