Saltstack-13-在剧本中使用jinja模板推送httpd

117 阅读2分钟

本文已参与「新人创作礼」活动,一起开启掘金创作之路。

一、目标

初步了解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、贴下本次文件夹的拓扑结构

image.png

四、小结

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'] }}