本文已参与「新人创作礼」活动,一起开启掘金创作之路。
一、目标
初步了解satl的jinja用法
二、说明
接上一贴内容,本次试验用的是salt的“dev”环境
再贴一下本实验环境和配置文件
三、开搞
1、salt主配置文件的主要内容
vim /etc/salt/master file_roots: base: - /srv/salt/ dev: - /srv/salt/dev test: - /srv/salt/test prod: - /srv/salt/prod
2、本次用到的剧本
`vim /srv/salt/dev/lamp.sls
xlamp-pkg-install:
pkg.installed:
- names:
- httpd
- php
- php-mysql
- php-gd
- gd
- mariadb-server
xhttpd-files: file.managed: - name: /etc/httpd/conf/httpd.conf - source: salt://files/httpd.conf ##---声明使用jinja模板 - template: jinja ##---jinja模板的key叫defaults - defaults: ##---jinja模板的具体key叫xIP(与上面配置文件httpd.conf里的xIP保持对应),取值可以使用salt的grains或pillar里的值。注意写法,本身grains['fqdn_ip4']返回的是个列表,取第一个就是0就是ip xIP: {{ grains['fqdn_ip4'][0] }} ##---这个xPort也和上面的source里的Httpd.conf里面写的自定义模板key名保持一致 xPort: 8091 xhttpd-service: service.running: - name: httpd - enable: True - reload: True - require: - pkg: xlamp-pkg-install - watch: - file: xhttpd-files
xmysql-files:
file.managed:
- name: /etc/my.cnf
- source: salt://files/my.cnf
- require_in:
- service: xmysql-service
xmysql-service:
service.running:
- name: mariadb
- enable: True3、本次用到的模板Httpd.conf主要内容vim /srv/salt/dev/files/httpd.conf
##---本实验只改httpd.conf的监听,所以这里只贴一条,剩余的配置内容略去。
##---这里的xIP和xPort与/srv/salt/dev/lamp.sls里的jinja模板的key保持一致
Listen {{ xIP }}:{{ xPort }}4、salt剧本的入口文件top.sls写法(本次用不到,想用的话可以使用命令salt '*' state.highstate)vim /srv/salt/top.sls
base:
'*':
- init.dns
dev: 'salt[34]': - lamp` 5、贴下本次文件夹的拓扑结构
四、小结
1、jinja使用的时候必须在sls文件里声明- template: jinja。
2、在jinja模板里获取客户端ip也可以使用如:【{{ salt'netowrk.ip_addrs' }}】
- template: jinja - defaults: xIP: {{ salt['netowrk.ip_addrs']('ens33') }} xPort: 8091
其实就是salt命令【 salt '*' network.ip_addrs ens33】获取所有客户端的网卡ens33的ip地址。
3、在jinja模板里也可以使用pillar,比如
- template: jinja - defaults: xIP: {{ pillar['apache']['IP'] }} xPort: {{ pillar['apache']['PORT'] }}