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

最新文章

  1. APM的飞行模式
  2. 权重和层叠规则决定了CSS样式优先级
  3. 树莓派版的家用NAS服务器
  4. hiho 光棍节
  5. HTML5 Web Speech API 结合Ext实现浏览器语音识别以及输入
  6. GitHub托管
  7. jQuery对象和Dom对象的区分以及之间转换
  8. 数据库创建&数据表创建
  9. 解决mysql不能远程登录的问题
  10. Java中对象的上转型对象
  11. Fatal error: Undefined class constant 'MYSQL_ATTR_USE_BUFFERED_QUERY' in D:\inetpub\vhosts\zenpty.com\httpdocs\includes\database
  12. Flink Program Guide (8) -- Working with State :Fault Tolerance(DataStream API编程指导 -- For Java)
  13. Angular - - angular.equals
  14. 利用PowerDesigner15在win7系统下对MySQL 进行反向工程(一)
  15. 二、 编写一个类,用两个栈实现队列,支持队列的基本操作(add,poll,peek)
  16. NoSQL、memcached介绍、安装memcached、查看memcached状态
  17. 面试HashMap之追命5连问
  18. [Linux]Linux read/write
  19. 强化学习系列之:Deep Q Network (DQN)
  20. Java 中使用MD5方法加密密码

热门文章

  1. 测试JsonAnalyzer解析Json的十一个测试用例
  2. Java8 :lambda表达式初体验
  3. [Java数据结构]LinkedHashMap,TreeMap
  4. SpringCloud Gateway高阶之Sentinel限流、熔断
  5. Nginx在mvvm模式中的使用
  6. JVM运行时数据区--纵向补充--对象的实例化内存布局与访问定位
  7. Fork Join 并发任务执行框架
  8. 《Java并发编程的艺术》笔记
  9. NX二次开发-使用NXOPEN C#手工搭建开发环境配置
  10. ubuntu下一键安装pptpd