一个配置管理系统,可以维护预约义状态的远程节点(好比,确保指定的报被安装,指定的服务在运行)。html
一个分布式远程执行系统,用来在远程节点(能够是单个节点,也能够是任意规则挑选出来的节点)上执行命令和查询数据。linux
既要考虑大规模部署,又要考虑小规模系统,提供适应多种场合的应用让人沮丧,但Salt很是容易设置和维护,而不用考虑项目的大小。从数量可观的本地网络系统,到跨数据中心的互联网部署,Salt设计为在任意数量的server下均可工做。salt的拓扑使用简单的server/client模式,需求的功能内建在一组daemon中。salt在几乎不改动配置的状况下就能够工做,也能够调整从而知足特定的需求。apache
Salt的核心功能编程
使命令发送到远程系统是并行的而不是串行的vim
使用安全加密的协议安全
使用最小最快的网络载荷服务器
提供简单的编程接口网络
Salt一样引入了更加细致化的领域控制系统来远程执行,使得系统成为目标不止能够经过主机名,还能够经过系统属性。架构
Salt运用大量的技术和技巧。网络层使用卓越的`ZeroMQ`_ 网络类库构建,因此Salt的守护端包含了可行的和透明的AMQ代理。Salt使用公钥和master守护端认证,而后使用更快的AES`_ 负载通讯加密; 身份认证和加密对salt是不可或缺的。Salt经过`msgpack`_创建通讯,使得速度更快而且网络流量少。分布式
为了容许简单的扩展,Salt执行程序能够写为纯Python模块。数据从Salt执行过程当中收集到能够发送回master服务端,或者发送到任何任意程序。Salt能够从一个简单的Python API调用,或者从命令行被调用,因此Salt能够用来执行一次性命令,也能够做为一个更大的应用程序的一个组成部分。
结果是可以在1台或多台目标机器上快速执行命令的系统。Salt运行快速,安装简单,高度可定制;Salt用相同的远程执行架构知足管理不一样数量服务器的需求。Salt基础设施能够集成最好的远程执行工具,加强了Salt的能力及用途,获得功能丰富实用能够适用于任何网络的系统。
7.1)关闭iptables,selinux等
7.2)安装教程参考:https://docs.saltstack.cn/topics/installation/index.html#installation
7.3)安装yum源:https://docs.saltstack.cn/topics/installation/rhel.html
7.3)安装软件,这里是为了效果,因此在master上也安装了minion
master yum install -y salt-master salt-minion slave yum install -y salt-minion
7.4)加入开机自动启动
chkconfig salt-master on chkconfig salt-minion on
7.5)启动服务
/etc/init.d/salt-master start minion先不要着急启动,配置文件须要修改,以下操做 /etc/init.d/salt-minion start
7.6)配置minion
vim /etc/salt/minion master: 192.168.222.145 (16行) #id: (默认是空,能够不配主机名,也能够配主机名,也能够配ip,可是必定要注意格式,后面要有个空格,配置的主机名必需要能Ping的通)
7.7)若是上述配置了主机名,那么就要改主机名
7.8)此时能够开启minion了,而后配置认证,master与minion相互识别是须要认证的,在没有认证以前,关系都是放在minions_pre下面的,认证以后放到minions下面
[root@master master]# salt-key -a 192.168* 也能够用-A,赞成全部
在全部的minion端也存放着master的公钥
7.9)到此,saltstack已经装完了,测试
正常。
8.1)[root@master ~]# vim /etc/salt/master
[root@master ~]# mkdir /srv/salt/
重启一下master
8.2)建立要执行的操做,相似于yaml
[root@master salt]# pwd /srv/salt [root@master salt]# ls apache.sls apache-install: pkg.installed: - names: - httpd - httpd-devel apache-service: service.running: - name: httpd - enable: True - reload: True
选定机器,选定操做,相似于ansible的inventer和playbook [root@master salt]# salt '*' state.sls apache
8.3)高级状态,,上述只是一个状态,那么若是一个机器对应着好多个状态,那么就须要个相似于map的入口文件,定义一个机器所绑定的状态,通常文件名为top.sls,能够修更名,但不建议,这个文件必须即只能放在basic的环境下。
[root@master salt]# vim top.sls base: '*': //全部主机 - apache //都要执行apache这个状态
从入口文件去读取 [root@master salt]# salt '*' state.highstate