ansible七种武器
1.ansible命令
- ansible命令,用于执行临时性的工作,必须掌握!!!
2.ansible-doc(重点!!!)
- ansible-doc 是ansible模块的文档说明,针对每个模块都有详细的说明及应用案例介绍,功能和Linux系统的man命令类似,必须掌握
3.ansible-console
- ansible-console是ansible为用户提供的交互式工具,用户可以在ansible-console虚拟出来的终端上像Shell一样使用ansible内置的各种命令,这为习惯使用Shell交互方式的用户提供了良好的使用体验.
4.ansible-galaxy
- ansible-galaxy从github上下载管理Roles的一款工具,与python的pip类似
5.ansible-playbook(重点!重点!重点!)
- ansible-playbook是日常应用中使用频率最高的命令,工作机制:通过读取先编写好的playbook文件实现批量管理,可以理解为按照一定条件组成的ansible任务集,必须掌握.
6.ansible-vault
- ansible-vault主要用于配置文件加密,如编写的playbook文件中包含敏感信息,不想其他人随意查看,可用它加密/加密这个文件
7.ansible-pull
- ansible有两种工作模式pull/push,默认使用push模式工作.pull和push工作模式机制刚好相反.
- 适用场景:有大批量机器需要配置,即便适用高并发线程依旧需要话费大量时间
- 通常在配置大批量机器的场景下使用,灵活性稍有欠缺,但效率几乎可以无线提升,对运维人员的技术水平和前瞻性规划有较高要求.
JSON简介
概述
- JSON是JavaScript对象表示法,它是一种基于文本,独立于语言的轻量级数据交换格式.
- Json中的分隔符限于单引号" ’ " , 小括号 " ( ) " , 中括号 " [ ] " , 大括号 " { } " , 冒号 " : " 和逗号 " , "
- Json特性:
- JSON是纯文本
- JSON具有"自我描述性"(人类可读)
- JSON具有层级结构(值中存在值)
- JSON可以通过JavaScript进行解析
语法规则
- 数据在名称/值对中,键值对
- 数据由逗号分隔
- 大括号保存对象
- 中括号保存数组
- 键值对书写格式: “姓名”:“大锤”
YAML简介
- 表达数据序列的格式
- YAML结构通过空格展示
- 数组使用 " - " 来表示,键值对使用 " : " 来表示
- 使用固定的缩进风格,一般每个缩进级别由两个以上空格组成
Jinja2模板简介
概念
Jinja2是基于Python的模板引擎,包含变量和表达式两部分,两者在模板求值时会被替换为值,模板中还有标签,控制模板的逻辑.
playbook的模板使用Python的Jinja2模块来处理.
基本用法
- 模板的表达式都是包含在分隔符 " {{ }} " 内的
- 控制语句都是包含在分隔符 " {% %} " 内的
- 模板支持注释,都是包含在分隔符 “{# #}” 内,支持块注释
- 调用变量 {{ varname }}
- 计算 {{ 2+3 }}
- 判断 {{ 1 in [1,2,3] }}
playbook
概念
- playbook是ansible用于配置,部署和管理托管主机剧本,通过playbook的详细描述,执行其中的一系列tasks,可以让远端主机达到预期状态.playbook字面意思即剧本,现实中由演员按照剧本表演,在ansible中由计算机进行安装,部署应用,提供对外服务,以及组织计算机处理各种各样的事情.
playbook语法基础
- playbook由YAML语言编写,遵循YAML标准
- 同一个列表中的元素应该保持相同的缩进
- playbook由一个或多个play组成
- play中hosts, variables, roles, tasks 等对象的表示方法都是键值对中间以" : " 分割表示(冒号+空格)
- YAML还有一点注意:它的文件开始行都应该是 — , 这是YAML格式的一部分,表名一个文件的开始.
---
- name: test ping
hosts: all
tasks:
- name: 第一次
ping:
playbook构成
- hosts: 定义将要执行playbook的远程主机组
– 主机的集合,定义要执行任务的主机 - vars: 定义playbook运行时需要使用的变量
- tasks: 定义将要在远程主机上执行的任务列表
– 命令的集合,每个play包含了一个task列表,一个task执行完毕之后,下一个task才会执行 - handlers: 定义task执行完成以后需要调用的任务
- playbook执行结果: 使用ansible-playbook运行playbook文件,输出内容为JSON格式,由不同颜色组成.绿色代表执行成功, *** 代表系统状态发生改变,红色代表执行失败.
---
- name: 添加用户
hosts: db
tasks:
- name: 添加用户 "{{ username }}"
user:
name: "{{ username }}"
group: users
password: "{{ '123' |password_hash('sha512') }}"