七种武器
1.第一种武器
ansible 命令,用于执行临时性的工作,必须掌握
2.第二种武器
ansible-doc是ansible模块的文档说明,针对每个模块都有详细的说明及应用案例介绍,功能和linux系统
man命令类似类似,必须掌握
3.第三种武器
ansible-console 是ansible为用户提供的交互式工具,用户可以在ansible-console虚拟出来的终端上像shell一样使用ansible
内置的各种命令,这为习惯使用shell交互式的用户提供了良好的使用体验
4.第四种武器
ansible-galaxy 从github上下载管理roles的一款工具,与python的pip类似
5.第五种武器
ansible-playbook是日常使用频率最高的命令,工作机制:通过读取编写好的playbook文件实现批量管理
可以理解为按一定条件组成的ansible任务急,必须掌握
6.第六种武器
ansible-vault 主要用于配置文件加密,如编写的playbook文件中包含敏感信息,不想其他人随意查看,可用它加密,解密这个文件
7.第七种武器
ansible-pull
ansible有两种工作模式pull/push ,默认使用push模式工作,pull和push工作模式机制刚好相反
适用场景:有大批量机器需要配置,即便使用高并发线程依旧要花费很多时间
通常在配置大批量机器的场景下使用,灵活性有欠缺,效率几乎可以无线提升,对运维人员的技术水平和前瞻性
规划有较高要求
二.JSON简介
JSON是javascript对象表示法,它是一种基于文本独立于语言的轻量级数据交换格式
JSON中的分隔符限于单引号" ' ",小括号 (), 中括号 [], 大括号{}, 冒号 : , 逗号,
JSON特性
json 是纯文本
json具有自我描述性(人类可读)
Jason 具有层级结构(值中存在值)
jason可通过javascript进行解析
jason语法规则
数据在名称/值对中
属于由逗号分割
大括号保存对象(键值对{key: value}
中括号保存数组[123,abc,发]
jason数据的书写格式是:名称/值对
{"诗人":
[{"李白":"诗仙","年代":"唐"},
{"杜甫":"诗圣","年代":"唐"},
]
}
YAML简介
yaml是一个高可读性,用来表达数据序列的格式
YAML(YAML Ain't Markup Language)
YAML参考了多种语言,如C语言,Python,Perl等并从XML,电子邮件的数据格式中获得灵感,Clark Evans在2001年首次发表了这种语言,
目前已有数种编程语言或脚本语言支持这种语言.
YAML基础语法
yaml的结构通过空格来展示
数组使用"- "来表示(注意-后面有空格)
键值对使用": " 来表示(: 后面有空格)
YAML使用一个固定的缩进风格表示数据层级结构关系
一般每个缩进级别由两个以上空格组成
#表示注释
注意:
不要使用tab,缩进是初学者容易出错的地方之一
同一层级缩进必须对齐
YAML写法
YAML的键值表示方法
采用冒号分割
:后必须有一个空格
YAML键值对例子
"诗人":
- "李白"
- "杜甫"
- "白居易"
"讲师"
-
"姓名": "nb"
"阶段": "1.0"
"喜好": "大铁锤"
-
"姓名": "wk"
"阶段": "1.5"
"喜好": "吃香蕉"
Jinja2过滤器 模板简介
Jinjia2是基于Python的模板引擎,包含变量和表达式两部分,两者在模板求职时会被替换为值,模板中还有标签,控制模板的逻辑
为什么要学习Jinjia2模板
因为playbook的模板使用Python的jinja2模块来处理
基本语法
模板的表达式都是包含在分隔符"{{ }}"内的
控制语句都是包含在分隔符"{% %}"内的
模板支持注释,都是包含在分隔符"{# #}"内,支持块注释
调用变量
{{ varname}}
计算
{{ 2+3 }}
判断
{{1 in [123] }}
控制语句
{% if name == '诗仙' %}
李白
{% elif name == '诗圣' %}
杜甫
{% endif %}} #结束
playbook
概念:playbook是ansible用于配置,部署和管理托管主机剧本,通过playbook的详细描述,执行其中的一系列tasks,
可以让远程主机达到预期状态.
-也可以说,playbook字面意思既剧本,现实中由演员按剧本表演,在ansible中由计算机进行安装,部署应用,提供对外服务,
以及组织计算机处理各种各样的事情.
为什么使用playbook
执行一些简单的任务,使用ad-hoc命令可以方便解决问题,但是
playbook语法格式
playbook由YAML语言编写,遵循YAML
playbook构成
hosts :定义将要执行playbook的远程主机组
vars:定义playbook
playbook执行结果
使用ansible-playbook