ansible-playbook
一.了解role结构
roles/project/ :项目名称,有以下子目录
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文件
二.常用模块
1.1 import_playbook
将子playbook导入到主playbook中
- import_playbook: /usr/local/infra/ansible/ansible-compose/compose.yml
vars:
pro: test
1.2 vars
变量的优先级从高到底:
- extra vars(在命令行中使用-e)优先级最高
- 在inventory中定义的连接变量(比如ansible_ssh_user)
- 大多数的其它变量(命令行转换,play中的变量,included中的变量,role中的变量等)
- inventory中定义的其它变量
- 系统发现的facts
- role默认变量。
1.3 include_role和import_role
- include_role(动态)
- import_role(静态)
- hosts: node1
tasks:
- include_role:
name: role_A
vars:
name: maurice
age: 100
- import_role:
name: role_B
相比较于roles语句,import_role和include_role的优点如下:
1.可以在task之间穿插导入某些role,这点是roles没有的特性。
2.更加灵活,可以通过when语句等判断是否导入。
include_vars和vars_files的差别:https://blog.51cto.com/14154700/2468386