基本格式
[root@localhost /etc/ansible/roles]#tree
.
└── app
├── defaults
│ └── main.yml #可以设置默认变量。优先级最低
├── files
├── handlers
│ └── main.yml
├── meta
│ └── main.yml
├── tasks
│ └── main.yml
├── templates #存放模板。模板后缀为.j2
└── vars
└── main.yml #定义变量。优先级低于命令行-e指定变量方式。高于其他变量定义方式
上述目录并不都是必须的,但是至少要有一个tasks
playbook在调用角色时,会在同级的目录中寻找与被调用的角色同名的目录。也会在以下路径寻找
同级目录中的roles目录中
~/.ansible/roles
可以修改配置文件来设置角色搜索路径
cat /etc/ansible/ansible.cfg | grep "roles"
#roles_path = /etc/ansible/roles #多个路径用:分割
如果角色目录不在上述的路径中,可以使用绝对路径
在默认情况下,角色的变量是全局可见的。若要把变量的访问域变成角色私有,需要修改配置文件
#private_role_vars = yes
无法多次调用同一个角色。多次调用只会执行一次
[root@localhost /etc/ansible/roles]#tree
.
├── app
│ ├── defaults
│ │ └── main.yml
│ ├── handlers
│ │ └── main.yml
│ ├── meta
│ │ └── main.yml
│ ├── tasks
│ │ └── main.yml
│ └── vars
│ └── main.yml
├── app.yml
└── test
├── defaults
│ └── main.yml
└── tasks
└── main.yml
[root@localhost /etc/ansible/roles]#cat app.yml #playbook格式
- hosts: 192.168.91.139
remote_user: root
roles:
- role: app
- role: test