Saltstack入门

一、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

  

 

posted @ 2018-03-27 17:02  JvvYou  阅读(226)  评论(0编辑  收藏  举报