Ansible-Playbook-template模板详解
模板是一个文本文件,可以做为生成文件的模版,并且模板文件中还可嵌套jinja语法
jinja2语言网站:https://jinja.palletsprojects.com/en/2.11.x/
jinja2 语言使用字面量,有下面形式:
字符串:使用单引号或双引号
数字:整数,浮点数
列表:[item1, item2, ]
元组:(item1, item2, )
字典:{key1:value1, key2:value2, }
布尔型:true/false
算术运算:+, -, *, /, //, %, **
比较操作:==, !=, , =, , =
逻辑运算:and,or,not
流表达式:For,If,When
字面量:
表达式最简单的形式就是字面量。字面量表示诸如字符串和数值的 Python 对象。如“Hello World”
双引号或单引号中间的一切都是字符串。无论何时你需要在模板中使用一个字符串(比如函数调用、过滤器或只是包含或继承一个模板的参数),如42,42.23
数值可以为整数和浮点数。如果有小数点,则为浮点数,否则为整数。在 Python 里, 42 和 42.0 是不一样的
算术运算:
Jinja 允许用计算值。支持下面的运算符
+:把两个对象加到一起。通常对象是素质,但是如果两者是字符串或列表,你可以用这 种方式来衔接它们。无论如何这不是首选的连接字符串的方式!连接字符串见 ~ 运算符。 {{ 1 + 1 }} 等于 2
-:用第一个数减去第二个数。 {{ 3 2 }} 等于 1
/:对两个数做除法。返回值会是一个浮点数。 {{ 1 / 2 }} 等于 {{ 0.5 }}
//:对两个数做除法,返回整数商。 {{ 20 // 7 }} 等于 2
%:计算整数除法的余数。 {{ 11 % 7 }} 等于 4
:用右边的数乘左边的操作数。 {{ 2 2 }} 会返回 4 。也可以用于重 复一个字符串多次。 {{ ‘=’ 80 }} 会打印 80 个等号的横条/
*:取左操作数的右操作数次幂。 {{ 2**3 }} 会返回 8
比较操作符
== 比较两个对象是否相等
!= 比较两个对象是否不等
如果左边大于右边,返回 true
= 如果左边大于等于右边,返回 true
如果左边小于右边,返回 true
= 如果左边小于等于右边,返回 true
逻辑运算符
对于 if 语句,在 for 过滤或 if 表达式中,它可以用于联合多个表达式
and 如果左操作数和右操作数同为真,返回 true
or 如果左操作数和右操作数有一个为真,返回 true
not 对一个表达式取反
(expr)表达式组
true / false true 永远是 true ,而 false 始终是 false
template功能:可以根据和参考模块文件,动态生成相类似的配置文件
template文件必须存放于templates目录下,且命名为 .j2 结尾
yaml/yml 文件需和templates目录平级,目录结构如下示例:
./
├── temnginx.yml
└── templates
└── nginx.conf.j2
范例:利用template 同步nginx配置文件
#准备templates/nginx.conf.j2文件 vim temnginx.yml - hosts: websrvs remote_user: root tasks: - name: template config to remote hosts template: src=nginx.conf.j2 dest=/etc/nginx/nginx.conf ansible-playbook temnginx.yml
template变更替换
范例:
#修改文件nginx.conf.j2 mkdir templates vim templates/nginx.conf.j2 worker_processes {{ ansible_processor_vcpus }}; vim temnginx2.yml - hosts: websrvs remote_user: root tasks: - name: install nginx yum: name=nginx - name: template config to remote hosts template: src=nginx.conf.j2 dest=/etc/nginx/nginx.conf - name: start service service: name=nginx state=started enable=yes ansible-playbook temnginx2.yml
template算术运算
范例:
vim nginx.conf.j2 worker_processes {{ ansible_processor_vcpus**2 }}; worker_processes {{ ansible_processor_vcpus+2 }};
范例:
[root@ansible ansible]#vim templates/nginx.conf.j2 worker_processes {{ ansible_processor_vcpus**3 }}; [root@ansible ansible]#cat templnginx.yml - hosts: websrvs remote_user: root tasks: - name: install nginx yum: name=nginx - name: template config to remote hosts template: src=nginx.conf.j2 dest=/etc/nginx/nginx.conf notify: restart nginx - name: start service service: name=nginx state=started enabled=yes handlers: - name: restart nginx service: name=nginx state=restarted ansible-playbook templnginx.yml --limit 10.0.0.8
本文链接:http://www.yunweipai.com/34663.html
原创文章,作者:ItWorker,如若转载,请注明出处:https://blog.ytso.com/52631.html
Ansiblenginxpython相关文章
- 利用模板导出文件(一)之XLSTransformer导出excel文件
- SSTI模板注入
- 本站同款宁静致远(Quietlee)自媒体博客主题模板,夜间模式及强大的SEO效果-ZBlog主题
- C++11:可变参数模板/lambda表达式
- Premium URL Shortener 短网址系统的商业模板SaaS Theme v4.1
- 150+道测试高频面试题详解汇总(附用例模板)| 极客时间
- IntelliJ Idea设置(自定义的)类代码注释模板详解程序员
- Django加载静态网页模板详解程序员
- Java Web 模板代码生成器的设计与实现详解编程语言
- springMVC spring mvc velocity的模板引擎详解编程语言
- Bootstrap网站模板详解编程语言
- layui的模板嵌套if详解编程语言
- ABAP 批导套用模板详解编程语言
- 模板方法模式(模板方法设计模式)详解
- C++ uniform_real_distribution连续均匀分布类模板用法详解
- C++类模板(模板类)与友元详解
- C++ pair(STL pair)类模板的用法详解
- C++类模板用法详解
- t4 模板快速驱动 MSSQL 数据库开发(t4 模板 mssql)
- 如何设计组织Django模板?
- Discuz模板语句分析及知识技巧
- thinkPHP的Html模板标签使用方法
- .netGridView分页模板的实例代码
- asp.net使用npoi读取excel模板并导出下载详解
- 在PHP模板引擎smarty生成随机数的方法和math函数详解
- ThinkPHP模板引擎之导入资源文件方法详解
- php之Smarty模板使用方法示例详解
- C++类模板与模板类深入详解
- ThinkPHP跳转页success及error模板实例教程