• SaltStack初探---学习重点在:salt-api、salt-sls、salt-run、pillar--2017年4月21日和24日


    官网文档链接:https://docs.saltstack.com

    远程执行:在远程系统上执行命令是Salt的核心功能,Salt可以在秒级内在成千上万个系统上执行命令。
    事件驱动架构:可以在架构中的系统中驱动响应式配置和管理
    配置管理:Salt有一套健壮且灵活的配置管理框架,该框架使得同时配置成千上万套系统毫不费力
     

    Salt的基本组件和概念
     
    Grains
    grains interface获取底层系统信息的接口。Grains收集操作系统,域名,IP,内核,OS类型,内存和其他系统属性
    grains interface使得Salt的模块和组件可用,因此正确的salt minion命令可以自动化的在正确的系统上执行
    Grain数据是相对静态的,即使操作系统信息改变,grain data可以自动更新
    查看所有minion的grains数据  salt '*' grains.items
     
    Pillar
    Pillar是Salt的接口,Pillar是Salt用来分发全局变量到所有minions的一个接口
    Pillar data处理方式类似Salt State Tree
    Pillar data在主上编译,只有在pillar配置中指定的minion才可以获取pillar data,这使它为特定的minion存储敏感数据非常有用.
     
    Targeting
    Targeting minions是定义哪个minion应该执行命令,或者通过匹配主机名、系统信息、或者自定义组、甚至组合,来执行状态。
     
    Runners
    Salt Runners类似于Salt execution modules,但是他们是在master(不是在远端minions)上执行
     
    YAML
    SLS文件是YAML renderer渲染器的默认渲染器,YAML是一种标记语言,有许多强大的功能。Salt使用YAML的一个小子集包含常用的数据结构,例如list和dictionaries。YAML renderer的工作是将YAML 数据结构编译成python数据结构,让Salt使用。
     

    salt-api:用于远程连接salt master的接口
    --version 打印正在运行Salt的版本
    --versions-report 输出程序依赖者和版本号,然后退出
    -h, --help
    -c CONFIG_DIR, --config-dir=CONFIG_dir    Salt配置目录的位置,这个目录包含Salt manager和minions的配置文件,默认位置是/etc/salt
    -d, --daemon   后台运行salt-api
    --pid-file=PIDFILE   指定pidfile的位置,默认位置/var/run/salt-api.pid
    -l LOG_LEVEL, --log-level=LOG_LEVEL   控制台日志的日志级别:all, garbage, trace, debug, info, warning, error, quiet. 默认: warning.
    --log-file=LOG_FILE   日志文件的位置,默认/var/log/salt/api
    --log-file-level=LOG_LEVEL_LOGFILE   日志文件的日志级别,默认warning
     

    salt sls
    规则一: 缩进
    Salt需要每个缩进级别由两个空格组成
    规则二: 冒号
    字典的keys在YAML中的表现形式是一个以冒号结尾的字符串。Values的表现形式冒号下面的每一行,用一个空格隔开
    my_key: my_value
    规则三: 短横杠
    想要表示列表项,使用一个短横杠加一个空格。多个项使用同样的缩进级别作为同一列表的一部分。
    my_dictionary:
      - list_value_one
      - list_value_two
      - list_value_three
     

    salt cmd.run:执行一个salt run
    --version
    --versions-report
    -h, --help
    -c CONFIG_DIR, --config-dir=CONFIG_dir
    -t TIMEOUT, --timeout=TIMEOUT    等待从Minion返回的超时时间,以秒为单位。超时时间说明了命令行客户端查询minion,然后检查运行任务会等待多长时间。默认 1
    --hard-crash 抛出原始异常,默认False
    -d, --doc, --documentation   显示runners的文档,仅查看特定模块或者runner的文档
     

    pillar

    配置文件中的Pillar

    pillar_roots : 存在于master/minion配置文件中. 指定Pillar roots对应环境的目录, 其布局类似于State Tree. 在minion配置文件中配置该选项, 只有当 file_client 为 local 时才生效. 默认位置/srv/pillar

    state_top : 存在于master/minion配置文件中, 默认值为top.sls. 官方描述为用于state system, 用于告诉minion使用哪个环境并且需要执行哪些模块. 其实该选项也应用在pillar system中, 作用和state system类似. 所以如果更改了本选项, pillar system对应的top.sls也需要变更. 在minion配置文件中配置该选项, 只有当 file_client 为 local 时才生效.

    file_client : 存在于minion配置文件中, 默认值为remote. 用于指定去哪里查找文件. 有效值是 remote 和 local. remote 表示使用master, local 用于 Masterless 的情况.

    pillar_opts : 存在于master配置文件中, 默认值为True. 指定是否将master配置选项作为pillar. 如果该选项为True, 修改了master配置选项时, 需要重启master, 才能在pillar中得到最新的值.

     
    声明master pillar
    Salt master server包含pillar_roots设置,pillar_roots选项从环境映射到目录,pillar data基于top.sls文件中的匹配器映射到minions。
     
    pillar_roots:
      base:
        - /srv/pillar
    基础环境在/srv/pillar目录下
     
    /srv/pillar/top.sls
    base:
      '*':
        - packages
      'web*':
        - vim
    /srv/pillar/packages.sls匹配所有minion
    以web开头的minion匹配/srv/pillar/packages.sls file 和 /srv/pillar/vim.sls
     
    dev:
      'os:Debian':
        - match: grain
        - servers
    传递特殊配置到指定minion
     
    pillar的namespace
     
    pillar的字典合并
     
    包含其他Pillars
    include:
      - users:
          defaults:
              sudo: ['bob', 'paul']
          key: users
     
    In-Memory Pillar Data vs. On-Demand Pillar Data
    主从上的pillar data会同步,in-memory pillar data 是由 pillar.item, pillar.get, and pillar.raw 方法返回的
    saltutil.refresh_pillar.刷新方式
     
    Pillar环境如何处理
    pillarenv使minion只考虑从单一环境中获取配置文件
     
    查看pillar data
    pillar.item :在in-memory pillar data中检索
    pillar.items:编译一个新的pillar字典并返回,和in-memory pillar data无关
    pillar.raw:返回in-memory pillar data中整个pillar字典
     
    pillar.get 方法
     
    在命令行设置Pillar Data
    salt '*' state.apply pillar='{"cheese": "spam"}'
     
    Pillar 中Master配置
    pillar_opts: True master的配置在所有minion中都可用
     

    Target中的Pillar

    Salt指令发送底层网络, 采用ZeroMQ PUB/SUB结构. Minion会监听SUB接口, Master会将指令发送到本地的PUB接口, 然后所有Minion均会收到该指令, 然后在Minion本地判断自己是否需要执行该指令(即Target). 当前版本中, 已经支持pillar作为Target(通过"-I"选项指定).

    想要使用最新的Pillar来做Target操作, 需要在执行前先手动执行 saltutil.refresh_pillar 操作, 以刷新Minion内存中的Pillar数据.
     
    在master上执行的具体命令例子:

    查看Minion的Pillar信息    

    salt '*' pillar.items

    查看某个Pillar值

    salt '*' pillar.item <key>      #只能看到顶级的

    salt '*' pillar.get <key>:<key> #可以取到更小粒度的

    刷新Pillar数据

    salt '*' saltutil.refresh_pillar 

     
     
     
     
     
     
     
     
     
     
     
  • 相关阅读:
    web性能优化
    5、Git:使用码云(Gitee)
    4、Git:文件操作
    3、Git:基本理论 和 项目搭建
    2、Git:环境配置
    1、Git:版本控制 和 Git历史
    18、各种锁的理解(非公平锁和公平锁、可重入锁、自旋锁、死锁)
    17、原子引用(乐观锁)
    16、深入理解CAS(重点)
    15、彻底玩转单例模式
  • 原文地址:https://www.cnblogs.com/jingbostar/p/6758224.html
Copyright © 2020-2023  润新知