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

[经验分享] Saltstack 学习之target minions(一)

[复制链接]
累计签到:1 天
连续签到:1 天
发表于 2014-7-6 11:30:11 | 显示全部楼层 |阅读模式
本文总结saltstack如何定位目标主机,以及介绍一些常见使用样例。

> 为什么需要定位主机?作为配置管理软件,首先要解决的是如何确定一次推送的主机,或者说特定配置的推送目标。试问如果无法很好的确定一次或多次推送的目标,又何谈实现大批主机的分类配置管理的自动化呢?  

> saltstack的target机制?
saltstack 为此建立了一套很是完善的minion定位机制。官方术语叫“target minions”,即通过多种途径,指定minion具有的属性(比如正则匹配minion id,或是匹配minion的特定grains属性等)来区分出本次推送命令或状态的对应目标,以下是salt提供的匹配主机的方法:

  • globbing (默认的匹配方式,linux shell风格的通配)
  • Perl-compatible regular expressions (E,即正则匹配方式,对象同样是minion id)
  • Lists (L,直接是一串minion id 列表)
  • Grains (G/P,使用grains值匹配,P是使用正则匹配方式,G则是默认通配方式。)
  • NodeGroup (N,master配置文件里预定义好的组别信息)
  • Subnet(S,利用minion 的IP属性进行匹配)
  • Range cluster (R,设置range服务器反馈值匹配?暂时没搞懂)
  • Pillar(I,简单,用pillar数据匹配)
  • Compound(C,组合匹配方式,以上述一种或多种方式联合匹配)


一些常见的target例子:  

1
2
3
4
5
6
salt '*' test.ping -v
salt 'Cloud[1-5]' test.ping -v
salt 'test*' test.ping -v
salt -E 'Test.*' test.ping -v
salt -L 'TestVM01,TestVM02' test.ping -v #中间不要有空格salt -G 'os:CentOS' test.ping -v #同样的,不要有多余字符salt -N 'group1' test.ping -v
salt -S '127.0.0.1' test.ping -v #minion只要在这个子网就会匹配salt -C 'E@TestVM0.* and G@os:CentOS' test.ping -v #允许逻辑运算#另外的,暂时没有应用过,留待以后补充……



> saltstack 源代码解读(0.17.5)1、salt-master端

target相关代码均是零散分布于 /usr/lib/python2.6/site-packages/salt/client/__init__.py(1151行为pub方法),其实在master端并没有完成太多解析任务,只是完成了诸如Range server的解析等简单工作。推送命令的原理即master 通过run_job方法统一发布job,然后该方法通过zmq发布pub,所有minion均会接收到该数据,并根据是否满足要求来完成后续工作。

2、salt-minion端

这里即完成主要的匹配工作,minion的代码位于 /usr/lib/python2.6/site-packages/salt/minion.py (主要代码为1485行开始的Matcher类,里面进一步调用了saltutil的比较方法,从而确认是否匹配),这里取其中一个简单的例子予以讲解。

def pcre_match(self, tgt):    '''    Returns true if the passed pcre regex matches    '''    #这里注意一下,使用re模块实现正则匹配,然后反馈的    #是boolean值,其他方法类似,即反馈minion是否match。    return bool(re.match(tgt, self.opts['id']))
> 使用Batch选项分批次运行saltstack 提供了-b 选项,允许对target选中的所有主机进行分批次处理,每次只推送指定的数量或百分比,直至全部推送完毕。个人感觉这个比较鸡肋,分批次运行最好还是自己定制一下,用salt的python client写个辅助脚本应该效果更好点,毕竟这个不能打断,也无法把握。

salt '*' -b 10 test.ping #一次10台,分批推送salt -G 'os:RedHat' --batch-size 25% test.ping #一次跑25%

运维网声明 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-21666-1-1.html 上篇帖子: 在CentOS6上使用saltstack配置Apache ssh模块 下篇帖子: Saltstack 学习之target minions(二) target
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

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

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

扫描微信二维码查看详情

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


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


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


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



合作伙伴: 青云cloud

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