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 one11 two12 three13 14 192.168.200.132 | CHANGED | rc=0 >>15 one16 two17 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 -> two7 {% 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 -> two4 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 -> 24 -> 35 6 192.168.200.132 | CHANGED | rc=0 >>7 -> 28 -> 3