zoukankan      html  css  js  c++  java
  • Saltstack系列5:Saltstack之pillar组件

    pillar组件

    pillar也是Saltstack最重要的组件之一,其作用是定义与被控主机相关的任何数据,定义好的数据可以被其他组件使用,如模板、state、API等。

    在pillar中定义的数据与不同业务特性的被控主机相关联,这样不同被控主机只能看到自己匹配的数据,因此pillar安全性很高,适用于一些比较敏感的数据,这也是区别于grains最关键的一点,如定义不同业务组主机的用户id、组id、读写权限、程序包等信息,定义的规范是采用Python字典形式,即键/值,最上层的键一般为主机的id或组的名称。

    pillar的定义

    主配置文件定义

    Saltstack默认将主控端配置文件中的所有数据都定义到pillar中,而对所有被控主机开放,可通过修改/etc/salt/master配置来定义是否开启或关闭这项功能。

    【/etc/salt/master】

    pillar_opts: True/False

    修改后执行命令来观察效果:

    salt '*' pillar.data

    SLS文件定义

    pillar支持在sls文件中定义数据,格式须符合YAML规范,与Saltstack的state组件十分相似,新人容易将两者混淆,两者文件的配置格式、入口文件top.sls都是一致的。

    定义pillar的主目录
    【/etc/salt/master】

    pillar_roots:
      base:
        - /srv/pillar

    同时创建pillar目录,执行命令:

    install -d /srv/pillar

    定义入口文件top.sls

    入口文件的作用一般是定义pillar的数据覆盖被控主机的有效范围,'*'代表任意主机,其中包括了一个data.sls文件具体内容如下:

    【/srv/pillar/top.sls】

    base:
      '*':
        - data #指代的是data.sls文件

    【/srv/pillar/data.sls】

    appname: website
    flow:
      maxconn: 3000
      maxmem: 6G

    校验pillar

    刷新被控主机的pillar信息

    salt '*' saltutil.refresh_pillar

    查看上面定义的data.sls数据项

    salt 'wx' pillar.data appname flow

    pillar的使用

    完成pillar配置后接下来介绍使用方法。我们可以在state、模板文件中引用,模板格式为:{{ pillar变量 }}

    例:

    {{ pillar['appname'] }}(一级字典)
    {{ pillar['flow']['maxconn'] }}(二级字典) 或 {{ salt['pillar.get']('flow:maxconn',{}) }}
    
    #Python API格式如下:
    pillar['flow']['maxconn']
    pillar.get('flow:appname',{})

    操作目标主机

    salt -I 'appname:website' test.ping

    结果:

    wx:
      True


    结合grains处理数据的差异性

    首先通过结合grains的id信息来区分不同的id的maxcpu的值,其次进行引用观察匹配的信息,将data.sls修改成如下形式:

    appname: website
    flow:
      maxconn: 3000
      maxmem: 6G
      {% if grains['id'] == 'wx' %} #jinjia2模板语法
      maxcpu: 8
      {% else %}
      maxcpu: 4
      {% endif %}

    结果:

    wx:
        ----------
        flow:
            ----------
            maxconn:
                3000
            maxcpu:
                8
            maxmem:
                6G

    参考资料:

    根据刘天斯《Python自动化运维技术与最佳实践》整理

  • 相关阅读:
    go资料
    typescript 装饰器 decorator
    【转】typescript class decorator装饰器
    【转】Best way to get result count before LIMIT was applied
    DirectX11 采样状态对象
    React通过redux-persist持久化数据存储
    禁止网页查看源代码
    css3 动画 -- 加载动画 Loader
    css3 动画 -- 旋转线条 rotate_line
    读书打卡:《微信互联网平民创业》
  • 原文地址:https://www.cnblogs.com/MacoLee/p/5760135.html
Copyright © 2011-2022 走看看