ansible:jinja2模板、{{ }}的使用
目录标题1. jinja2的用法2. {{}}的使用3. 将变量的选取写道文件中,然后在playbook中定义变量并使用文件中选取的内容4. 在jinjia2中使用过滤器5. 测试defined、exists、file、directory1. jinja2的用法2. {{}}的使用变量:[root@server4 ~]# cat test.j2westos pythonte...
·
目录标题
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
更多推荐
已为社区贡献1条内容
所有评论(0)