SaltStack介绍

一. SaltStack是什么

      SaltStack是一个配置管理系统,能够维护预定义状态的远程节点

      SaltStack是一个分布式远程执行系统,用来在远程节点上执行命令和查询数据

二. SaltStack的服务架构

     1. Master:负责管理所有节点

      2. Minion:(相当于客户端)节点服务

      3. ZeroMQ:通信服务

      4. AES:数据加密方法

      

三. SaltStack的优缺点

      1. SaltStack特点:

           1). 简单(相对于Puppet)

           2). 并行执行

           3). 基于成熟的技术(ZeroMQ(通信),AES(数据加密))

           4).  Python API

           5).  灵活,开放

     2. SaltStack的缺点:

          1).  需要单独安装客户端

          2).  安全隐患大

四. 了解ZeroMQ

      ZeroMQ以嵌入式网络编程库的形式实现了一个并行开发框架,能够提供进程内,进程间,网络和广播方式的消息信道,并支持扇出、发布—订阅,任务分发、请求/响应等通信模式。

五. SaltStack安装配置运行

      1. SaltStack安装

           依赖:python2.6~python3.0,ZeroMQ or RAET,mako(可选):一个可选的Salt States解析器;gcc(可选)

          MacOS 安装方法:brew install saltstack

                                          sudo port install salt

                                          sudo pip install salt

          Ubuntu14.04安装方法:

                                         1. 获取源:wget https://repo.saltstack.com/apt/ubuntu/14.04/amd64/latest/SALTSTACK-GPG-KEY.pub

                                          2. 添加salt仓库:sudo add-apt-repository ppa:saltstack/salt

                                          3. sudo apt-get update

                                          4. 安装master:apt-get install salt-master salt-api salt-cloud salt-ssh salt-syndic

                                           5. 安装minion:apt-get install salt-minion

         CentOS安装方法:

                                     pip install salt

                                    安装master:yum install salt-master 

                                    安装minion:yum install salt-minion     

        以CentOS为例,查看安装结果:

        

        

       2. SaltStack的配置方法

           1)master端:

                 vim /etc/salt/master

                 修改interface监听地址为本机ip

                 

                 修改auto_accept 自动接收minion的key

                 

      2)minion端

           vi /etc/salt/minion

           修改minion文件中的id为自己的主机名

           

           修改master服务器的ip

           

       3. 运行SaltStack

           1)启动saltstack

          master端

          

          minion端

          

         2)测试saltstack

        在master端执行:salt-key list就可以查看到客户端

        如果在/etc/salt/master的配置文件中没有配置自动接收key,可以使用以下命令:salt-key -A

        

        此时可以看到minion的主机名已经获取到了,说明安装成功。

        测试:

        测试是否连通:salt minion-id test.ping

               期望返回:

                               minion-id:

                                           True

       

      所有监控用户执行命令:  salt “*” cmd.run "df -h"

      

      指定一个用户执行命令:  salt '用户名或ip' cmd.run "命令"

      

       4. 了解SaltStack的配置项

            1)saltstack Master配置

                  通用配置项

                  a. interface:监听的IPV4地址

                  b. IPV6:监听的IPV6的地址

                  c. PUBLISH_PORT:与Minion通信的端口

                  d.MASTER_ID:当前Master节点id

                  e.USER:启动Master服务的用户

                   f. MAX_OPEN_FILES:每一个连接到Master的Minion,Master都会打开一个文件描述符,改选项定义打开的最大文件数。可能报错:Too many open files

                   g. WORKER_THREADS:最大工作线程数

                   h. RET_PORT:获取Minion返回结果的端口

                   i. PIDFILE:Master进程的pid文件

                   j.ROOT_DIR:Master运行的根目录

                   k.CONF_FILE:Master配置文件的路径

                   L.PKI_DIR:pki验证秘钥存放路径

                   m. MODULE_DIRS:Salt模块搜索路径

                   n. CACHEDIR:默认缓存路径

                   o. KEEP_JOBS:旧的任务信息保留多少个小时

                   p. GATHER_JOB_TIMEOUT:Minion获取任务超时时间

                   q. TIMEOUT:Salt API、command执行的超时时间

                   r. OUTPUT_FILE:SaltStack command 输出文件

                   s. CLI_SUMMARY:显示客户端的概要信息,目标Minion数,返回的数目,没返回的数目

                   t. MAX_MINIONS:最大管理的Minions

                   u. TRANSPORT:通信模块

                   v. TRANSPORT_OPTS:通信模块参数

                   w. MAX_EVENT_SIZE:最大的事件数

                  安全配置项

                  a. OPEN_MODE:开发模式,如果设置为true,则任何minion都能连上Master,无需验证

                  b. AUTO_ACCEPT:接受所有客户端的公钥

                  c. TOKEN_EXPIRE:Master新生成token的存活时间

                  d. AUTOSIGN_TIMEOUT:如果Minion的keyid出现在pki_dir/minion_autosign/keyid中,Master会自动接受该Minion的链接,这个配置项,定义这个自动接受的持续时间,超时的要重新验证接受。                

                  e. AUTOSIGN_FILE:自动接受Minion keyid 存放文件

                  f. AUTOREJECT_FILE:与AUTOSIGN_FILE相反,自动拒绝接受Minion keyid 存放文件

                  g. PUBLISHER_ACL:对指定Minion可执行指定的命令(白名单)

                  h. PUBLISHER_ACL_BLACKLIST:与PUBLISHER_ACL相反(黑名单)

                  i. EXTERNAL_AUTH:指定验证方法

                  j. FILE_RECV:允许minion向master发送文件

                  k. FILE_RECV_MAX_SIZE:允许minion向master发送的最大文件(MB)

          2)saltstack Minion配置

                  通用配置项:

                 a. MASTER:master的hostname,可以是多个

                 b. MASTER_TYPE:str —一对一;failover—容错的,这种情况下,master必须是多个,minion会逐个通信;func——动态生成的

                 c. MAX_EVENT_SIZE:最多接受master推送过来的事件数目

                 d. MASTER_FAILBACK:回滚,如果设置为true,此时master_type必须是failover

                 e. MASTER_ALIVE_INTERVAL:心跳检测

                 f. RANDOM_MASTER:如果master是多个,则选择算法是否是随机的。

                 g. MASTER_PORT:Master端口

                 h. USER:SaltStack启动用户

                  i. SUDO_USER:可以获取sudo权限的用户

                  j. ID:Minion的ID,会出现的Master的连接Minion的列表

                  k. MASTER_TRIES:重连Master的次数

                  L. AUTH_TRIES:auth重试的次数

                  m. AUTH_TIMEOUT:auth超时

                   n. TCP_PUB_PORT:发布消息端口

                   o. TCP_PULL_PORT:获取消息端口

                安全配置项

                    a. open_mode:可以用来清理master key 修改为true,重启,修改为false 重启

                    b. MASTER_FINGER:master指纹,用来验证master,在master上运行salt-key -F master获取

posted @ 2020-03-22 17:27  出水芙蓉·薇薇  阅读(1032)  评论(0编辑  收藏  举报