SaltStack 使用 Jinja2 模板
Jinja2 是基于 python 的一个模板引擎,如下,使用 Jinja2 实现根据不同的操作系统分发不同的文件:
[root@localhost ~]$ cat /srv/salt/test.sls
{% set apache_conf = '/etc/httpd/conf/httpd.conf' %} # {% set ... %} 用于设置变量
{% if grains['os'] == 'Debian' %} # {% if ... %} 用于条件判断,用 {% endif %} 结束判断
{% set apache_conf = '/etc/apache2/httpd.conf' %} # {{ var }} 用于获取变量值
{% endif %} {{ apache_conf }}:
file.managed:
- source: salt://apache/httpd.conf
[root@localhost ~]$ salt '*' state.sls test
配置文件也能使用 Jinja2 模板,如下,apache 的配置文件中,监听端口这部分配置使用 Jinja2 模板:
[root@localhost ~]$ cat /srv/salt/apache/httpd.conf
....
{% set lister_port = 80 %}
{% if grains['fqdn'] == 'minion01' %}
{% set listen_port = 8080 %}
{% endif %} Listen {{ listen_port }}
[root@localhost ~]$ cat /srv/salt/test.sls
{% set apache_conf = '/etc/httpd/conf/httpd.conf' %}
{% if grains['os'] == 'Debian' %}
{% set apache_conf = '/etc/apache2/httpd.conf' %}
{% endif %} {{ apache_conf }}:
file.managed:
- source: salt://apache/httpd.conf
- template: jinja # 这里需要注明使用模板引擎
[root@localhost ~]$ salt '*' state.sls test
SaltStack 使用 Jinja2 模板的更多相关文章
- SaltStack配置管理-jinja模板
上一篇:SaltStack配置管理-状态间关系 需求:需要apache配置文件里面监听的端口是每个minion本地的地址 saltstack默认的模板是jinjia模板 参考文档:http://doc ...
- Flask 框架下 Jinja2 模板引擎高层 API 类——Environment
Environment 类版本: 本文所描述的 Environment 类对应于 Jinja2-2.7 版本. Environment 类功能: Environment 是 Jinja2 中的一个 ...
- Python框架学习之Flask中的Jinja2模板
前面也提到过在Flask中最核心的两个组件是Werkzeug和Jinja2模板.其中Werkzeug在前一节已经详细说明了.现在这一节主要是来谈谈Jinja2模板. 一.为什么需要引入模板: 在进行软 ...
- python操作三大主流数据库(5)python操作mysql⑤使用Jinja2模板提取优化页面展示
python操作mysql⑤使用Jinja2模板提取优化页面展示 在templates目录下的index.html.cat.html等页面有一些共同的元素,代码比较冗余可以使用模板提取公共代码,在各网 ...
- saltstack在jianja模板中,执行salt函数来获取某些变量的值,并且将配置写入到配置文件中?
问题描述: 通过saltstack的jinja模板方式,可以将变量的值写入到配置文件,即动态获取的方式.这里介绍,通过执行salt函数来获取值的方式. 演示: 1.通过在sls中,增加jinja的模板 ...
- saltstack通过jinja模板,grains方式将配置的变量值写入到配置文件中?
需求描述: 在通过saltstack进行jinja模板获取值的时候,可以通过grains的方式,获取一些操作系统相关的信息,比如,OS,ip地址等,在这里演示下,做个记录. 演示: 1.修改sls文件 ...
- Flask框架(2)-JinJa2模板
为了把业务逻辑和表现逻辑分开,Flask把表现逻辑移到JinJa2模板,模板是一个包含响应文本的文件.它用占位变量表示动态部分,其具体要从请求上下文才知道. 把真实值替换掉占位变量成为渲染,JinJa ...
- 02 flask 请求钩子、异常捕获、上下文、Flask-Script 扩展、jinja2 模板引擎、csrf防范
一 请求勾子 在客户端和服务器交互的过程中,有些准备工作或扫尾工作需要处理,比如: 在请求开始时,建立数据库连接: 在请求开始时,根据需求进行权限校验: 在请求结束时,指定数据的交互格式: 为了让每个 ...
- 自定义Web框架与jinja2模板
web应用与web框架 web应用 对于所有的Web应用,本质上其实就是一个socket服务端,用户的浏览器其实就是一个socket客户端 import socket def handle_reque ...
随机推荐
- ggplot ggplot2 画图
折线图-ggplot2 http://blog.163.com/yugao1986@126/blog/static/6922850820131161531421/http://blog.sina.c ...
- paoding分词
Paoding 详细介绍 庖丁中文分词库是一个使用Java开发的,可结合到Lucene应用中的,为互联网.企业内部网使用的中文搜索引擎分词组件.Paoding填补了国内中文分词方面开源组件的空白,致力 ...
- String直接赋值和使用new的区别
String str1 = "ABC"; String str2 = new String("ABC"); String str1 = “ABC”;可能创建一个 ...
- 【转】android如何实现开机自动启动Service或app
1.今天我们主要来探讨android怎么让一个service开机自动启动功能的实现.Android手机在启动的过程中会触发一个Standard Broadcast Action,名字叫android. ...
- C++ 模板 template
#include <iostream> using namespace std; /* 模板的作用: 1. 不用声明类型, 传什么进来就是什么类型, 返回也是什么类型 2. 方法封装起来, ...
- Eclispe IDE集成Maven
Eclipse提供了一个很好的插件m2eclipse 无缝将Maven和Eclipse集成在一起. m2eclipse一些特点如下 您可以从Eclipse运行Maven目标. 可以使用其自己的控制台查 ...
- 架构 : 三层架构、MVC、MVP、MVVM
1. 三层架构 将整个业务应用划分为:界面层(User Interface layer, UIL).业务逻辑层(Business Logic Layer, BLL).数据访问层(Data acce ...
- C# 无法在发送 HTTP 标头之后进行重定向
在调试中发现错误如下: Response.Redirect引起的“无法在发送HTTP标头之后进行重定向” 跳转失败 解决方案如下: 使用js方法来跳转地址 const string url=" ...
- EF5+MVC4系列(7) 后台SelectListItem传值给前台显示Select下拉框;后台Action接收浏览器传值的4种方式; 后台Action向前台View视图传递数据的四种方式(ViewDate,TempDate,ViewBag,Model (实际是ViewDate.Model传值))
一:后台使用SelectListItem 传值给前台显示Select下拉框 我们先来看数据库的订单表,里面有3条订单,他们的用户id对应了 UserInfo用户表的数据,现在我们要做的是添加一个Ord ...
- redis集群【转】
一.环境 系统 CentOS7.0 64位最小化安装 redis1 172.16.1.46 6379,6380 redis2 172.16.1.47 6379,6380 ...