一、调用jinja
1.脚本指定jinja参数
[root@server1 pillar]# cd /srv/salt/apache/
[root@server1 apache]# vim install.sls
httpd-install:
pkg.installed:
- pkgs:
- httpd
- php
- httpd-tools
file.managed:
- name: /etc/httpd/conf/httpd.conf
- source: salt://apache/files/httpd.conf
- user: root
- group: root
- mode: 644
- template: jinja
- context:
port: 80
host: 172.25.6.2
2.配置文件中引入可变参数
[root@server1 apache]# vim files/httpd.conf
Listen {{ host }}:{{ port }}
测试:
[root@server1 apache]# salt server2 state.sls apache.install
server2配置文件里查看
[root@server2 salt]# vim /etc/httpd/conf/httpd.conf
二、jinja和grains的结合使用
1.查看节点的ip信息
2.更改配置文件中的可变参数
[root@server1 apache]# vim files/httpd.conf
Listen {{ grains['ipv4'][-1] }}:{{ port }}
测试:
可以发现和之前的没有改变,这样就说明了在jinja中grains也是可以使用的
3.jinja结合grains使用
(1).更改httpd的配置文件
[root@server1 apache]# vim files/httpd.conf
Listen {{ host }}:{{ port }}
(2).在jinja模块中引入grains
[root@server1 apache]# vim install.sls
httpd-install:
pkg.installed:
- pkgs:
- httpd
- php
- httpd-tools
file.managed:
- name: /etc/httpd/conf/httpd.conf
- source: salt://apache/files/httpd.conf
- user: root
- group: root
- mode: 644
- template: jinja
- context:
port: 80
host: {{ grains['ipv4'][1] }}
测试:
四、jinja模块结合pillar
1.在脚本文件的jinja模块中引入pillar
[root@server1 apache]# vim install.sls
httpd-install:
pkg.installed:
- pkgs:
- httpd
- php
- httpd-tools
file.managed:
- name: /etc/httpd/conf/httpd.conf
- source: salt://apache/files/httpd.conf
- user: root
- group: root
- mode: 644
- template: jinja
- context:
port: {{ pillar['port'] }}
host: {{ pillar['ip'] }}
2.在pillar的默认文件中写入jinja所需信息
[root@server1 apache]# vim /srv/pillar/vars.sls
{% if grains['fqdn'] == 'server2' %}
webserver: apache
state: master
ip: 172.25.6.2
port: 80
{% elif grains['fqdn'] == 'server3' %}
webserver: nginx
state: backup
ip: 172.25.6.3
port: 80
{% endif %}
测试: