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

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

[复制链接]

尚未签到

发表于 2018-8-1 10:13:54 | 显示全部楼层 |阅读模式
  本文总结saltstack如何定位目标主机,以及介绍一些常见使用样例。
> 为什么需要定位主机?
  作为配置管理软件,首先要解决的是如何确定一次推送的主机,或者说特定配置的推送目标。试问如果无法很好的确定一次或多次推送的目标,又何谈实现大批主机的分类配置管理的自动化呢?
> saltstack的target机制?
  saltstack 为此建立了一套很是完善的minion定位机制。官方术语叫“target
minions”,即通过多种途径,指定minion具有的属性(比如正则匹配minion
id,或是匹配minion的特定grains属性等)来区分出本次推送命令或状态的对应目标,以下是salt提供的匹配主机的方法:

  •   globbing (默认的匹配方式,linux shell风格的通配)

  •   Perl-compatible regular expressions (E,即正则匹配方式,对象同样是minion>

  •   Lists (L,直接是一串minion>
  •   Grains (G/P,使用grains值匹配,P是使用正则匹配方式,G则是默认通配方式。)
  •   NodeGroup (N,master配置文件里预定义好的组别信息)
  •   Subnet(S,利用minion 的IP属性进行匹配)
  •   Range cluster (R,设置range服务器反馈值匹配?暂时没搞懂)
  •   Pillar(I,简单,用pillar数据匹配)
  •   Compound(C,组合匹配方式,以上述一种或多种方式联合匹配)
  一些常见的target例子:
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%
  参考: salt官网

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

本版积分规则

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

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

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

扫描微信二维码查看详情

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


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


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


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



合作伙伴: 青云cloud

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