最近一段时间一直在做类似salt-halite的Salt作业发布Web工具,其中很重要的一点就是如何友好的展现输出,一直也是很想直接调用Salt原生的salt-output系统,没能做成。在通过Github上给官方提Issue,以及群里运维大神苦咖啡的热心帮助下,终有所得,不敢有所藏,愿分享之。
鄙人深切以为 “在开源的世界里阅读源码才是深层次理解软件运行机制的不二法门”,本系列即是旨在通过解读(当然,鄙人实力有限,只是粗浅的解读)Saltstack源码的方式,了解Saltstack内部的运行机制,对排障和更好理解和二次开发Saltstack有一定助力。
使用Saltstack也有段时间,期间踩了不少坑,有的解决了,有的解决不了便避开了。本文便是一些排障经验的归纳和使用体验的总结,纯属个人经验,不喜勿喷。
salt 目前主要的应用场景是Linux OS下,另外还有Windows Client(Win下没用过,但是看官方issue,应该……),最近关注到官方的一个小模块提到了Proxy minion,群里也多有提及,便想着看看到底是啥存在。
Saltstack官方在salt 2014 介绍视频中引入了salt raet概念,salt raet是继Salt-Zeromq, Salt-Ssh之后的第三套通信体系,全名为Reliable Asynchronous Event Transport,即基于事件的可靠异步传输协议 —— by 译者
Saltstack自0.17.x版本开始引进Formulas的概念,旨在通过简化State和集成数据来实现State的友好管理,本文将就此展开探讨。更多的样例可以参见: Formulas.Git
Saltstack使用Pillar和Grains数据来管理和分类Minion,其中Grains数据作为Minion的“固有属性”存储在Minion端,而Pillar则作为“变量数据”存储在Salt-Master端,本文就如何灵活的应用和管理Pillar来实现分类与配置部署的话题予以探讨。