一、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. 浅显直白的Python深拷贝与浅拷贝区别说明

    一.可变数据类型与不可变数据类型 在开始说深拷贝与浅拷贝前,我们先来弄清楚,可变对象与不可变对象 总的来说,Python数据类型可分为可变数据类型与不可变数据类型 可变数据类型:在不改变对象所指向的地 ...

  2. SQL靶场过关

    background1基础部分 注入分类: 基于从服务器接收到的相应: 基于错误的SQL注入 联合查询的类型 堆叠查询注射 SQL盲注 布尔盲注 时间盲注 报错盲注 基于如何处理输入的SQL查询(数据 ...

  3. 第24周SDAI缓解能否预测远期RA骨破坏受抑制

    第24周SDAI缓解能否预测远期RA骨破坏受抑制 Hirano F, et al. EULAR 2015. Present ID:THU0085. 原文 译文 THU0085 SDAI REMISSI ...

  4. js(最新)手机号码 正则验证 - 代码篇

    现在手机号码,除了以11+.12+开头的没有,别的好像都有了! 代码如下: 方法一: function checkPhone(){ var phone = $(".phone"). ...

  5. PyOpenGL的安装与错误解决

    1. 引言 OpenGL,一般它被认为是一个API(Application Programming Interface, 应用程序编程接口),包含了一系列可以操作图形.图像的函数.然而,OpenGL本 ...

  6. LeetCode-911 在线选举

    来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/online-election 题目描述 给你两个整数数组 persons 和 times .在选 ...

  7. IDEA+java swing+MySQL配置

    1.建立一个java项目(不是空项目) 2.创建GUI Form(减少代码压力) 生成代码 出现了这个窗体 此时说明swing已经可用了 3.连接MySQL

  8. Qt实现简单的TCP协议(客户端的实现)

    1.QT提供了QTcpSocket类,可以直接实例化一个客户端.需要在pro文件中添加   QT += network 2.连接服务端 connect(connectbutton,SIGNAL(cli ...

  9. 好用的后台管理模板Bootstrap3

    推荐 好用的后台管理模板 参考链接:https://www.sucaiq.com/moban/1250.html 预览图

  10. windows的lib与dll

    mingw编译出来的动态库的导入库可以直接在vc中直接使用 静态库 lib .a 动态库 dll动态库导入库 lib .dll.a 静态链接库a) 静态链接库的类和函数不需要导出,就能够被其他库调用. ...