saltstack详解

saltstack介绍:python

saltstack是基于python开发的一套C/S自动化运维工具,通讯采用了zeromq消息队列的(pub/sub),数据传输采用了AES(高级加密)保证安全性,认证采用了SSL方式。centos

一. ZeroMQ介绍:安全

ZeroMQ是由一套组件组成,内封装的有网络通讯,消息队列,线程调度等功能并向上层提供了简洁的API接口,应用程序经过加载库文件,调用API函数来实现高性能网络通讯。网络

ZeroMQ将网络通讯分红4种模型,分别是一对一结对模型(Exclusive-Pair)、请求回应模型(Request-Reply)、发布订阅模型(Publish-Subscribe)、推拉模型(Push-Pull)。这4种模型总结出了通用的网络通讯模型,在实际中能够根据应用须要,组合其中的2种或多种模型来造成本身的解决方案。运维

saltstack-master与minion通讯就采用了zeromq的请求回应模型(request-reply)和发布订阅模型(publish-subscribe):函数

1. 请求回应模型工具

由请求端发起请求,而后等待回应端应答。一个请求必须对应一个回应,从请求端的角度来看是发-收配对,从回应端的角度是收-发对。跟一对一结对模型的区别在于请求端能够是1~N个。该模型主要用于远程调用及任务分配等。Echo服务就是这种经典模型的应用。性能

 

2.  发布订阅模型测试

         发布端单向分发数据,且不关心是否把所有信息发送给订阅端。若是发布端开始发布信息时,订阅端还没有链接上来,则这些信息会被直接丢弃。订阅端未链接致使信息丢失的问题,能够经过与请求回应模型组合来解决。订阅端只负责接收,而不能反馈,且在订阅端消费速度慢于发布端的状况下,会在订阅端堆积数据。该模型主要用于数据分发。天气预报、微博明星粉丝能够应用这种经典模型。加密

salt-master启动时会运行两个端口4505和4506:

4505:他是salt的消息发布,系统底层基于zeromq pub(发布订阅),能够在master的配置文件中publish_port修改参数。

做用:负责下发命令,而且全部的minion都会链接到4505这个端口,可经过lsof -i:4505命令查看,注:可在minion的配置文件修改master参数指定主master。

4506:他是salt消息收集,系统底层基于zeromq REQ/REP(请求回应模型),在master配置文件中ret_port修改参数。

做用:负责接收客户端发送过来的结果。

 

二. master与minion的认证:

minion在第一次启动时会在/etc/salt/下生成/pki/minion目录,并在下面建立minion.pem(私钥)和minion.pub(公钥),而后主动将minion.pub发送到master的/etc/salt/pki/master/minions.pre/下面,而且文件以minion的id文件内的数据命名,等待认证。在master上执行salt-key -L命令能够查看等待签证的minion。执行salt-key -A -y命令赞成全部没有签证的minion。这时minion会在/etc/salt/pki/minion/下生成minion_master.pub文件,注这个是master的公钥文件。而且master会将/pki/master/minions.pre目录下的公钥转移到/pki/master/minions/目录下表示已经认证,这时master就能够管理minion了。

 

三. saltstack数据系统(grains和pillar):

grains是静态数据在minion启动时会收集一些本地的属性信息例如:(CPU,内存,系统,版本,ip,mac,硬盘,设备型号)等等,并向master提交。注:重启便会从新收集。

1.基本数据查看与获取:

salt ‘zcl*’  grains.items:列出ID以zcl开头的minion,并显示全部的grains静态变量与值。

salt ‘zcl*’ grains.ls:列出ID以zcl开头的minion,并显示全部的grains静态变量名。

salt ‘zcl*’ grains.items os:显示某一个变量与值

salt ‘zcl*’ grains.get os:直接获取某一个变量的值

2.根据目标属性条件进行使用命令:

salt -G ‘os:CentOS’ test.ping:全部minion主机为centos系统的进行ping测试。

salt -G ‘os:CentOS’ cmd.run ‘date’:全部minion主机为centos系统的执行date命令

3.自定义静态变量:

第一种:

vi /etc/salt/minion

重启或者使用salt ‘*’ saltutil.sync_grains命令可不重启。

第二种:   通常生产环境都用第二种。

vi /etc/salt/grains

salt ‘*’ saltutil.sync_grains

salt '*' grains.get zcl

salt '*' grains.item zcl roles:列出多个变量

相关文章
相关标签/搜索