一、调用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: 4
- 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
[root@server2 salt]# vim /etc/httpd/conf/httpd.conf
二、jinja和grains的结合使用
1.查看节点的ip信息
[root@server1 apache]# vim files/httpd.conf
Listen {{ grains['ipv4'][-1] }}:{{ port }}
3.jinja结合grains使用
(1).更改httpd的配置文件
[root@server1 apache]# vim files/httpd.conf
Listen {{ host }}:{{ port }}
[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: 4
- 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: 4
- 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 %}
测试: