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. Nginx之rewrite使用

    rewrite regex replacement [flag];  flag=[break/last/redirect/permanent] ² regex 是正则表达式 ² replacement ...

  2. Python中的type(),isinstance,()dir(),的区别

    1.type() type(),获取一个变量的类型,返回值为:<class '类名'>,属于class类型2.isinstance() isinstance(),判断一个对象是否属于某种数 ...

  3. SpringBoot集成Nacos

    一.环境说明 1.CentOS7 2.Jdk1.8 3.Mysql5.7 4.Nacos1.3 5.SpringBoot2.3.1.RELEASE 6.Maven3.6 二.下载Nacos 1.Nac ...

  4. elasticsearch跨集群数据迁移

    写这篇文章,主要是目前公司要把ES从2.4.1升级到最新版本7.8,不过现在是7.9了,官方的文档:https://www.elastic.co/guide/en/elasticsearch/refe ...

  5. dict字典,以及字典的一些基本应用

    dict表示方法: dict={}或d=dict() 1.字典的增:d['元素名']='元素值'.或d.setdefault('key','value') 2.字典的删:d.pop(key).或del ...

  6. 记录一次OCR程序开发的尝试

    记录一次OCR程序开发的尝试 最近工作中涉及到一部分文档和纸质文档的校验工作,就想把纸质文件拍下来,用文字来互相校验.想到之前调用有道智云接口做了文档翻译.看了下OCR文字识别的API接口,有道提供了 ...

  7. [极客大挑战 2019]Havefun wp

    很少见的很简单的一道题 查看源代码 获得一段被注释的代码 直接?cat=dog即可得flag

  8. jmeter进行MySQL压测

    jmeter怎么对数据库进行压测 目录 jmeter怎么对数据库进行压测 点击测试计划,再点击"浏览",把JDBC驱动添加进来: 然后添加配置元件 再添加一个采样器:JDBC re ...

  9. 当try、catch中有return时,finally中的代码会执行么?

    今天,看到一个面试题: try-catch-finally 中,如果 catch 中 return 了,finally 还会执行吗? 我们用代码来验证下: public static void mai ...

  10. 想要搭建个论坛?Guide哥调研了100来个 Java 开源论坛系统,发现这 5 个最好用!

    大家好!我是 Guide 哥,Java 后端开发.一个会一点前端,喜欢烹饪的自由少年. 最近有点小忙.但是,由于前几天答应了一位读者自己会推荐一些开源的论坛系统,所以,昨晚就简单地熬了个夜,对比了很多 ...