1. jinja2的用法

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

2. {{}}的使用

变量:

[root@server4 ~]# cat test.j2 
westos python
test jinjia2
test {{testvar1}}

测试:

[root@server4 ~]# ansible testB -m template -e "testvar1=haha" -a "src=test.j2 dest=/opt/test"

[root@server3 redis]# cat /opt/test 
westos python
test jinjia2
test haha

表达式:

[root@server4 jjia]# cat test1.j2 
{{1==1}}
{{2!=2}}
{{2>1}}
{{3<4}}
{{2>=1}}

测试:

[root@server4 jjia]# ansible testB -m template -a "src=test1.j2 dest=/opt/test"
[root@server3 redis]# cat /opt/test 
True
False
True
True
True

逻辑运算:

[root@server4 jjia]# cat test2.j2
{{(2>1) or (3<2)}}
{{(2>1) or (3<4)}}
{{not true}}
{{not false}}

测试:

[root@server4 jjia]# ansible testB -m template -a "src=test2.j2 dest=/opt/test"


[root@server3 redis]# cat /opt/test 
True
True
False
True
[root@server4 jjia]# cat test2.j2
{{3+10}}
{{4-1}}
{{2**3}}
{{10/2}}

测试:

[root@server4 jjia]# ansible testB -m template -a "src=test2.j2 dest=/opt/test"

[root@server3 redis]# cat /opt/test 
13
3
8
5.0

操作列表:

[root@server4 jjia]# cat test2.j2
{{1 in [1,2,3,4]}}
{{1 not in [1,2,3,4]}}

测试:

[root@server4 jjia]# ansible testB -m template -a "src=test2.j2 dest=/opt/test"

[root@server3 redis]# cat /opt/test 
True
False

str、num、tuple、dic、boolean

[root@server4 jjia]# cat test3.j2 
### str
{{ 'testString' }}
{{ "testString" }}
### num
{{ 12 }}
{{ 12.5 }}
### list
{{ ['Aa','Bb','Cc'] }}
{{ ['Aa','Bb','Cc'][1] }}
{{ ['Aa','Bb','Cc'].1 }}
### tuple
{{ ('Aa','Bb','Cc') }}
{{ ('Aa','Bb','Cc').0 }}
{{ ('Aa','Bb','Cc')[0]}}
### dict
{{ {'name':'zjy','age':12} }}
{{ {'name':'zjy','age':12}.name }}
{{ {'name':'zjy','age':12}['name'] }}
### boolean
{{ True }}
{{ true }}
{{ False }}
{{ false }}

测试:

[root@server4 jjia]# ansible testB -m template -a "src=test3.j2 dest=/opt/test"

[root@server3 redis]# cat /opt/test 
### str
testString
testString
### num
12
12.5
### list
['Aa', 'Bb', 'Cc']
Bb
Bb
### tuple
('Aa', 'Bb', 'Cc')
Aa
Aa
### dict
{'age': 12, 'name': 'zjy'}
zjy
zjy
### boolean
True
True
False
False

3. 将变量的选取写道文件中,然后在playbook中定义变量并使用文件中选取的内容

[root@server4 jjia]# cat test4.j2 
{{ teststr }}
{{ testnum }}
{{ testlist[1] }}
{{ test1list[1] }}
{{ testdic['name'] }}

[root@server4 jjia]# cat temptest1.yml 
---
- hosts: testB
  remote_user: root
  gather_facts: no
  vars:
    teststr: 'hahaxixi'
    testnum: 18
    testlist: ['Aa','Bb','Cc']
    test1list:
    - aA
    - bB
    - cC
    testdic:
      name: zjy
      age: 18
  tasks:
  - template:
      src: /root/jjia/test4.j2
      dest: /opt/test

测试:

[root@server3 redis]# cat /opt/test 
hahaxixi
18
Bb
bB
zjy

4. 在jinjia2中使用过滤器

[root@server4 jjia]# cat test5.j2 
{{ 'abc'|upper }}  # 将abc变位大写

测试:

[root@server4 jjia]# ansible testB -m template -a "src=test5.j2 dest=/opt/test"

[root@server3 redis]# cat /opt/test 
ABC

5. 测试defined、exists、file、directory

[root@server4 jjia]# cat test6.j2 
{{ testvar1 is defined }}
{{ testvar1 is undefined }}
{{ '/opt' is exists }}
{{ '/opt' is file }}
{{ '/opt' is directory }}

测试:

[root@server4 jjia]# ansible testB -m template -e "testvar1=2" -a "src=test6.j2 dest=/opt/test"

[root@server3 redis]# cat /opt/test 
True
False
True
False
True
Logo

CSDN联合极客时间,共同打造面向开发者的精品内容学习社区,助力成长!

更多推荐