1. ansible-playbook模板化(jinja2)条件与循环
  1.1) jinja使用结构图

  

2. 编写jinja2的循环
  2.1) 编写jinja2模板

 1 [root@test-1 jinja2]# vim /ansible/jinja2/test.yaml
2 [root@test-1 jinja2]# cat /ansible/jinja2/test.yaml
3 ---
4 - hosts: web1
5 vars:
6 hello: ansible
7
8
9 tasks:
10 - template: src=f.j2 dest=/tmp/f.j2

2.2) 编写f.j2的jinja2的条件循环文件

1 [root@test-1 jinja2]# vim /ansible/jinja2/f.j2
2 [root@test-1 jinja2]# cat /ansible/jinja2/f.j2
3 {% set list=['one','two','three'] %}
4 {% for i in list %}
5 {{i}}
6 {% endfor %}

2.3) 语法检测

1 [root@test-1 jinja2]# ansible-playbook --syntax-check test.yaml
2
3 playbook: test.yaml

2.4) 执行jinja2的执行文件test.yaml

 1 [root@test-1 jinja2]# ansible-playbook test.yaml
2
3 PLAY [web1] *************************************************************************************************************************************************************
4
5 TASK [Gathering Facts] **************************************************************************************************************************************************
6 ok: [192.168.200.133]
7 ok: [192.168.200.132]
8
9 TASK [template] *********************************************************************************************************************************************************
10 changed: [192.168.200.133]
11 changed: [192.168.200.132]
12
13 PLAY RECAP **************************************************************************************************************************************************************
14 192.168.200.132 : ok=2 changed=1 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0
15 192.168.200.133 : ok=2 changed=1 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0

2.5) 验证是否创建成功

 1 [root@test-1 jinja2]# ansible web1 -m shell -a "ls /tmp/f.j2"
2 192.168.200.133 | CHANGED | rc=0 >>
3 /tmp/f.j2
4
5 192.168.200.132 | CHANGED | rc=0 >>
6 /tmp/f.j2
7
8 [root@test-1 jinja2]# ansible web1 -m shell -a "cat /tmp/f.j2"
9 192.168.200.133 | CHANGED | rc=0 >>
10 one
11 two
12 three
13
14 192.168.200.132 | CHANGED | rc=0 >>
15 one
16 two
17 three

3. 编写jinja2的循环加if判断
  3.1) 编写配置文件

 1 [root@test-1 jinja2]# vim /ansible/jinja2/test.yaml
2 [root@test-1 jinja2]# cat /ansible/jinja2/test.yaml
3 ---
4 - hosts: web1
5 vars:
6 hello: ansible
7
8
9 tasks:
10 - template: src=f.j2 dest=/tmp/f.j2

3.2) 编写f.j2的jinja2的条件循环加if判断文件

1 [root@test-1 jinja2]# vim  /ansible/jinja2/f.j2
2 [root@test-1 jinja2]# cat /ansible/jinja2/f.j2
3 {% set list=['one','two','three'] %}
4 {% for i in list %}
5 {% if i == 'two' %}
6 -> two
7 {% endif %}
8 {% endfor %}

3.3) 语法检测

1 [root@test-1 jinja2]# ansible-playbook --syntax-check test.yaml
2
3 playbook: test.yaml

3.4) 执行配置文件

 1 [root@test-1 jinja2]# ansible-playbook test.yaml
2
3 PLAY [web1] *************************************************************************************************************************************************************
4
5 TASK [Gathering Facts] **************************************************************************************************************************************************
6 ok: [192.168.200.133]
7 ok: [192.168.200.132]
8
9 TASK [template] *********************************************************************************************************************************************************
10 changed: [192.168.200.132]
11 changed: [192.168.200.133]
12
13 PLAY RECAP **************************************************************************************************************************************************************
14 192.168.200.132 : ok=2 changed=1 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0
15 192.168.200.133 : ok=2 changed=1 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0

3.5) 验证是否创建成功

1 [root@test-1 jinja2]# ansible web1 -m shell  -a "cat /tmp/f.j2"
2 192.168.200.132 | CHANGED | rc=0 >>
3 -> two
4
5 192.168.200.133 | CHANGED | rc=0 >>
6 -> two

4. 编写jinja2的循环加多分支if判断
  4.1) 编写配置文件

 1 [root@test-1 jinja2]# vim /ansible/jinja2/test.yaml
2 [root@test-1 jinja2]# cat /ansible/jinja2/test.yaml
3 ---
4 - hosts: web1
5 vars:
6 hello: ansible
7
8
9 tasks:
10 - template: src=f.j2 dest=/tmp/f.j2

4.2) 编写f.j2的jinja2的条件循环加,多分支if判断文件

 1 [root@test-1 jinja2]# vim /ansible/jinja2/f.j2
2 [root@test-1 jinja2]# cat /ansible/jinja2/f.j2
3 {% set list=['one','two','three'] %}
4 {% for i in list %}
5 {% if i == 'two' %}
6 -> 2
7 {% elif i == 'three' %}
8 -> 3
9 {% endif %}
10 {% endfor %}

4.3) 语法检测

1 [root@test-1 jinja2]# ansible-playbook --syntax-check test.yaml
2
3 playbook: test.yaml

4.4) 执行配置文件

 1 [root@test-1 jinja2]# ansible-playbook test.yaml
2
3 PLAY [web1] *************************************************************************************************************************************************************
4
5 TASK [Gathering Facts] **************************************************************************************************************************************************
6 ok: [192.168.200.133]
7 ok: [192.168.200.132]
8
9 TASK [template] *********************************************************************************************************************************************************
10 changed: [192.168.200.132]
11 changed: [192.168.200.133]
12
13 PLAY RECAP **************************************************************************************************************************************************************
14 192.168.200.132 : ok=2 changed=1 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0
15 192.168.200.133 : ok=2 changed=1 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0

4.5) 验证创建是否成功

1 [root@test-1 jinja2]# ansible web1 -m shell  -a "cat /tmp/f.j2"
2 192.168.200.133 | CHANGED | rc=0 >>
3 -> 2
4 -> 3
5
6 192.168.200.132 | CHANGED | rc=0 >>
7 -> 2
8 -> 3

ansible-playbook模板化(jinja2)的更多相关文章

  1. Ansible Playbook Conditionals

    通常,play的结果可能取决于变量的值,facts(有关远程系统的知识)或先前的任务结果. 在某些情况下,变量的值可能取决于其他变量. 此外,可以创建其他组,以根据主机是否与其他条件匹配来管理主机. ...

  2. Ansible Playbook Variables

    虽然自动化存在使得更容易使事情重复,但所有的系统可能不完全一样. 在某些系统上,您可能需要设置一些与其他操作略有不同的行为或配置. 此外,一些观察到的远程系统的行为或状态可能需要影响如何配置这些系统. ...

  3. (三)ansible playbook

    一,YAML语法 YAML的语法和其他高阶语言类似并且可以简单表达清单.散列表.标量等数据结构.(列表用横杆表示,键值对用冒号分割,键值对里又可以嵌套另外的键值对) YAML文件扩展名通常为.yaml ...

  4. Ansible playbook 批量修改服务器密码 先普通后root用户

    fsckzy   Ansible playbook 批量修改服务器密码 客户的需求:修改所有服务器密码,密码规则为Rfv5%+主机名后3位 背景:服务器有CentOS6.7,SuSE9.10.11,r ...

  5. 写Ansible playbook添加zabbix被监控的对象

    本主题达到的效果是能通过编写Ansible Playbook,创建zabbix主机组,把被监控的对象加入到zabbix监控系统中,同时链接到对象的模板. 1.准备工作 在zabbix服务器上面,我们需 ...

  6. Ansible playbook基础组件介绍

    本节内容: ansible playbook介绍 ansible playbook基础组件 playbook中使用变量 一.ansible playbook介绍 playbook是由一个或多个“pla ...

  7. ansible入门四(Ansible playbook基础组件介绍)

    本节内容: ansible playbook介绍 ansible playbook基础组件 playbook中使用变量 一.ansible playbook介绍 playbook是由一个或多个“pla ...

  8. ansible - playbook(剧组)

    目录 ansible - playbook(剧组) 常用命令 五种传参方式 常用元素详解 tags handlers template when 循环 嵌套循环 ansible - playbook( ...

  9. Ansible playbook API 开发 调用测试

    Ansible是Agentless的轻量级批量配置管理工具,由于出现的比较晚(13年)基于Ansible进行开发的相关文档较少,因此,这里通过一些小的实验,结合现有资料以及源码,探索一下Ansible ...

随机推荐

  1. Hive 高阶应用开发示例(一)

    Hive的一些常用的高阶开发 内容    1.开窗函数   2.行转列,列转行,多行转一行,一行转多行   3.分组: 增强型group   4.排序  5.关联 本次的内容: 内容1 和内容2,采用 ...

  2. Java中的String字符串及其常用方法

    字符串(String) 文章目录 字符串(String) 直接定义字符串 常用方法 字符串长度 toLowerCase() & toUpperCase()方法 trim()方法去除空格 判空 ...

  3. python3 venv

    介绍 venv 是什么? python3 自带的虚拟环境 为什么需要虚拟环境? 当服务器中需要搭建共存多个环境时(不同环境之间会有冲突) 比如说环境1:需要mongo:3.6版本 / 但是环境2:需要 ...

  4. leetcode刷题-77组合

    题目 给定两个整数 n 和 k,返回 1 ... n 中所有可能的 k 个数的组合. 示例: 输入: n = 4, k = 2输出:[ [2,4], [3,4], [2,3], [1,2], [1,3 ...

  5. Linux:nginx基础

    一..简单介绍 nginx时开源的www服务器,只能解析静态的网页(html,js,css等),具有静态小文件高并发特性. 可做web服务器.负载均衡.web cache(web缓存) 优点: 1.高 ...

  6. adb无线连接android手机进行调式,无需获得root权限

    利用adb无线连接android手机进行调式 无需获得root权限 转载来自CSDN  https://blog.csdn.net/lnking1992/article/details/5346518 ...

  7. [Java核心技术]五-继承(枚举类)

    ####Java枚举类型(enum) 枚举类型都是继承了Enum类(是一个抽象类)的一个类,我们可以向enum类中添加方法和变量等.编译再反编译可以看到枚举类型对应的类的内容. 每个枚举常量都对应一个 ...

  8. 常见重构技巧 - 5种方式去除多余的if else

    常见重构技巧 - 去除多余的if else 最为常见的是代码中使用很多的if/else,或者switch/case:如何重构呢?方法特别多,本文带你学习其中的技巧. 常见重构技巧 - 去除多余的if ...

  9. 测试软件—禅道BUG管理工具

    入禅 目录 入禅 1.禅道的基本使用 1.禅道的基本使用 admin(管理员) 部门:创建部门(需求部门,开发部门,测试部门,项目部门,产品部门) 组织:创建用户(产品经理,项目经理,开发人员,测试人 ...

  10. k8s健康检查(七)

    默认的健康检查 强大的自愈能力是 Kubernetes 这类容器编排引擎的一个重要特性.自愈的默认实现方式是自动重启发生故障的容器.除此之外,用户还可以利用 Liveness 和 Readiness ...