一、Salt概述
-
一个配置管理系统,能够维护预定义状态的远程节点(比如,确保指定的报被安装,指定的服务在运行)。
-
一个分布式远程执行系统,用来在远程节点(可以是单个节点,也可以是任意规则挑选出来的节点)上执行命令和查询数据。
二、简单
既要考虑大规模部署,又要考虑小规模系统,提供适应多种场合的应用让人沮丧,但Salt非常容易设置和维护,而不用考虑项目的大小。从数量可观的本地网络系统,到跨数据中心的互联网部署,Salt设计为在任意数量的server下都可工作。salt的拓扑使用简单的server/client模式,需求的功能内建在一组daemon中。salt在几乎不改动配置的情况下就可以工作,也可以调整从而满足特定的需求。
三、并行执行
Salt的核心功能
-
使命令发送到远程系统是并行的而不是串行的
-
使用安全加密的协议
-
使用最小最快的网络载荷
-
提供简单的编程接口
Salt同样引入了更加细致化的领域控制系统来远程执行,使得系统成为目标不止可以通过主机名,还可以通过系统属性。
四、BUILDS ON PROVEN TECHNOLOGY
Salt运用大量的技术和技巧。网络层使用卓越的`ZeroMQ`_ 网络类库构建,所以Salt的守护端包含了可行的和透明的AMQ代理。Salt使用公钥和master守护端认证,然后使用更快的AES`_ 负载通信加密; 身份认证和加密对salt是不可或缺的。Salt通过`msgpack`_建立通信,使得速度更快并且网络流量少。
五、PYTHON客户端接口
为了允许简单的扩展,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