1、什么是jinjia2模板

jinjia模板是在ansible中建立的一类模板文件,通常以.j2结尾标识。模板的内容含有多个变量,使原本固定的某个文件配置,通过参数的改变,变得可以复用,提高了使用效率。

2、如何建立jinjia2模板

模板的组成:

模板一般由多个元素组成,包含:数据、变量、表达式

变量:通常在play中的vars中进行标识,

表达式为: {%    %} 表达式或者逻辑;{{}}最终向用户输出表达式的结果; {#  #}注释。

模板的示例:

##更改apacha配置文件为模板##更改端口
Port 22  ====> Port {{ ssh_port }}##更改root登录权限
PermitRootLogin yes   ====> PermitRootLogin {{ root_permit }}    ##变量可在play中设定和使用

3、jinjia2模板的使用

3.1 部署jinjia模板

##模板使用tasks- name: templatetemplate:src: /mnt/jinji-template.j2    dest: /mnt/dest-config-file.txt

3.2 循环控制

##循环控制## 1
{% for user in users %} ##user为变量,循环users内的所有内容{{ user }}
{% endfor %}## 2{% for myhost in groups['myhosts'] %} ##myhost为变量,循环groups.myhosts内的所有内容{{ host }}
{% endfor %}## 3 条件语句{% if true %} ##条件为真,才执行result{{result}}
{% endif %}

jinjia中的循环控制只能在模板中使用,不能再playbook中使用;

3.1 变量过滤器

##变量过滤{{ output | to_json }}    ##以json格式输出
{{ output | to_yaml }}{{ output | from_json }}   ##对json格式的字符串进行解析
{{ output | from_yaml }}

4、模板示例

4.1 建立模板

##建立模板1 This is the system {{ ansible_facts['fqdn'] }}2 This is a {{ ansible_facts ['distribution']}} version3 {{ ansible_facts ['distribution_version']}} system.4 System owner is {{ system_owner }}.

【说明】更多模板可在开源社区进行下载,这里只是进行一个简单的用例说明

4.2 模板调用

##调用模板1 ---2 - name: jinjia23   hosts: all4   vars:5     - system_owner: linux@linux.com  ##变量注册6   tasks:7     - name: template8       template:9         src: example.j2       ##模板调用10         dest: /mnt11         owner: root12         group: root13         mode: 0644

4.3 结果显示

在受控主机查看是否产生文件

图 1 结果显示

Ansible中的jinjia2模板相关推荐

  1. 【ansible4】Ansible中的变量及加密(jinjia模板使用等,图文详解)

    Ansible中的变量及加密 一.变量的设定 一.变量命名规则 二.变量级别 三.变量设定和使用方式 二.JINJIA2模板 一.简介 二.使用方法 三.jinjia2模板的for循环,if用法 一. ...

  2. 7、Flask实战第7天:Jinjia2模板

    Jinja2模板介绍和查找路径 在前面的章节中,视图只是直接返回文本,然而在实际生产环境中其实很少这样用,因为实际的页面大多带有样式和复杂逻辑的HTML代码,这可以让浏览器其渲染出非常漂亮的页面. 我 ...

  3. ansible中yaml语法应用

    4.yaml语法应用 ansible的playbook编写是yaml语言编写,掌握yaml语法是编写playbook的必要条件,格式要求和Python相似,具体教程参考如下 yaml语言教程 附上一个 ...

  4. Ansible中的playbook详解

    首先简单说明一下playbook,playbook是什么呢? 根本上说playbook和shell脚本没有任何的区别,playbook就像shell一样,也是把一堆的命令组合起来,然后加入对应条件判断 ...

  5. Ansible中的条件判断、handlers

    1.有条件地运行任务 Ansible可使用conditionals在符合特定条件时执行任务或play. 所以我们可以利用条件来区分不同的受管主机,并根据它们所符合的条件来分配功能角色.Playbook ...

  6. Jinjia2模板引擎学习笔记

    Jinjia2 模板引擎 形式最简单的Jinjia2模板引擎就是一个包含响应文本的文件. 1渲染模板 默认情况下,flask在应用中的templates子目录里面寻找模板. flask提供的rende ...

  7. freemarker中运算符_如何在Web应用系统表示层开发中应用Velocity模板技术

    软件项目实训及课程设计指导--如何在Web应用系统表示层开发实现中应用Velocity模板技术 1.分离Web表示层的数据处理和展现逻辑的常见的应用技术 分离Web表示层的数据处理和展现逻辑是目前企业 ...

  8. 使用Ansible中的playbook

    使用Ansible中的playbook 1 playbook的功能 2 YMAL 2.1 简介 2.2 特点 2.3 语法简介 2.4 YAML列表 2.5 YAML的字典 3 playbook执行命 ...

  9. SpringBoot 项目中使用velocity模板(转载)

    (不要使用这种模板了,spring boot最新版已经不支持了.使用FreeMarker吧:http://blog.csdn.net/clementad/article/details/5194262 ...

  10. C++中的类模板详细讲述

    一.类模板定义及实例化 1. 定义一个类模板: 1 template<class 模板参数表> 2 3 class 类名{ 4 5 // 类定义...... 6 7 }: 其中,templ ...

最新文章

  1. 深入浅出解释FFT(一)——用fft求频谱
  2. 为什么大多数同学宁愿吃学习的苦,也不愿意尝思考的痛?
  3. linux拒绝tcp链接,Linux 内核 TCP SACK 拒绝服务问题
  4. 戏说 Windows GDI (2)
  5. c#如何通过ftp上传文件_定时上传文件到ftp,如何使用工具定时上传文件到ftp
  6. Chillingo分享三款游戏图标的设计经验
  7. [Swift]LeetCode1023. 驼峰式匹配 | Camelcase Matching
  8. 天涯明月刀7月5号服务器维护,天涯明月刀7月5日更新_天刀7月5日版本改动_3DM网游...
  9. ESP32+0.96寸OLED
  10. MATLAB读取图片时报错:“错误使用 fopen 找不到文件,确保文件存在且路径” 的原因及解决方法
  11. 苹果屏保壁纸_Live Photo壁纸苹果版下载-Live Photo壁纸APP
  12. PayPal付款状态解释-中英文对照
  13. html网站运行天数代码,给网站加上运行时间天数统计代码
  14. 未转变者入侵服务器后台,未转变者(unturned)联机服务器创建方法
  15. Android开门动画和关门动画的实现
  16. 使用css中的white-space:pre-wrap;让html浏览器显示空白空格符
  17. JPA @PersistenceContext及@Transactional Annotation
  18. 基于java个人空间博客网站系统
  19. 【电路设计】AD中通过开窗来绘制不规则的焊盘
  20. 如何确定一笔用户的BTC转入记录

热门文章

  1. 数据抽取:增量与全量的区别
  2. Android多开/分身检测
  3. 服务器多开安卓系统,安卓云服务器能多开吗
  4. 微信跳一跳小游戏源码
  5. 网络模块封装-axio
  6. js replace 中文分号_关于js分号的问题?
  7. 感性与容性负载的区别及无功功率补偿
  8. echarts——饼图
  9. php页眉,phpword页眉页脚
  10. Mac 输入法自动切换,代码编辑器中文状态下使用英文标点