前言

https://github.com/saltstack-formulas中,grains.filter_by模块使用的比较频繁,先了解它的意思,然后理解大牛们使用它的用意。

grains.filter_by啥意思?

参照官网:https://docs.saltstack.com/en/latest/ref/modules/all/salt.modules.grains.html#salt.modules.grains.filter_by

作用:在给定的字典中查找当前操作系统并返回结果

简单理解下:可以根据不同环境(例如:操作系统),来获取的这个适合这个操作系统的变量的值,意思就是我给centos和Debian同时定义了一套字典,类似

Debian:

server: mysql-server

client: mysql-client

service: mysql

python: python-mysqldb

debconf_utils: debconf-utils

dev: libmysqlclient-dev

config:

file: /etc/mysql/my.cnf

sections:

client:

port: 3306

socket: /var/run/mysqld/mysqld.sock

CentOS:

server: mysql-server

client: mysql

service: mysqld

python: MySQL-python

dev: mysql-devel

config_directory: /etc/my.cnf.d/

这样,根据客户端属于哪种环境(例如:操作系统),就会套用到上述yaml模板中的值

grains.filter_by咋用呢?

grains.filter_by语法

{% set apache = salt['grains.filter_by']( { ... 列表区域 }, merge=salt['pillar.get']('apache:lookup') 参数区域) %}

set apache #设置了一个字典的对象,名字是apache,也就是创建了一个apache的对象

列表区域

就是yaml语法,设置字典

官方解释:lookup_dict 一个字典,key来自于grains,包含一个或多个值匹配,通过匹配系统有关进行选定。例如,一个key可以是一个操作系统的名称,该值可以在特定的操作系统中的包的名称。

参数区域:

  • grain-- 我们要从客户端grains到那个key来区分环境,这就要说明下,默认值:os_family
  • merge-- 字典
  • default-- 默认值,默认选择哪个key
  • base-- 选择lookup_dict合并在这最后合并字典合并。这允许每个案件的共同的价值观被收集在基地和粮食选择字典和词典被合并。默认设置

    举个栗子1:

    {% set apache = salt['grains.filter_by']({

    'Debian': {'pkg': 'apache2', 'srv': 'apache2'},

    'RedHat': {'pkg': 'httpd', 'srv': 'httpd'},

    }, default='Debian') %}

    myapache:

    pkg.installed:

    - name: {{ apache.pkg }}

    service.running:

    - name: {{ apache.srv }}

    上述例子可以看到,使用©著作权归作者所有:来自51CTO博客作者vekergu的原创作品,如需转载,请注明出处,否则将追究法律责任

微软 target blank saltstack

0

收藏

上一篇:小技巧-使用notepad++实... 下一篇:ELKstack-logstas...
saltstack- grains.filter_by-介绍_第2张图片
vekergu

85篇文章,57W+人气,10粉丝

关注