在https://github.com/saltstack-formulas中,grains.filter_by模块使用的比较频繁,先了解它的意思,而后理解大牛们使用它的用意。 html
参照官网: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模板中的值
{% set apache = salt['grains.filter_by']( { ... 列表区域 }, merge=salt['pillar.get']('apache:lookup') 参数区域) %}
set apache #设置了一个字典的对象,名字是apache,也就是建立了一个apache的对象
就是yaml语法,设置字典
官方解释:lookup_dict 一个字典,key来自于grains,包含一个或多个值匹配,经过匹配系统有关进行选定。例如,一个key能够是一个操做系统的名称,该值能够在特定的操做系统中的包的名称。
{% 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
收藏