ansible 使用角色
示例
Ansible使用角色的概念来更好地允许模块化代码并避免重复自己。
角色只是Ansible知道从何处加载vars文件,任务和处理程序的文件夹结构。一个例子可能看起来像这样:
apache/
├── defaults
│ └── main.yml
├── files
│ ├── mod-pagespeed-stable_current_i386.deb
│ ├── mod-pagespeed-stable_current_i386.rpm
│ ├── mod-pagespeed-stable_current_amd64.deb
| └── mod-pagespeed-stable_current_x86_64.rpm
├── tasks
│ ├── debian.yml
│ ├── main.yml
│ └── redhat.yml
├── templates
│ ├── httpd.conf.j2
│ └── sites-available
│ └── virthualhost.conf.j2
└── vars
├── debian
└── redhat然后,您可以将该角色用于基本的剧本,如下所示:
- hosts: webservers
roles:
- apache针对此剧本运行Ansible时,它将针对组中的所有主机并针对该主机webservers运行apache上面定义的角色,自动为该角色加载任何默认变量并运行中包含的所有任务tasks/main.yml。Ansible还知道要在角色友好位置查找某些类型的文件:
如果存在role/x/tasks/main.yml,则其中列出的任务将被添加到剧本中
如果存在role/x/handlers/main.yml,则其中列出的处理程序将添加到播放中
如果Roles/x/vars/main.yml存在,则其中列出的变量将添加到播放中
如果存在role/x/meta/main.yml,则其中列出的所有角色依赖项都将添加到角色列表中(1.3及更高版本)
(在角色中)任何副本,脚本,模板或包含任务都可以引用role/x/{文件,模板,任务}/(目录取决于任务)中的文件,而不必相对或绝对地进行路径