一、jinj2概述

    1.jinja2模板与Ansible有什么关系
        Ansible通常会使用Jlinja2模板来修改被管理主机的配置文件。例如给10台远程主机都装上httpd服务,但是要求每个服务器的端口不一样,如何解决?

    2.Ansible如何使用inja2模板

      使用ansible的jinja2模板,也就是template模块。该模块和copy模块一样,都是将文件复制到远端主机上去,但是区别在于template模块可以获取要复制的文件中变量的值,而copy则是原封不动的把文件内容复制过去。比如:针对不同的主机定义不同的变量,template会在将配置文件分发出去前读取变量到jinja2模板,然后分发到不同的被管理主机上。
    Ansible使用inja注意事项
    Ansible允许jinja2模板中使用条件判断和循环,但是jinja判断循环语法不允许在playbook中使用。注意:不是每个管理员都需要这个特性,但是有些时慎inja2模板能大大提高效率。

  二、基本使用

   1.循环与判断

          {% if EXPR %}...{% elif EXPR %}...{% endif%} 作为条件判断

        --------------------------------------判断语句
          {% if ansible_fqdn == "web01" %}
            echo "123"
          {% elif ansible_fqdn == "web02" %}
            echo "456"
          {% else %}
            echo "789"
          {% endif %}

        --------------------------------------循环语句
          {% for i in EXPR %}...{% endfor%} 作为循环表达式
          {% for i in range(1,10) %}
            server 172.16.1.{{i}};
          {% endfor %}

        {# COMMENT #} 表示注释

   2.jinja2 渲染 nginx_proxy配置文件   keepalived配置文件

      -------------------nginx_proxy配置文件

        [root@m01 project1]# cat kod_proxy.conf.j2
          upstream {{ server_name }} {
            {% for i in range(1,10) %}
              server 172.16.1.{{i}}:{{http_port}} weight=2;
            {% endfor %}
              }

          server {
            listen {{ http_port }};
            server_name {{ server_name }};
            location / {
              proxy_pass http://{{ server_name }};
              include proxy_params;
              }
            }

      -------------------keepalived配置文件

        [root@m01 project1]# cat keepalived.conf.j2
          global_defs {
            router_id {{ ansible_fqdn }}
          }

          vrrp_instance VI_1 {
          {% if ansible_fqdn == "lb01" %}
            state MASTER
            priority 150
          {% elif ansible_fqdn == "lb02" %}
            state BACKUP
            priority 100
          {% endif %}
        ###------------------相同点
          interface eth0
          virtual_router_id 50
          advert_int 1
          authentication {
            auth_type PASS
            auth_pass 1111
          }
          virtual_ipaddress {
            10.0.0.3
          }
        }

      ------------------------------判断变量是否有值
        - hosts: webservers
        gather_facts: no
        vars:
          PORT: 13306
        tasks:
          - name: Copy MySQL Configure
          template: src=./my.cnf.j2 dest=/tmp/my.cnf
    ---------------------------------------------
      [root@m01 project1]# cat my.cnf.j2
        {% if PORT %}
          bind-address=0.0.0.0:{{ PORT }}
        {% else %}
          bind-address=0.0.0.0:3306
        {% endif %}

 三、role的基本使用

    1.Ansible Roles目录结构       

       2.Ansible Roles依赖关系    

        

        3.roles的基本操作
        Roles基于一个已知的文件结构 tasks handlers templates .....

        Roles小技巧:
          1.创建roles目录结构,手动或使用ansible-galaxy init test roles
          2.编写roles的功能,也就是tasks。
          3.最后playbook引用roles编写好的tasks。

          [root@m01 project2]# mkdir memcached/{tasks,handlers,templates,vars,files} -pv

          [root@m01 project2]# mkdir {nginx,php-fpm}/{tasks,handlers,templates} -p

        galaxy(默认下载目录,相当与github)
          /root/.ansible/roles

        

ansible笔记第四章(jinj2的使用与role的使用)的更多相关文章

  1. Android群英传笔记——第四章:ListView使用技巧

    Android群英传笔记--第四章:ListView使用技巧 最近也是比较迷茫,但是有一点点还是要坚持的,就是学习了,最近离职了,今天也是继续温习第四章ListView,也拖了其实也挺久的了,list ...

  2. 《Linux内核设计与实现》第八周读书笔记——第四章 进程调度

    <Linux内核设计与实现>第八周读书笔记——第四章 进程调度 第4章 进程调度35 调度程序负责决定将哪个进程投入运行,何时运行以及运行多长时间,进程调度程序可看做在可运行态进程之间分配 ...

  3. 《Linux内核设计与实现》 第八周读书笔记 第四章 进程调度

    20135307 张嘉琪 第八周读书笔记 第四章 进程调度 调度程序负责决定将哪个进程投入运行,何时运行以及运行多长时间,进程调度程序可看做在可运行态进程之间分配有限的处理器时间资源的内核子系统.只有 ...

  4. 《Linux内核分析》读书笔记(四章)

    <Linux内核分析>读书笔记(四章) 标签(空格分隔): 20135328陈都 第四章 进程调度 调度程序负责决定将哪个进程投入运行,何时运行以及运行多长时间,进程调度程序可看做在可运行 ...

  5. 4 Visual Effects 视觉效果 读书笔记 第四章

    4   Visual Effects    视觉效果        读书笔记 第四章 Well, circles and ovals are good, but how about drawing r ...

  6. 鸟哥的Linux私房菜笔记第四章

    前言 对着<鸟哥的Linux私房菜-基础版>做了简化笔记.不想让自己知其然而不知其所然.所以写个博客让自己好好巩固一下,当然不可能把书中的内容全部写下来.在这里就简化一点把命令写下来. 让 ...

  7. 《Linux内核设计与实现》读书笔记 第四章 进程调度

    第四章进程调度 进程调度程序可看做在可运行太进程之间分配有限的处理器时间资源的内核子系统.调度程序是多任务操作系统的基础.通过调度程序的合理调度,系统资源才能最大限度地发挥作用,多进程才会有并发执行的 ...

  8. 《利用python进行数据分析》读书笔记--第四章 numpy基础:数组和矢量计算

    http://www.cnblogs.com/batteryhp/p/5000104.html 第四章 Numpy基础:数组和矢量计算 第一部分:numpy的ndarray:一种多维数组对象 实话说, ...

  9. Getting Started With Hazelcast 读书笔记(第四章)

    第四章 分而治之 在指导了如何进行基本使用之后,又再次进入理论模块. Hazelcast的基本策略就是切片分区,默认是271个片.内置一个 partition table记录那个节点是那个分区,并在h ...

  10. [Python学习笔记][第四章Python字符串]

    2016/1/28学习内容 第四章 Python字符串与正则表达式之字符串 编码规则 UTF-8 以1个字节表示英语字符(兼容ASCII),以3个字节表示中文及其他语言,UTF-8对全世界所有国家需要 ...

随机推荐

  1. flask服务器 + 协程 + 爬虫 + ui自动化

    公司有个爬取的需求,要求持续性爬取,需要永久性地挂载到目标网站上,每天爬一次里面的数据.数据有下载表格的,我通过ui自动化点击拿到数据:还有一部分数据是几乎所有的图片信息,信息量近百万,这部分用scr ...

  2. 利用反射和代理简单模拟mybatis实现简单的CRUD

    利用反射接口做java数据库操作 今天突发奇想,好像一些基本的CRUD操作路数都是一样的,又想到mybatis中的操作,便想着简单的模拟一下.随便写写,就当练习反射了. Dao接口类: 这里使用泛型, ...

  3. drag拖拽相关

    实际开发中会遇到一些和拖拽有关的问题 : 1.移动端不支持鼠标拖拽功能, 2.拖拽时会选中页面中的其他文字,解决办法: <div onSelectStart="return false ...

  4. ElasticSearch 实现分词全文检索 - ES、Kibana、IK安装

    目录 ElasticSearch 实现分词全文检索 - 概述 ElasticSearch 实现分词全文检索 - ES.Kibana.IK安装 ElasticSearch 实现分词全文检索 - Rest ...

  5. mysql转DM的日期函数转换

    背景: 项目要从mysql转换为DM数据库,发现很多日期函数在DM是不能用的. 所以大概总结下有哪些,以及转换思路. 正文: INTERVAL 表示日期间隔. 看做拼接符. DATE_ADD 表示日期 ...

  6. 回顾——Dom节点类型

    DOM 节点 在 HTML DOM 中,所有事物都是节点.DOM 是被视为节点树的 HTML. 根据 W3C 的 HTML DOM 标准,HTML 文档中的所有内容都是节点: 整个文档是一个文档节点 ...

  7. SQLServer 编程总结

    case的用途 case语句有四个关键字,缺一不可,分别是:case when then end,另外还有一个else.case 后面跟字段名(当在when后面出现字段名时,case里不能写出来),w ...

  8. charles证书安装-客户端证书

    1.iOS设置教程: 1)wifi中配置代理 2)浏览器中输入chls.pro/ssl,进行证书下载 3)证书下载成功后,设置--通用--描述文件–安装刚下载的证书 4)设置--通用--关于本机--证 ...

  9. C6657子卡模块设计资料:268-基于FMC接口的DSP TMS320C6657子卡模块

    基于FMC接口的DSP TMS320C6657子卡模块 一. 概述        FMC连接器是一种高速多pin的互连器件,广泛应用于板卡对接的设备中,特别是在xilinx公司的所有开发板中都使用.该 ...

  10. 关于head中代码被挤到body中的问题

    可能是使用php引用文件时出现了问题,文件格式不是utf-8,将其放在head后面就好