• ansible-playbook模板化(jinja2)


    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
  • 相关阅读:
    MVP架构模型的一些延伸笔记
    Google 新建议
    ComboBox控件“设置 DataSource 属性后无法修改项集合”的解决【转】
    2013年省市区/县数据SQL Server(SQL语句)
    MAC下搭建个人博客
    MAC MYSQ忘记密码重置方法
    Web设计中打开新页面或页面跳转的方法
    策划书模版
    网站书签
    Swift
  • 原文地址:https://www.cnblogs.com/scajy/p/11561496.html
Copyright © 2020-2023  润新知