第一章:playBook介绍
playbook

playbook是由一个或多个”play”组成的列表
play的主要功能在于将预定义的一组主机,装扮成事先通过ansible中的task定义好的角色。
Task实际是调用ansible的一个module,将多个play组织在一个playbook中,
即可以让它们联合起来,按事先编排的机制执行预定义的动作
Playbook采用YAML语言编写
playbook图解

image.png
用户通过ansible命令直接调用yml语言写好的playbook,playbook由多条play组成
每条play都有一个任务(task)相对应的操作,然后调用模块modules,应用在主机清单上,通过ssh远程连接
从而控制远程主机或者网络设备
Playbook核心元素
Hosts 执行的远程主机列表(应用在哪些主机上)
Tasks 任务集
Variables 内置变量或自定义变量在playbook中调用
Templates模板 可替换模板文件中的变量并实现一些简单逻辑的文件
Handlers和notify结合使用,由特定条件触发的操作,满足条件方才执行,否则不执行


第二章:playBook实际使用目录结构说明(安装docker为例)

image.png

1.ini文件

image.png

2.yml文件

image.png
hosts: 执行的远程主机列表
remote_user: root用户连接主机
roles:对应roles文件夹下的用户文件夹


3.roles:


ansible自1.2版本引入的新特性,用于层次性、结构化地组织playbook.roles能够根据层次型结构自动装载变量文件、tasks以及handlers等。要使用roles只需要在playbook中使用include指令即可。
简单来讲,roles就是通过分别将变量、文件、任务、模板及处理器放置于单独的目录中,并可以便捷地include它们的一种机制。


3.1.roles目录结构


roles/
project/ (角色名称:init_docker)
tasks/
files/
vars/
templates/
handlers/
default/ 不常用
meta/ 不常用
image.png
/roles/init_docer/ :项目名称,有以下子目录
files/ :存放由copy或script模块等调用的文件
templates/:template模块查找所需要模板文件的目录
tasks/:定义task,role的基本元素,至少应该包含一个名为main.yml的文件;
其它的文件需要在此文件中通过include进行包含
handlers/:至少应该包含一个名为main.yml的文件;
其它的文件需要在此文件中通过include进行包含
vars/:定义变量,至少应该包含一个名为main.yml的文件;
其它的文件需要在此文件中通过include进行包含
meta/:定义当前角色的特殊设定及其依赖关系,至少应该包含一个名为main.yml 的文件,其它文件需在此文件中通过include进行包含
default/:设定默认变量时使用此目录中的main.yml文件

roles/example_role/files/ 所有文件,都将可存放在这里
roles/example_role/templates/ 所有模板都存放在这里
roles/example_role/tasks/main.yml: 主函数,包括在其中的所有任务将被执行
roles/example_role/handlers/main.yml:所有包括其中的 handlers 将被执行
roles/example_role/vars/main.yml: 所有包括在其中的变量将在roles中生效
roles/example_role/meta/main.yml: roles所有依赖将被正常登入


3.2.实际编写步骤(以dokcer安装为例)


1.ini文件定义主机ip与分组
image.png
2.编写调用yml文件
image.png
3.编写调用角色模块内的具体yml:
image.png
Roles -> int_docker -> tasks(大部分时间都是在编写tasks文件夹下的yml)
main.yml:
image.png
在main.yml 引入各个步骤的yml

备注:yml中会使用到ansible很多常见模块,具体见
https://blog.csdn.net/L835311324/article/details/103372270?spm=1001.2101.3001.6650.13&utm_medium=distribute.pc_relevant.none-task-blog-2~default~OPENSEARCH~default-13.no_search_link&depth_1-utm_source=distribute.pc_relevant.none-task-blog-2~default~OPENSEARCH~default-13.no_search_link


3.3执行编写好的playbook


将编写好的文件目录docker_inital上传到安装ansilbe的服务器上(管理机)
示例:
image.png
执行命令:ansible-playbook -i host_init.ini init_docker.yml

备注:管理机上:
需要安装ansible、python、ssh
安装连接的服务器:
不需要安装ansible,但需要安装python、ssh(需要修改配置允许root用户链接,默认root用户链接是关闭的)