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粉絲

相關文章
相關標籤/搜索