一、playbook基础
1.1 ansible七种武器
1.1.1 ad-doc
– ansible 命令,用于执行临时性的工作.
1.1.2 ansible-doc
– ansible-doc 是 Ansible模块文档说明,针对每个模块
都有详细的用法说明及应用案例介绍,功能和Linux系
统man命令类似,必须掌握
1.1.3 ansible-console
– ansible-console 是 Ansible 为用户提供的一款交互
式工具,用户可以在 ansible-console 虚拟出来的终
端上像 Shell 一样使用 Ansible 内置的各种命令,
这为习惯于使用 Shell 交互方式的用户提供了良好的
使用体验。
1.1.4 ansible-galaxy
– ansible-galaxy 从 github 上下载管理 Roles 的一款
工具,与 python 的 pip 类似。
1.1.5 ansible-playbook
– ansible-playbook 是日常应用中使用频率最高的命令,
其工作机制是:通过读取预先编写好的 playbook 文
件实现批量管理。要实现的功能与命令 ansible 一样,
可以理解为按一定条件组成的 ansible 任务集。
1.1.6 ansible-vault
– ansible-vault 主要用于配置文件加密,如编写的
Playbook 配置文件中包含敏感信息,不希望其他人随
意查看, ansible-vault 可加密/解密这个配置文件
1.1.7 ansible-pull
– Ansible 有两种工作模式 pull/push ,默认使用 push
模式工作,pull 模式和通常使用的 push 模式工作机
理刚好相反
– 适用场景:有数量巨大的机器需要配置,即使使用高并发线程依旧要花费很多时间,
通常在配置大批量机器的场景下会使用
1.2 json简介
1.2.1 什么是 json
– json 是 JavaScript 对象表示法,它是一种基于文本,
独立于语言的轻量级数据交换格式。
– JSON中的分隔符限于单引号 ' 、小括号 ()、中括号
[ ]、大括号 { } 、冒号 : 和逗号 ,
1.2.2 json 特性
1. JSON 是纯文本
2.JSON 具有层级结构(值中存在值)
3.JSON 可通过 JavaScript 进行解析
1.2.3 json 语法规则
1.数据在名称/值对中
2.数据由逗号分隔
3.大括号保存对象
4.中括号保存数组
1.2.4 json的书写格式
1.JSON基本格式
– "键":"值"
“帅哥”:“李俊”
2. json 数组格式
{ "爱好":
["篮球", "台球", "旅游","撩妹"]
}
3.复合复杂类型
{ "dogs":
[ {"name":"laifu","color":"black"},
{"name":"ahuang","color":"yellow"},
{"name":"jiawang","color":"red"}
]
}
1.3 yaml简介
1.3.1 什么是yaml
yaml是一个可读性高,用来表达数据序列的格式
1.3.2 yaml 基础语法
– YAML的结构通过空格来展示
– 数组使用"- "来表示
– 键值对使用": "来表示
– YAML使用一个固定的缩进风格表示数据层级结构关系
– 一般每个缩进级别由两个以上空格组成
– # 表示注释
• 注意:
– 不要使用tab,缩进是容易出错的地方之一
– 同一层级缩进必须对齐
1.3.3 YAML的键值表示方法
1 采用冒号分隔
2 : 后面必须有一个空格
3. YAML键值对例子
“帅哥”: "李俊"
或
“帅哥”:
"李俊"
4.复杂YAML的键值对嵌套
“dogs”:
"name":"laifu"
或
“dogs”:
"name":
"laifu"
5.数组
["篮球", "台球", "旅游","撩妹"]
6.YAML 数组表示方法
– 使用一个短横杠加一个空格
– YAML 数组例子
- "篮球"
- "台球"
- "旅游"
- "撩妹"
7. 哈希数组复合表达式
"爱好":
- "篮球"
- "台球"
- "旅游"
- "撩妹"
1.4 jinja2模版简介
1.4.1 什么是jinja2
– Jinja2是基于python的模板引擎,包含 变量 和 表达
式两部分,这两者在模板求值的时候会被替换为值。
模板中还有标签,控制模板的逻辑。
– playbook 的模板使用 python 的 jinja2 模块来处理的
1.4.2 jinja2 模版基本语法
– 模板的表达式都是包含在分隔符 "{{ }}" 内的;
– 控制语句都是包含在分隔符 "{% %}" 内的;
– 另外,模板也支持注释,都是包含在分隔符 "{# #}"
内,支持块注释。
1.5 playbook
1.5.1 什么是playbook
– playbook 是 ansible 用于配置,部署,和管理托管主
机的剧本。通过 playbook 的详细描述,执行其中的一系
列 tasks,可以让远端主机达到预期的状态。
1.5.2 playbook语法
– playbook由 YAML 语言编写,遵循 YAML 标准
– 在同一行中,#之后的内容表示注释
– 同一个列表中的元素应该保持相同的缩进
– playbook 由一个或多个 play 组成
– play 中 hosts,variables,roles,tasks 等对象的表示
方法都是键值中间以 ": " 分隔表示
– 所有的 YAML 文件开始行都应该是 ---. 这是 YAML 格式的一部分,
表明一个文件的开始
1.5.3 playbook 构成
– Target: 定义将要执行 playbook 的远程主机组
– Variable: 定义 playbook 运行时需要使用的变量
– Tasks: 定义将要在远程主机上执行的任务列表
– Handler: 定义 task 执行完成以后需要调用的任务
1.5.4 Playbook执行结果
– 使用 ansible-playbook 运行playbook文件,得到输
出内容为 JSON 格式。并且由不同颜色组成,便于识
别。一般而言
– 绿色代表执行成功
– ***代表系统代表系统状态发生改变
– 红色代表执行失败
1.5.5 第一个playbook
1.ping所有主机的playbook
--- # 第一行,表示开始
- hosts: all
remote_user: root
tasks:
- ping:
~ ] #ansible-playbook myping.yml -f 5 # -f 并发进程数量,默认是 5
2.playbook参数说明:
2.1. hosts 行的内容是一个或多个组或主机的 patterns,以
逗号为分隔符
2.2 remote_user 就是账户名
2.3 tasks
– 每一个 play 包含了一个 task 列表(任务列表).
– 一个 task 在其所对应的所有主机上(通过 host
pattern 匹配的所有主机)执行完毕之后,下一个 task
才会执行.
1.5.6 编写playbook
• 编写 playbook 实现以下效果
– 安装 apache
– 修改 apache 监听的端口为 8080
– 为 apache 增加 ServerName 配置
– 设置默认主页 hello world
– 启动服务
– 设置开机自启动
注:要使用ansible-doc 模块名 查看帮助文档;
---------------------
作者:李俊的博客
来源:CSDN
原文:https://blog.csdn.net/qq_36441027/article/details/82116357
版权声明:本文为博主原创文章,转载请附上博文链接!