ansible--jinja2在文件中的语法

Tree

├── f2.j2
├── jinja2file.yml

f2.j2

{% set list=['test','test1','test2'] %}
{% for i in list  %}
    {{i}}
{% endfor %}

{% set list1=['one','two','three'] %}
{% for i in list1 %} 
    {% if i=='one' %}
    ------------>{{i}}
    {% elif loop.index == 2 %}
    ------------>{{i}}
    {% else %}
    ------------>{{i}}
    {% endif %}
{% endfor %}

{% set dict={'key1':'value1'} %}
{% for key,value in dict.iteritems() %}
-------------->{{value}}
{% endfor %}

{% set dict1={'key1':{'key2':'value2'}} %}
{{ dict1['key1']['key2'] }}

jinja2file.yml

---
- hosts: all
  gather_facts: no
  tasks:
    - name: copy with jinja2 syntax
      template: src=/root/ansible-yaml/f2.j2 dest=/root/f2.j2

结果

    test
    test1
    test2

 
        ------------>one
     
        ------------>two
     
        ------------>three
    
-------------->value1

value2

总结

  • jinja中可以使用set定义临时変量也可以直接使用ansible其他地方定乂変量,关于jinja变量的引用都是采用{{変量名}}的方式,当然里面你可以根据変量名数据类型选择你想要的信息,比如dict={'key':'value'},直接{{dict}}会返回一个python dict数据,如果只需要key対应的值则需要{{dict['key']}}或者{{dict.get('key')}}其实这些都是python的标准用法,在jinja里面也可以直接使用, python的标准判断用法,在jinja里面也可以直接使用,python逻辑判断and or not在jinja的判断中也可以直接使用。

你可能感兴趣的:(ansible--jinja2在文件中的语法)