Ansible的七种武器 和JSON,YAML,Jinja2介绍

ansible的七种武器

第一种

-ansible 命令,用于执行临时性的工作,必须掌握

第二种

-ansible-doc是ansible模块的文档说明,针对每个模块都有详细的说明及应用案例介绍,功能和Linux系统的man类似,必须掌握

第三种

-ansible-console是ansible为用户提供的交互式工具,用户可以在ansible-console虚拟出来的终端上像shell一样使用ansible内置的各种命令,这为习惯使用shell交互方式的用户提供了良好的使用体验

第四种

-ansible-galaxy从github上下载管理Roles的一款工具,与python的pip类似

第五种

-ansbile-playbook是日常应用中使用频率最高的命令,工作机制:通过读取先编写好的playbook文件实现批量管理,可以理解为按一定条件组成的ansible任务集,必须掌握

第六种

-ansible-vault主要用于配置文件加密.如编写的playbook文件中包含敏感信息,不像其他人随意查看,可用它加密/解密这个文件

第七种

-ansible-pull
-ansible由两种工作模式pull/push ,默认使用push模式工作,pull和push 工作模式机制刚好相反
-使用场景:有大批量机器需要配置,即便使用高并发线程依旧要花费很多时间
-通常在配置大批量机器的场景下使用,灵活性稍有欠缺,但效率几乎可以无限提升,对运维人员的技术水平和前瞻性规划由较高要求.
===========================================================================================================================================JSON简介

JSON是什么

-JSON是JavaScript对象表示法,它是一种基于文本独立与语言的轻量级数据交换格式
-JSON中的分隔符限于单引号" '",小括号"()",中括号"[]",大括号"{}",冒号":“和逗号”,"

JSON特性
-JSON是纯文本
-JSON具有"自我描述性"(人类可读)
-JSON具有层级结构(值中存在值)
-JSON可通过JavaScript进行解析

JSON语法规则

-数据在名称/值对中
-数据由逗号分割
-大括号保存对象
-中括号保存数组

JSON数据的书写格式是: 名称/值对

-名称/值对包括字段名称(在双引号中),后面写一个冒号,然后是值,例如:“诗仙”:“李白”

JSON语法规则之数组

{ “诗人”:
[“李白”,“杜甫”,“白居易”,“李贺”]
}

复合复杂类型

{ “诗人”:
[{“李白”:“诗仙”,“年代”:“唐”},
{“杜甫”:“诗圣”,“年代”:“唐”},
{“白居易”:“诗魔”,“年代”:“唐”},
{“李贺”:“诗鬼”,“年代”:“唐”}
]
}

YAML简介

YAML是什么
-是一个可读性高,用来表达数据序列的格式
-YAML(YAML Ain’t Markup Language )
-YAML参考了多种语言,如:C语言、Python、Perl等,并从XML、电子邮件的数据格式中获得灵感,Clark Evans在2001年首次发表了这个语言,目前已有数种编程语言或脚本语言支持这种语言

YAML基础语法

-YAML的结构通过空格来展示
-数组使用"-“来表示
-键值对使用”:"来表示
-YAML使用一个固定的缩进风格表示数据层级结构关系
-一般每个缩进级别由两个以上空格组成
-#表示注释

  • 注意:
    -不要使用tab,缩进是初学者容易出错的地方之一
    -同一层级缩进必须对齐

YAML的键值表示方法

-采用冒号分隔
-:后面必须有一个空格
-YAML键值对例子

"诗仙":"李白""李白":
   "诗仙"

-复杂YAML的键值对嵌套

"诗人":
    "李白":"诗仙""诗人":
    "李白":
       "诗仙"

数组

["李白","杜甫","白居易","李贺"]

YAML数组表示方法
-使用一个短横杠加一个空格
-YAML数组例子

-"杜甫"
-"李白"
-"白居易"
-"李贺"

-哈希数组复合表达式

"诗人":
  -"李白"
  -"杜甫"
  -"白居易"
  -"李贺"

-高级复合表达式

 "诗人":
    - "李白":"诗仙"
      "年代":"唐"
    - "杜甫":"诗圣"
      "年代":"唐" 
    - "白居易":"诗魔"
      "年代":"唐"
    - "李贺":"诗鬼"
      "年代":"唐"

Jinja2模板简介

Jinja2是什么

-Jinja2是基于Python的模板引擎,包含变量和表达式两部分,两者在模板求值时,会被替换为值,模板中还有标签,控制模板的逻辑

为什么要学习Jinja2模板

-因为playbook的模板使用PythonDEJinja2模块来处理

Jinja2模板基本语法

-模板的表达式都是包含在分隔符"{{}}“内的
-控制语句都是包含在分隔符”{% %}“内的
-模板支持注释,都是包含在分隔符”{# #}"内,支持块注释
-调用变量
{{varname}} //查询内涵变量 ansible kibana -m setup
-计算
{{2+3}}
-判断
{{1 in [1,2,3]}}

Jinja2模板控制语句

{% if name == '诗仙'%}
李白
{% eif name == '诗仙'%}
杜甫
{% eif name == '诗仙'%}
白居易
{% else %}

李贺
{% endif %}

{% if name == ... ... %}
   ... ...
{% elif name == '于谦' %}
  {% for method in [抽烟,喝酒,烫头]%}
     {{do method}}
  {% endfor %}
   ... ...
{% endif %}

=====================================================================================================

Jinja2过滤器

-变量可以通过过滤器修改.过滤器与变量用管道符号(|)分割,也可以用圆括号传递可选参数,多个过滤器可以链式调用,前一个过滤器的输出会被作为后一个过滤器的输入

例如:
-加密-个字符串:{{‘astr’|password_hash(‘sha512’)}}
-过滤器这里不再一一列举,需要的可以查询在线文档
http://docs.jinkan.org/docs/jinja2/templates.html
#builtin-filters
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

你可能感兴趣的:(DevOps-Ansible)