在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
收藏