使用角色
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 還知道在角色友好位置尋找某些型別的檔案:
-
如果存在 roles / x / tasks / main.yml,則其中列出的任務將新增到遊戲中
-
如果存在 roles / x / handlers / main.yml,則其中列出的處理程式將新增到遊戲中
-
如果存在 roles / x / vars / main.yml,則其中列出的變數將新增到播放中
-
如果存在 roles / x / meta / main.yml,則其中列出的任何角色依賴項將新增到角色列表中(1.3 及更高版本)
-
任何副本,指令碼,模板或包含任務(在角色中)都可以引用 roles / x / {files,templates,tasks} /(dir 取決於任務)中的檔案,而無需相對或絕對地路徑它們