Grains 本章节参考<SaltStack技术入门与实践>,感谢该书作者: 刘继伟.沈灿.赵舜东 前几章我们已经了解SaltStack各个组件以及通过一个案例去熟悉它的各种应用,从这章开始我们通过Python语言去扩展SaltStack组件.虽然SaltStack自带的各种组件在功能上已经很成熟了,但是有时候无法满足企业各种复杂的环境.本章的主要内容就是如何去扩展SaltStack各个组件. 一.查看Grains相关的命令及用法 [root@saltmaster ~]# salt 'iror…
Mine 本章节参考<SaltStack技术入门与实践>,感谢该书作者: 刘继伟.沈灿.赵舜东 Mine是SaltStack收集Minion数据存储到Master的一个组件,它的功能与Grains有些类似,Mine可以指定任何Minion模块去采集数据.但是master只能存储minion收集上来的最近一段的数据,mine的主要应用场景是配合前端负载均衡动态获取mine汇报信息,来动态生成配置文件.例如官网通过mine.get指定业务设备的网卡地址动态生成haproxy.cfg文件.mine还…
Renderer组件 本章节参考<SaltStack技术入门与实践>,感谢该书作者: 刘继伟.沈灿.赵舜东 前面我们已经提过使用Python语言编写state.sls文件.在SaltStack系统里面支持很多方式去扩展它.Renderer就是其中一种途径.默认SaltStack的Renders是YAML+Jinja,可以通过查看Master配置文件得知当前的Renderer.目前是SaltStack支持很多种Renderer,大家可以去官网了解更多,因为YAML Jinja py 这三种Ran…
实践案例 <中小型Web架构>3 Memcached配置管理 本章节参考<SaltStack技术入门与实践>,感谢该书作者: 刘继伟.沈灿.赵舜东 Memcached介绍 Memcached是一个高性能的分布式内存对象缓存系统,用于动态Web应用以减轻数据库负载.它通过在内存中缓存数据和对象来减少读取数据库的次数,从而提高动态数据库驱动网站的访问速度.Memcached基于一个存储键/值对的hashmap.其守护进程(daemon )是用C写的,但是客户端可以用任何语言来编写,并通…
Peer 本章节参考<SaltStack技术入门与实践>,感谢该书作者: 刘继伟.沈灿.赵舜东 Peer组件是SaltStack中Minion向Master发布任务的一个组件,使用Peer我们可以直接在Minion上向Master发布一些任务,跟我们在Master上执行一样的效果.默认peer是没有配置的.配置peer也非常简单,只需修改Master文件即可: peer: minion1: - test.ping peer_run: minion1: - manage.up peer是控制mi…
Event和Reactor系统 本章节参考<SaltStack技术入门与实践>,感谢该书作者: 刘继伟.沈灿.赵舜东 Event是SaltStack里面的对每个事件的一个记录,它相比job更加底层,Event能记录更加详细的Saltstack事件,比如Minion服务启动后请求Master签发证书或者证书校验的过程,都能通过Event事件来查看整个过程.Event也为扩展SaltStack提供了更加友好的接口.目前官方已经列出一些Event事件,包括认证,Minion连接Master,key认…
Job管理 本章节参考<SaltStack技术入门与实践>,感谢该书作者: 刘继伟.沈灿.赵舜东 在SaltStack里面执行任何一个操作都会在Master上产生一个jid号.Minion端会在cache目录下的proc目录创建一个jid为名称的文件,这个文件里面的内容就是此次操作的记录,当操作处理完成后该文件会自动删除.而Master端会记录每次操作的详细信息,这个记录都是存到在Master端cache目录下jobs下.下面通过实例来了解日常job管理. 目前SaltStack提供两种方式来…
执行结果处理 本章节参考<SaltStack技术入门与实践>,感谢该书作者: 刘继伟.沈灿.赵舜东 Return组件可以理解为SaltStack系统对执行Minion返回后的数据进行存储或者返回给其他程序,它支持多种存储方式,比如用MySQL.MongoDB.Redis.Memcache等,通过Return我们可以对SaltStack的每次操作记录,对以后日志审计提供了数据来源.目前官方已经支持30种Return数据存储与接口,我们可以很方便地配置与使用它.当然也支持自己定义的Return.在…
基本原理 SaltStack 采用`C/S`模式,server端就是salt的master,client端就是minion,minion与master之间通过`ZeroMQ`消息队列通信. minion上线后先与master端联系,把自己的`pub key`发过去,这时master端通过`salt-key -L`命令就会看到minion的key,接受该minion-key后,也就是master与minion已经互信. master可以发送任何指令让minion执行了,salt有很多可执行模块,比…
之前说到可以通过attach和exec两个命令登陆容器,但是如果遇到需要远程通过ssh登陆容器的场景,就需要手动添加ssh服务. 下面介绍两种方法创建带有ssh服务的镜像,commit命令创建和通过Dockerfile创建. 一.通过commit命令创建镜像 docker提供了docker commit 命令,支持用户提交自己对容器的修改,并生成新的镜像.命令格式为 docker commit CONTAINER [REPOSITORY [:TAG] ]. 下面是如何为 ubuntu:18.04…