pillar组件

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

下面详细描述如何进行pillar的定义和使用.

pillar的定义:

1.主配置文件的定义

Saltstack认将主控端配置文件中的所以数据都定义到pillar中,而且对所有被控主机开放,可通过修改/etc/salt/master配置中的pillar_opts:Ture或False来定义是否开启或禁用这项功能,修改后执行salt '*' pillar.data 来观察效果。如下为pillar_opts:Ture的返回结果,以主机'SN100-128'为例,执行salt 'SN100-128' pillar.data .

[root@localhost ~]# salt 'SN100-128' pillar.data
SN100-128:
        ----------
        __role:
            master
        auth_mode:
            1
        auto_accept:
            True
        cache_sreqs:
            True
        cachedir:
            /var/cache/salt/master
        cli_summary:
            False
        client_acl:
            ----------
        client_acl_blacklist:
            ----------
        cluster_masters:
        cluster_mode:
            paranoid
        con_cache:
            False
        conf_file:
            /etc/salt/master
        config_dir:
            /etc/salt
        cython_enable:
            False
        daemon:
            True
        default_include:
            master.d/*.conf #(主机所有pillar信息,部分截图)

2.SLS文件定义

pillar支持在sls文件中定义数据,格式须符合YAML规范,与Saltstack的state组件十分相似,两者文件的配置格式、入口文件top.sls都是一致的。下面详细介绍pillar使用sls定义的配置过程。

(1)定义pillar的主目录

修改主配置文件/etc/salt/master 的pillar_roots参数,定义pillar的主目录,格式入下:

pillar_roots:
base:
- /srv/pillar

同时创建pillar目录,执行命令:install -d /srv/pillar。

(2) 定义入口文件top.sls

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

 【/srv/pillar/top.sls】 

base:
'*':
- data

【/srv/pillar/data.sls】

appname: website
flow:
maxconn:30000
maxmen:6G

(3)效验pillar

  通过查看 "SN100-128" 主机的pillar数据,可以看到多出了data.sls数据项,原因是我们定义top.sls时使用“ * ”覆盖了所有主机,这样当查看“ SN100-128” 的pillar数据时可以看到我们定义的数据。如下所示,如果结果不符合预期,可以尝试刷新被控主机pillar数据,运行 salt '*' saltutil.refresh_pillar即可。

[root@localhost~]# salt 'SN100-128' pillar.data appname flow
SN100-128:
----------
appname:
website
flow:
maxconn:30000 maxmen:6G #返回主机pillar的信息

pillar的使用:

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

{{ pillar['appname'] }}  (一级字典)
{{ pillar['flow']['maxconn'] }} (二级字典)

 Python API格式如下:

pillar['flow']['maxconn']
pillar.get('flow:appname',{})

1.操作目标主机

通过-I 选项来使用pillar来匹配被控主机:

[root@localhost]# salt -I 'appname:website' test.ping
SN100-128:
True
SN100-129:
True
SN100-130:
True

2.结合grains处理数据的差异性

首先通过结合grains的ID信息来区分不同id的maxcpu的值,其次进行引用观察匹配的信息。将data.sls修改成如下形式,其中,"if ... else...endfi"为jinja2的模板语法。

appname: website
flow:
maxconn:30000
maxmen:6G
{% if grains['id'] == 'SN100-128' %}
maxcpu: 8
{% else %}
maxcpu: 4
{% endif %}

查看被控主机的pillar数据

salt 'SN100-128' pillar.data appname flow

Pillar在top.sls定义实例:

在master端配置文件中打开pillar_root

pillar_roots:
base:
- /etc/salt/pillar mkdir /etc/salt/pillar
mkdir /etc/salt/pillar/init 重启 /etc/init.d/salt-master restart vim /etc/salt/pillar/top.sls
base:
'*':
- init.rsyslog vim /etc/salt/pillar/init/rsyslog.sls {% if grains['osfinger'] == 'CentOS-6' %} syslog:rsyslog
{% elif grains['osfinger'] == 'CentOS-5' %} syslog: syslog {% endif %} salt '*' saltutil.refresh_pillar //刷新

  

  

  

Saltstack pillar组件的更多相关文章

  1. Saltstack系列5:Saltstack之pillar组件

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

  2. Saltstack管理对象属性之grains和pillar组件

    Grains组件 Grains是saltstack记录minion的一些静态信息组件,可以简单的理解为grains里面记录着每台minion的一些常用的属性,比如cpu.内存.磁盘.网络信息等,可以通 ...

  3. Linux centosVMware 自动化运维认识自动化运维、启动salt相关服务、saltstack配置认证、salt-key命令用法、saltstack远程执行命令、saltstack - grains、saltstack – pillar

    一.认识自动化运维 传统运维效率低,大多工作人为完成 传统运维工作繁琐,容易出错 传统运维每日重复做相同的事情 传统运维没有标准化流程 传统运维的脚本繁多,不能方便管理 自动化运维就是要解决上面所有问 ...

  4. saltstack pillar

    piller组件定义与客户端相关的任何数据(定义在master端),定义好的数据可以被其他组件调用(如state,api) 说通俗了,一句话,就是ansible vars里定义的变量,可以在整个pla ...

  5. SaltStack Pillar 详解

    简介 grains用于存储静态不易变更的数据,而pillar一般用于存储动态, 敏感的数据,通过minion和master设置或获取grains信息,而pillar信息只能在master端配置,在到m ...

  6. Saltstack grains组件

    grains是Saltstack最重要的组件之一,grains的作用是收集被控主机的基本信息,这些信息通常都是一些静态的数据,包括CPU.内核.操作系统.虚拟化等,在服务器端可以根据这些信息进行灵活定 ...

  7. salt之pillar组件

    pillar也是salt最重要的组件之一,其作用是定义与被控主机相关的任何数据,定义好的数据可以被其他组件使用,如模板.state.API等.在pillar中定义的数据与不同业务特征的被控主机相关联, ...

  8. SaltStack入门篇(三)之数据系统Grains、Pillar

    1.什么是Grains? Grains是saltstack的组件,用于收集salt-minion在启动时候的信息,又称为静态信息.可以理解为Grains记录着每台Minion的一些常用属性,比如CPU ...

  9. SaltStack数据系统之Grains、Pillar

    SaltStack数据系统之Grains.Pillar 1.什么是Grains? Grains是saltstack的组件,用于收集salt-minion在启动时候的信息,又称为静态信息.Grains是 ...

随机推荐

  1. mssql-异常value '0000-00-00' can not be represented as java.sql.Date

    Mysql开发中采用ResultSet取值時,不管是才用getString()还是用getDate(),或者getObject,均会拋出如题所述异常.查阅Mysql官方Bug咨询: 是因为日期型(Da ...

  2. PL/SQL Developer连接本地64位Oracle数据库

    1.安装oracle Clinet 首先到Oracle官网上去下载一个Oracle 11g Client(我的是11g的oracle),不过需要先申请一个Oracle 帐号,才能下载. 目前下载地址: ...

  3. Jenkins 2.x版本修改启动端口号(Windows)

    可能有一些原因,8080端口被占用了,无法使用时需要修改jenkins的启动端口号. 如果首次安装,建议先停止原有系统的8080端口占用,等jenkins安装完成后,再进行修改,然后该回8080的原系 ...

  4. WHMCS系统API调用

    WHMCS:域名管理系统,现在网络上很多借助此系统Shadowsocks插件+ShadowsocksR多用户服务端进行VPN的售卖,能做到流量控制等. 在对接此系统的API时,我发现了很多功能都已经实 ...

  5. ecshop /includes/lib_base.php、/includes/fckeditor/editor/dialog/fck_spellerpages/spellerpages/server-scripts/spellchecker.php Backdoor Vul

    catalog . 漏洞描述 . 漏洞触发条件 . 漏洞影响范围 . 漏洞代码分析 . 防御方法 . 攻防思考 1. 漏洞描述 ECShop是国内一款流行的网店管理系统软件,其2.7.3版本某个补丁存 ...

  6. 过滤器(Filter)的应用

    过滤器的概念 Java中的Filter 并不是一个标准的Servlet ,它不能处理用户请求,也不能对客户端生成响应. 主要用于对HttpServletRequest 进行预处理,也可以对HttpSe ...

  7. css优化

    >>.li设置了display:inline-block,会有空隙,可在父元素ul下设置font-size:0 >>.ie下不支持margin:0 auto; >> ...

  8. python实现自动输入命令回车操作

    苦逼的在sf上等了一天(问题链接),都没人来解答,只好自己想办法,东平西凑还是勉强实现了,记录一下: 安装完python2.7后,在cmd命令行输入python回车,后出现python相关的提示信息, ...

  9. Beta版本冲刺第一天 12.5

    一.站立式会议照片: 二.项目燃尽图: 三.项目进展: 成 员 前段时间完成任务 今天完成任务 明天要做任务 问题困难 心得体会 胡泽善 对Alpha版本的分析总结,学习新技术,对Beta版本的讨论规 ...

  10. Error=Bias+Variance

    首先 Error = Bias + Variance Error反映的是整个模型的准确度,Bias反映的是模型在样本上的输出与真实值之间的误差,即模型本身的精准度,Variance反映的是模型每一次输 ...