一、Jinja2简介
1.Jinja2是什么
Jinja2是基于Python的模板引擎,包含变量和表达式两部分,两者在模板求值时会被替换为值,模板中还有标签,控制模板的逻辑
playbook的模板使用Python的Jinja2模块来处理
2.Jinja2模板基本语法
模块的表达式都是包含在分隔符"{
{ }}"内的
控制语句都是包含在分隔符"{% %}"内的
模板支持注释,都是包含在分隔符"{# #}",支持块注释
调用变量
{
{varname}}
计算
{
{2+3}}
判断
{
{1 in [1,2,3]}}
3.Jinja2模板控制语句
{% if name == '诗仙' %}
李白
{% elif name == '诗圣' %}
杜甫
{% elif name == '诗鬼' %}
李贺
{% else %}
白居易
{% endif %}
{% if name == .... %}
...
{% elif name == '于谦' %}
{% for method in [抽烟,喝酒,烫头] %}
{
{do method}}
{% endfor %}
{% endif %}
4.Jinja2是什么过滤器
变量可以通过过滤器修改。过滤器与变量用管道符号(|)分割,也可以用圆括号传递可选参数,多个过滤器可以链式调用,前一个过滤器的输出会被作为后一个过滤器的输入
例如:加密一个字符串
{
{'astr'|password_hash('sha512')}}
二、playbook基础
1.playbook是什么
playbook是ansible用于配置,部署和管理托管主机剧本,通过playbook的详细描述,执行其中的一系列tasks,可以让远端主机达到预期状态
也可以说,playbook字面意思即剧本,现实中由演员按剧本表演,在ansible中由计算机进行安装,部署应用,提供对外服务,以及组织计算机处理各种各样的事情
2.为什么要使用playbook
执行一些简单的任务,使用ad-doc命令可以方便的解决问题,但有时一个设施过于复杂时,执行ad-doc命令是不合适的,最好使用playbook
playbook可以反复使用编写的代码,可以放到不同的机器上面,像函数一样,最大化的利用代码,在使用ansible的过程中,处理的大部分操作都是在编写playbook
3.playbook语法基础
playbook由YAML语言编写,遵循YAML标准
在同一行中,#之后的内容表示注释
统一列表中的元素应该保持相同的缩进
playbook由一个或多个play组成
play中hosts,variables,roles,tasks等对象的表示方法都是以:分隔
YAML他的文件开始行都应该是---,这是YAML格式的一部分,表名一个文件的开始
palybook构成:
hosts:定义将要执行playbook的远程主机组
vars:定义playbook运行时需要使用的变量
tasks:定义将要在远程主机上执行的任务列表
handlers:定义task执行完成以后需要调用的任务
playbook执行结果
使用ansible-playbook运行playbook文件,输出内容为JSON格式,由不同颜色组成便于识别
绿色代表执行成功
***代表系统状态发生改变
红色代表执行失败
[root@ansible40 ~]# vim ping.yml
---