比如我们有这样一个需求,就是需要apache监听自己服务器的ip地址.
这个可以用jinjia模板来实现的.
实现jianjia模板需要三部
1.file状态使用template参数
2.模板文件里面变量使用{{名称}} {{PORT}}
3.变量列表
-default:
PORT:8080
示例:
vim apache.sls
apache-install:
pkg.installed:
- name: httpd
apache-config:
file.managed:
- name: /etc/httpd/conf/httpd.conf
- source: salt://lamp/files/httpd.conf #这里的salt://指当前环境base里的 /srv/salt
- user: root
- group: root
- mode: 644
- template: jinjia
apache-service:
service.running:
- name: httpd
- enable: True
然后在/srv/salt/master/lamp/files/httpd.conf
修改文件内容,
Listen {{ IPADDR}} :80
给IPADDR这个变量赋值.
这个赋值是在上面的apache.sls文件里面修改的,参考如下:
vim apache.sls
apache-install:
pkg.installed:
- name: httpd
apache-config:
file.managed:
- name: /etc/httpd/conf/httpd.conf
- source: salt://lamp/files/httpd.conf #这里的salt://指当前环境base里的 /srv/salt
- user: root
- group: root
- mode: 644
- template: jinjia
- defaults:
IPADDR: {{grains['fqdn_ip4'][0]}} #这里如果是pillar的话参考这样{{pillar['apache']['PORT']}},这里也可以通过执行远程命令获取值示例:{{salt['network.hw_addr'('eth0')]}}
apache-service:
service.running:
- name: httpd
- enable: True