ansible jinja2模板概述

ansible允许jinja2模板中使用条件判断和循环,但是不允许在playbook中使用

ansible jinja2模板使用

基本语法

  1. {{ EXPR }}输出变量值,会输出自定义的变量值或facts
  2. 1)playbook文件使用template模块
  3. 2)模板文件里面变量使用{{名称}},比如{{PORT}}或使用facts

jinja2模板逻辑判断

  1. #循环表达式
  2. {% for i in EXPR %}
  3. {% endfor %}
  4. #条件判断
  5. {% if EXPR %}
  6. {% elif EXPR %}
  7. {% else %}
  8. {% ednif %}
  9. #注释
  10. {# COMMENT #}

jinja2示例

  • 编辑playbook
  1. [root@m01 ~]# vim jinja2.yml
  2. - hosts: web_group
  3. tasks:
  4. - name: Copy Template File
  5. template:
  6. src: ./motd.j2
  7. dest: /etc/motd
  • 准备motd.j2
  1. [root@m01 ~]# vim motd.j2
  2. Welcome to {{ ansible_fqdn }}
  3. This system total mem is : {{ ansible_memtotal_mb }} MB
  4. This system free mem is: {{ ansible_memfree_mb }} MB
  • 执行playbook

ansible jinja2管理nginx

使用playbook推送文件

1.编辑playbook

  1. [root@m01 ~]# vim lb.yml
  2. - hosts: lb_group
  3. vars:
  4. http_port: 80
  5. server_name: www.drz.com
  6. tasks:
  7. - name: copy
  8. template:
  9. src: ./www.drz.com.conf.j2
  10. dest: /etc/nginx/conf.d/www.drz.com.conf
  11. notify: reload nginx
  12. handlers:
  13. - name: reload nginx
  14. systemd:
  15. name: nginx
  16. state: reloaded

2.准备配置文件

  1. [root@m01 ~]# vim lb.yml
  2. - hosts: lb_group
  3. vars:
  4. http_port: 80
  5. server_name: www.drz.com
  6. tasks:
  7. - name: copy
  8. template:
  9. src: ./www.drz.com.conf.j2
  10. dest: /etc/nginx/conf.d/www.drz.com.conf
  11. notify: reload nginx
  12. handlers:
  13. - name: reload nginx
  14. systemd:
  15. name: nginx
  16. state: reloaded

ansible jinja2管理keepalived

keepalived原配

  1. #keepalived master 配置文件
  2. global_defs {
  3. router_id lb01
  4. }
  5. vrrp_instance VI_1 {
  6. state MASTER
  7. interface eth0
  8. virtual_router_id 50
  9. priority 150
  10. advert_int 1
  11. authentication {
  12. auth_type PASS
  13. auth_pass 1111
  14. }
  15. virtual_ipaddress {
  16. 10.0.0.3
  17. }
  18. }
  19. #keepalived backup配置文件
  20. global_defs {
  21. router_id lb02
  22. }
  23. vrrp_instance VI_1 {
  24. state BACKUP
  25. interface eth0
  26. virtual_router_id 50
  27. priority 100
  28. advert_int 1
  29. authentication {
  30. auth_type PASS
  31. auth_pass 1111
  32. }
  33. virtual_ipaddress {
  34. 10.0.0.3
  35. }
  36. }

推送keepalived配置文件

  1. [root@m01 ~]# vim keepalived.yml
  2. - hosts: lb_group
  3. tasks:
  4. - name: copy file
  5. template:
  6. src: ./keepalived.j2
  7. dest: /etc/keepalived/keepalived.conf
  8. notify: restart keepalived
  9. handlers:
  10. - name: restart keepalived
  11. systemd:
  12. name: keepalived
  13. state: restarted

准备keepalived配置文件

  1. [root@m01 ~]# vim keepalived.j2
  2. global_defs {
  3. router_id {{ ansible_fqdn }}
  4. }
  5. vrrp_instance VI_1 {
  6. {% if ansible_fqdn == "lb01" %}
  7. state MASTER
  8. priority 150
  9. {% else %}
  10. state BACKUP
  11. priority 100
  12. {% endif %}
  13. interface eth0
  14. virtual_router_id 50
  15. advert_int 1
  16. authentication {
  17. auth_type PASS
  18. auth_pass 1111
  19. }
  20. virtual_ipaddress {
  21. 10.0.0.3
  22. }
  23. }

ansible jinja2模板概述的更多相关文章

  1. Ansible Jinja2 模板使用

    Ansible Jinja2 模板使用.语法与使用案例 主机规划 添加用户账号 说明: 1. 运维人员使用的登录账号: 2. 所有的业务都放在 /app/ 下「yun用户的家目录」,避免业务数据乱放: ...

  2. 5.Ansible Jinja2 模板

    1.jinja2渲染NginxProxy配置文件 jinja2 房屋建筑设计固定的 jinja2模板与Ansible关系 Ansible如何使用jinja2模板 template模块 拷贝文件? te ...

  3. Ansible Jinja2 模板

    1.jinja2渲染NginxProxy配置文件 jinja2 房屋建筑设计固定的? jinja2模板与Ansible关系 Ansible如何使用jinja2模板 template模块 拷贝文件? t ...

  4. Jinja2模板概述

    例子一 循环语句 [root@m01 ~]# cat upstream.conf upstream web { {% for i in range(1,11) %} server 172.16.1.{ ...

  5. Django---Http协议简述和原理,HTTP请求码,HTTP请求格式和响应格式(重点),Django的安装与使用,Django项目的创建和运行(cmd和pycharm两种模式),Django的基础文件配置,Web框架的本质,服务器程序和应用程序(wsgiref服务端模块,jinja2模板渲染模块)的使用

    Django---Http协议简述和原理,HTTP请求码,HTTP请求格式和响应格式(重点),Django的安装与使用,Django项目的创建和运行(cmd和pycharm两种模式),Django的基 ...

  6. Ansible --05 ansible jinja2

    ansible jinja2 什么是jinjia2模板 jinjia2是Python的全功能模块引擎 Jinjia2与Ansible的关系 Ansible通常会使用jinjia2模板来修改被管理主机的 ...

  7. Ansible_使用jinja2模板部署自定义文件

    一.jinja2简介 1.jinja2模板 1️⃣:Ansible将jinja2模板系统用于模板文件,Ansible还使用jinja2语法来引用playbook中的变量 2️⃣:变量和逻辑表达式置于标 ...

  8. Flask 框架下 Jinja2 模板引擎高层 API 类——Environment

    Environment 类版本: 本文所描述的 Environment 类对应于 Jinja2-2.7 版本.   Environment 类功能: Environment 是 Jinja2 中的一个 ...

  9. Python框架学习之Flask中的Jinja2模板

    前面也提到过在Flask中最核心的两个组件是Werkzeug和Jinja2模板.其中Werkzeug在前一节已经详细说明了.现在这一节主要是来谈谈Jinja2模板. 一.为什么需要引入模板: 在进行软 ...

随机推荐

  1. RF之简介

    robot framework 是一个通用型的自动测试框架 - 自动测试用例的实现方式 - 自动测试用例的开发支持 :  IDE.库 - 和用例管理系统的集成 - 测试执行:相关测试套件和测试用例的执 ...

  2. idea常用快捷键大全

    Idea常用快捷键大全,拿小本本记下来,忘记了可以方便查找. 编写代码 Ctrl+Shift + Enter,语句完成. “!”,否定完成,输入表达式时按 “!”键. Ctrl+E,最近的文件. Ct ...

  3. Grafana = 可视化分析 + 监控告警

    Grafana是一个完美地分析和监控的开发平台 可以把Grafana理解为一个可视化面板(Dashboard),其实Kibana也是一个分析和可视化平台,只不过在大家的日常使用中Kibana是跟着Lo ...

  4. WPF之实现控件内容拖动

    以下分别记录label.listbox.treeview三个控件的拖动示例: 1.对被拖动控件,实现拖动事件,主要是通过各种鼠标事件,实现DragDrop.DoDragDrop方法. 2.对于需要拖动 ...

  5. 阿里iconfont的使用

    1.找到阿里巴巴图标库 2.找到图标 3.搜索你想要的图标 4.将图标添加到购物车 5.点击右上角的购物车按钮,我这里添加了两个. 6.提示你登陆,不需要花钱,找其中一个账号登陆一下就行了 假如你使用 ...

  6. GO汇总

    1.基础 GO语言介绍以及开发环境配置 Go-包 Go-数据类型以及变量,常量 Go-获取变量数据类型 GO-数组与切片 GO-切片拷贝以及赋值 Go-函数 Go-闭包 GO-逻辑判断(if,else ...

  7. JavaWeb学习——Servlet相关的接口和类

    JavaWeb学习——Servlet相关的接口和类 摘要:本文主要学习了Servlet相关的接口和类. Servlet的接口和类 三种方式 实现Servlet有三种方式: 实现javax.servle ...

  8. springcloud vue.js 微服务分布式 前后分离 集成代码生成器 shiro权限 activiti工作流

    1.代码生成器: [正反双向](单表.主表.明细表.树形表,快速开发利器)freemaker模版技术 ,0个代码不用写,生成完整的一个模块,带页面.建表sql脚本.处理类.service等完整模块2. ...

  9. Git实战指南----跟着haibiscuit学Git(第九篇)

    笔名:  haibiscuit 博客园: https://www.cnblogs.com/haibiscuit/ Git地址: https://github.com/haibiscuit?tab=re ...

  10. RunLoop 和 autoreleasepool

    RunLoop 和 autoreleasepool RunLoop和线程的一一对应的,对应的方式是以key-value的方式保存在一个全局字典中 主线程的RunLoop会在初始化全局字典时创建 子线程 ...