ansible 基础概念
1
2
3
4
5
6
7
8
9
10
11
|
inventory 主机源 playbooks 一组运行任务的命令集合 roles 角色 tasks 运行任务列表 handlers 运行任务后的触发动作 variables 定义的变量 |
ansible目录结构
使用Role组织任务,可以将复杂的Playbook剧本进行拆分,达到缩小文件,任务重用的作用
通常创建一个role的方法有两种:
命令mkdir和touch行手动创建
使用ansible-galaxy自动初始化一个role
ansible-galaxy init huazai007
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
|
[root@master huazai007] # tree . ├── defaults │ └── main.yml ├── files ├── handlers │ └── main.yml ├── meta │ └── main.yml ├── README.md ├── tasks │ └── main.yml ├── templates ├── tests │ ├── inventory │ └── test .yml └── vars └── main.yml |
defaults
必须存在的目录,存放默认的变量,模板文件中的变量就是引用自这里。defaults中的变量优先级最低,通常我们可以临时指定变量来进行覆盖
files
ansible中unarchive、copy等模块会自动来这里找文件,从而我们不必写绝对路径,只需写文件名
handlers
存放tasks中的notify指定的内容 任务执行改变后触发的动作。
handler也是task,但只task notify通知后才会触发,且多个task同时调用handler,只会触发一次
tasks
play中运行的任务命令,也就是执行的哪些ansible模块,如command,shell,service,yum等
templates
存放模板文件。template模块会将模板文件中的变量替换为实际值,然后覆盖到客户机指定路径上
Vars
定义的主机变量和主机组变量。若group_vars,host_vars,role/vars目录中定义了相同变量名,优先级group_vars < host_vars < vars。