zoukankan      html  css  js  c++  java
  • SaltStack安装配置详解

    一、简介

    Saltstack 比 Puppet 出来晚几年,是基于Python 开发的,也是基于 C/S 架构,服务端 master 和客户端 minions ;Saltstack 和 Puppet 很像,可以说 Saltstatck 整合了 Puppet 和 Chef 的功能,更加强大,更适合大规模批量管理服务器,并且它比 Puppet 更容易配置。

    三大功能: 远程命令执行,配置管理(服务,文件,cron,用户,组),云管理。

    支持系统:大多数都支持,windows 上不支持安装 master。

    服务架构:

    master 负责管理节点 一对多
    minion 服务界节点 一对多
    zeroMQ 通信服务
    AES 数据加密方法

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

    系统环境:centos7.5,master:10.0.1.111  slave:10.0.2.167

    1. 10.0.1.111安装master

    [root@master ~] wget http://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm 
    [root@master ~] rpm -ivh epel-release-latest-7.noarch.rpm 
    # yum install epel-release -y 即可
    [root@master ~] yum repolist 
    [root@master ~] yum install salt-master -y

    2.启动

    [root@master ~] systemctl start salt-master

    3. 10.0.1.112安装minion

    [root@minion ~] yum install salt-minion -y

    4. 配置minion,启动

    [root@minion ~] vim /etc/salt/minion 
      master:
    10.0.1.111
      id:
    112
    # 冒号后面有空格
    [root@minion ~] systemctl start salt-minion

    5.添加minion

    salt-key -L
    ssalt-key -a 112

    salt-key -L 显示已签名的主机  

    salt-key -a 添加主机  此时目录 /etc/salt/pki/minion 下面会多一个 minion.pub 文件

    salt-key -d 删除主机

    salt-key -D 删除所有主机

    6.测试

    salt 167 test.ping

    远程执行命令

    [root@master ~] # salt '*' cmd.run 'df -h'

    master配置文件配置项说明:

    1.interface:监听的Ipv4地址
    2.PUBLISH_PORT:与minion通信的端口 管理zeroMQ的
    3.MASTER_ID:当前master节点的ID,有多个master时指定特定的master
    4.USER:启动master服务的用户
    5.MAX_OPEN_FILES:每一个连接到master的minion,master都会打开一个文件描述符,改选项定义打开的最大文件数,可能报错:too many open files
    6.WORKER_THREADS:最大工作线程数
    7.RET_PORT:获取minion返回结果的端口
    8.PIDFILE:Master进程的pid文件
    9.ROOT_DIR:master运行的根目录
    10.CONF_FILE:master配置文件路径
    11.PKI_DIR: pki验证秘钥存放路径
    12.MODULE_DIRS:Salt模块搜索路径
    13.CACHEDIR:默认缓存路径
    14.KEEP_JOBS:旧的任务信息保留多少个小时
    15.GATHER_JOB_TIMEOUT:minion获取任务超时时间
    16.TIMEOUT:SALT API,COMMAND执行超时时间
    17.OUTPUT_FILE:SaltStack command输出文件
    18.CLI_SUMMARY:显示客户端的概要信息,目标的minion数,返回的数据,没有返回的数目
    19.MAX_MINIONS:最大管理的Minions
    20.TRANSPORT:通信模块
    21.MAX_EVENT_SIZE:最大的事件数

    安全配置:

    安全配置项:
    1.OPEN_MODE:开发模式,如果设置为true,则任何minion都能连上master,无需验证
    2.AUTO_ACCEPT:接受所有客户端的公钥
    3.TOKEN_EXPIRE:master新生成token的存货时间
    4.AUTOSIGN_TIMEOUT:如果minion的keyid出现在pki_dir/minion_autosign/keyid中,master会自动
    接受改minion的链接,这个配置项,定义这个自动接受的持续时间,超时的要重新验证接受
    5.AUTOSIGN_FILE:自动接受minion keyid存放的文件
    6.AUTOREJECT_FILE: 与AUTOSIGN_FILE相反
    7.PUBLISHER_ACL:对指定minion可以执行指定的命令
    8.PUBLISHER_ACL_BLACKIST: 与上个相反

      9.EXTERNAL_AUTH:指定验证方法
      10.FILE_REVC:允许minion向master发送文件
      11.FILE_RECV_MAX_SIZE: 允许minion向master发送的最大文件(mb)
      12.POTATE_AES_KEY:轮换AES key

    minion基本配置

    1、MASTER:MASTER的hostname,可以是多个
    2、MASTER_TYPE:str,一对一,failover,容错的,这种情况下,master必须是多个,minion会逐个通信,func:动态生成
    3、MAX_EVENT_SIZE:最多接受master推送过来的时间数据
    4、MASTER_FAILBACK:回滚,如果设置为true,此时master_type必须是failover
    5、MASTER_ALIVE_INTERVAL:心跳监测
    6、RANDOM_MASTER:如果master是多个,则选择算法是否随机
    7、MASTER_PORT:master
    8、MASTER_PORT:MAster端口
    9、USER:SaltStack启动用户
    10、SUDO_USER:可以获取sudo权限的用户
    11、ID:minionID
    12、MASTER_TRIES:重连Master的次数
    13、AUTH_TRIES:auth重试次数
    14、AUTH_TIMEOUT:auth超时
    15、TCP_PUB_PORT:发布消息端口
    16、TCP_PULL_PORT:获取消息端口


    minion安全配置

    1、open——mode:可以清理master key,修改为true,重启,修改为false,重启
    2、MASTER_FINGER: master指纹,用来验证master,在master上运行salt-key -F master获取
    3.VERIFY_MASTER_PUBKEY_SIGN:于master相对
    4.MASTER_SIGN_KEY_NAME:签名文件
    5、ALWAYS_VERIFY_SIGNATURE:是否必须验证

    saltstack基本使用方法 

    grains 是在 minion(客户端)启动时收集到的一些信息,比如操作系统类型、网卡ip,CPU,操作系统,文件系统,硬盘等等

    1.显示所有grains信息

    salt ”*“ grains.ls

    2.显示所有静态信息,即grains的项目名和值

    salt '*' grains.items

    定义grains

    客户端添加

    vim /etc/salt/grains
    
    role: zabbix
    env: test
    myname: tpp

    或者
    vim /etc/salt/minion

    grains:
       role:
         - zabbix
       env:
     
     

    
    

    - test

    
    

    myname:

    
    

    - tpp

     

    重启minion

    [root@slaver ~]# systemctl restart salt-minion

    服务端获取

    [root@master ~] # salt 'zabbix' grains.item role env mysql
    zabbix:
        ----------
        env:
            test
        mysql:
        role:
            zabbix

    比如把所有的 web 服务器的 grains 的role 设置为 zabbix,那这样我们就可以批量对zabbix 的服务器进行操作了:

    [root@master ~] # salt -G role:zabbix cmd.run 'hostname'
    [root@master ~] # salt -G os:CentOS cmd.run 'hostname'

    pillar

    pillar 和 grains 不一样,是在master 上定义的,并且是针对 minion 定义的一些信息。像一些比较重要的数据(密码)可以存在 pillar 里,还可以定义变量等。可以将minion数据通过key/value的格式进行存储
    pillar 使用独立的加密sessiion,所以pillar可以用来传递敏感的数据,
    例如ssh-key,加密证书等

    查看minion的pillar值

    [root@steven ~] # salt '*' pillar.iterms

    1.服务端配置pillar

    [root@steven ~] # vim /etc/salt/master
    
    // 去掉下面注释
    pillar_roots:
      base:
        - /srv/pillar

    2.自定义配置

    [root@steven ~] # mkdir /srv/pillar
    [root@steven ~] # vim /srv/pillar/test.sls
    conf: /etc/123.conf
    myname: tpp

    3.自定义总入口文件

    [root@steven ~] # vim /srv/pillar/top.sls
    base:
    'slaver.test.com'
    - test

    4.重启服务

    [root@steven ~] # systemctl restart salt-master

    应用场景:
    获取系统信息
    用于分类查找minion信息
    与其它模块结合完成更灵活的minion控制,比如:SLS

    Targeting Minions
    1.为salt指定minion的方法
    2.例如:salt web1 apache.signal restart

    使用Grains指定minions
    salt -G 'os:CentOS' test.ping
    salt '*' grains.items | grep -A 2 'os:'

    Compound Targeting
    salt -C 'G@os:Debian and webser* or E@db.*' test.ping
    1.G@指定了grains
    2.webser指定了ID以webser开头的minion
    3.E@是以正则的方式指定minion的ID

    Salt Runners

    salt runners是在master上运行命令的方法,区别于salt execution model

    salt runner模块包括:
    cache:返回minion缓存数据
    ddns:动态DNS
    fileserver:saltfileserver插件管理

  • 相关阅读:
    Codeforces 813F Bipartite Checking 线段树 + 并查集
    Codeforces 263E Rhombus (看题解)
    Codeforces 173E Camping Groups hash
    Codeforces 311C Fetch the Treasure 取模意义下的最短路 (看题解)
    R 培训之 Table
    Docker命令详解
    Celery的实践指南
    Using Celery with Djang
    PostgreSQL
    改时区参考
  • 原文地址:https://www.cnblogs.com/sunshine-long/p/10616779.html
Copyright © 2011-2022 走看看