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