Ansible中的jinjia2模板
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 结果显示
在受控主机查看是否产生文件
Ansible中的jinjia2模板相关推荐
- 【ansible4】Ansible中的变量及加密(jinjia模板使用等,图文详解)
Ansible中的变量及加密 一.变量的设定 一.变量命名规则 二.变量级别 三.变量设定和使用方式 二.JINJIA2模板 一.简介 二.使用方法 三.jinjia2模板的for循环,if用法 一. ...
- 7、Flask实战第7天:Jinjia2模板
Jinja2模板介绍和查找路径 在前面的章节中,视图只是直接返回文本,然而在实际生产环境中其实很少这样用,因为实际的页面大多带有样式和复杂逻辑的HTML代码,这可以让浏览器其渲染出非常漂亮的页面. 我 ...
- ansible中yaml语法应用
4.yaml语法应用 ansible的playbook编写是yaml语言编写,掌握yaml语法是编写playbook的必要条件,格式要求和Python相似,具体教程参考如下 yaml语言教程 附上一个 ...
- Ansible中的playbook详解
首先简单说明一下playbook,playbook是什么呢? 根本上说playbook和shell脚本没有任何的区别,playbook就像shell一样,也是把一堆的命令组合起来,然后加入对应条件判断 ...
- Ansible中的条件判断、handlers
1.有条件地运行任务 Ansible可使用conditionals在符合特定条件时执行任务或play. 所以我们可以利用条件来区分不同的受管主机,并根据它们所符合的条件来分配功能角色.Playbook ...
- Jinjia2模板引擎学习笔记
Jinjia2 模板引擎 形式最简单的Jinjia2模板引擎就是一个包含响应文本的文件. 1渲染模板 默认情况下,flask在应用中的templates子目录里面寻找模板. flask提供的rende ...
- freemarker中运算符_如何在Web应用系统表示层开发中应用Velocity模板技术
软件项目实训及课程设计指导--如何在Web应用系统表示层开发实现中应用Velocity模板技术 1.分离Web表示层的数据处理和展现逻辑的常见的应用技术 分离Web表示层的数据处理和展现逻辑是目前企业 ...
- 使用Ansible中的playbook
使用Ansible中的playbook 1 playbook的功能 2 YMAL 2.1 简介 2.2 特点 2.3 语法简介 2.4 YAML列表 2.5 YAML的字典 3 playbook执行命 ...
- SpringBoot 项目中使用velocity模板(转载)
(不要使用这种模板了,spring boot最新版已经不支持了.使用FreeMarker吧:http://blog.csdn.net/clementad/article/details/5194262 ...
- C++中的类模板详细讲述
一.类模板定义及实例化 1. 定义一个类模板: 1 template<class 模板参数表> 2 3 class 类名{ 4 5 // 类定义...... 6 7 }: 其中,templ ...
最新文章
- 深入浅出解释FFT(一)——用fft求频谱
- 为什么大多数同学宁愿吃学习的苦,也不愿意尝思考的痛?
- linux拒绝tcp链接,Linux 内核 TCP SACK 拒绝服务问题
- 戏说 Windows GDI (2)
- c#如何通过ftp上传文件_定时上传文件到ftp,如何使用工具定时上传文件到ftp
- Chillingo分享三款游戏图标的设计经验
- [Swift]LeetCode1023. 驼峰式匹配 | Camelcase Matching
- 天涯明月刀7月5号服务器维护,天涯明月刀7月5日更新_天刀7月5日版本改动_3DM网游...
- ESP32+0.96寸OLED
- MATLAB读取图片时报错:“错误使用 fopen 找不到文件,确保文件存在且路径” 的原因及解决方法
- 苹果屏保壁纸_Live Photo壁纸苹果版下载-Live Photo壁纸APP
- PayPal付款状态解释-中英文对照
- html网站运行天数代码,给网站加上运行时间天数统计代码
- 未转变者入侵服务器后台,未转变者(unturned)联机服务器创建方法
- Android开门动画和关门动画的实现
- 使用css中的white-space:pre-wrap;让html浏览器显示空白空格符
- JPA @PersistenceContext及@Transactional Annotation
- 基于java个人空间博客网站系统
- 【电路设计】AD中通过开窗来绘制不规则的焊盘
- 如何确定一笔用户的BTC转入记录