【SaltStack】SaltStack配置管理工具jinja2模板的使用
SaltStack是使用的YAML语言来将sls文件解释成它自己可以识别的内容,Jinja是一种基于PYTHON的模板引擎,在SLS文件里可以直接使用jinja模板来做一些操作,比如当我们需要对多台服务器做一些apache服务配置时,由于每台服务器信息不一样(比如ip不同),如果为每台服务器去创建SLS文件就不太合理,而通过jinja模板则可以用生成变量→读取变量的方式来为每个服务器设置应有的信息。下面来看看定义jinja模板的方法:
jinja2模板的基本使用
1、首先将source文件中需要引用变量的内容改为{{ 变量名 }},如修改apache配置文件中的端口信息
Listen {{ PORT }}
2、对SLS文件进行编辑以定义模板并且给变量传值,在第一步中定义了几个变量就必须给几个变量传值
apache-service:
pkg.installed:
- name: httpd
file.managed:
- name: /etc/httpd/conf/httpd.conf
- source: salt://files/httpd.conf
- user: root
- group: root
- mode: 644
- template: jinja #增加这行表示开启模板
- defaults: #下面设定变量的值
PORT: 8080 #之前定义的PORT变量值为8080
- require:
- pkg: apache-service
service.running:
- name: httpd
- enable: True
- reload: True
- watch:
-file: apache-service
jinja2模板的高级使用:
在基本使用中由于修改的是端口,端口信息一般是固定的,如果想要修改的信息是每个minion自身的IP就没办法设置一个通用的信息了,这个时候需要通过其他方法来获取minion相关信息,这里可以使用Grains、Pillar和执行模块三个方法来获取,下面用Grains举例设置IP的办法
apache-service: pkg.installed: - name: httpd file.managed: - name: /etc/httpd/conf/httpd.conf - source: salt://files/httpd.conf - user: root - group: root - mode: 644 - template: jinja #增加这行表示开启模板 - defaults: #下面设定变量的值 HOST: {{ grains['fqdn_ip4'][0] }} #[fqdn_ip4]代表的是IP,该信息需要先执行salt '*' grains.items查询,由于grains查询输出的是列表,会有多个值,需要加上[0]代表取第一个值 PORT: 8080 #之前定义的PORT变量值为8080 - require: - pkg: apache-service service.running: - name: httpd - enable: True - reload: True - watch: -file: apache-service
评论