ansible学习

annan 2020-04-23

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
[ 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。

相关推荐