saltstack- grains.filter_by-介绍

前言

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

grains.filter_by啥意思?

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

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

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

Debian: github

server: mysql-server sql

client: mysql-client apache

service: mysql centos

python: python-mysqldb 微信

debconf_utils: debconf-utils socket

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的原创做品,如需转载,请注明出处,不然将追究法律责任

0

收藏

vekergu

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

相关文章
相关标签/搜索