设为首页 收藏本站
查看: 979|回复: 0

[经验分享] Salt Runners manage学习

[复制链接]
累计签到:1 天
连续签到:1 天
发表于 2014-11-6 08:24:35 | 显示全部楼层 |阅读模式
status

使用方法: salt-run manage.status
功能: 输出所有已知的minions的状态, 以up和down分组输出
核心代码及补充的代码说明:
client = salt.client.LocalClient(__opts__['conf_file'])
minions = client.cmd('*', 'test.ping', timeout=__opts__['timeout'])   #利用client.cmd对所有的minion发送test.ping指令,用于探测minion

是否存活

key = salt.key.Key(__opts__)
keys = key.list_keys()                  # 利用salt.key获取当前master上有多少minion的key,即获取到完整的minion列表

ret = {}
ret['up'] = sorted(minions)         # 将执行test.ping有返回值的minion即存活的minion的ID放入up中
ret['down'] = sorted(set(keys['minions']) - set(minions))   #完整的minion列表减去存活的minion就是down掉/无法连接的minion喽
if output:
    salt.output.display_output(ret, '', __opts__)    # 输出
return ret
总结: 该方法果然很给力,从此妈妈再也不担心不知道minion是否存活喽
key_regen
使用方法: salt-run manage.key_regen
功能: 重新生成环境下的所有key (副作用甚强,慎用,慎用, 除非你知道在做什么)
核心代码及补充的代码说明:
minions = client.cmd('*', 'saltutil.regen_keys')     # 执行saltutil.regen_keys,重新生成key
总结: 慎用,慎用,慎用
down
使用方法: salt-run manage.down
功能: 输出down掉/无法连接的minion
核心代码及补充的代码说明:
ret = status(output=False).get('down', [])   # 直接用之前的status方法,然后获取down的minion列表
总结: 函数编程果然是王道,省时省力,直接通过该方法查询down掉的minion,再也不麻烦了
up
使用方法: salt-run manage.up
功能: 输出存活的minion
核心代码及补充的代码说明:
ret = status(output=False).get('up', [])   # 和上边直接down一样,不过这次的需求变成了up而已
总结: 和楼上类似
versions
使用方法: salt-run manage.versions
功能: 输出所有存活的minion的版本和master的版本对比情况
核心代码及补充的代码说明:
minions = client.cmd('*', 'test.version', timeout=__opts__['timeout'])  # 通过client.cmd方法下发所有minion需要执行test.version(输出

版本号)的指令

labels = {                        # 定义版本对比的描述
    -1: 'Minion requires update',
    0: 'Up to date',
    1: 'Minion newer than master',
}

version_status = {}

comps = salt.__version__.split('-')    # 获取master version
if len(comps) == 3:
    master_version = '-'.join(comps[0:2])
else:
    master_version = salt.__version__
for minion in minions:
    comps = minions[minion].split('-')
    if len(comps) == 3:
        minion_version = '-'.join(comps[0:2])
    else:
        minion_version = minions[minion]
    ver_diff = cmp(minion_version, master_version)   # 通过python的cmp方法对版本号进行对比

    if ver_diff not in version_status:
        version_status[ver_diff] = []
    version_status[ver_diff].append(minion)

ret = {}
for key in version_status:
    for minion in sorted(version_status[key]):
        ret.setdefault(labels[key], []).append(minion)

salt.output.display_output(ret, '', __opts__)
return ret
总结: 利用本方法,哪些minion需要升级立马得知,谁用谁知道啊!

相关帖子


运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-27176-1-1.html 上篇帖子: saltstack日常应用 下篇帖子: Salt-API安装配置及使用 manage
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表