角色(roles)是ansible自1.2版本開始引入的新特性,用於層次性,結構化地組織playbook。roles能夠根據層次型結構自動裝載變數檔案、tasks以及handlers等。要使用roles只需要在playbook中使用include指令即可。簡單的說,roles就是通過分別將變數、檔案、任務、模組及處理器放置於單獨的目錄中、並可以便捷地include他們的一種機制。角色一般用於基於主機構建服務的場景中、但也可以是用於構建守護程序等場景中。
乙個專案的目錄結構
site.yml
webservers.yml
fooservers.yml
roles/
common/
files/
templates/
tasks/
handlers/
vars/
defaults/
meta/
webservers/
files/
templates/
tasks/
handlers/
vars/
defaults/
meta/
那麼乙個playbook就可以這樣寫
---
- hosts: webservers
roles:
- common
- webservers
這個 playbook 為乙個角色 『x』 指定了如下的行為:
如果 roles 目錄下有檔案不存在,這些檔案將被忽略。比如 roles 目錄下面缺少了 『vars/』 目錄,這也沒關係。
注意:你仍然可以在 playbook 中鬆散地列出 tasks,vars_files 以及 handlers,這種方式仍然可用,但 roles 是一種很好的具有組織性的功能特性,我們強烈建議使用它。如果你在 playbook 中同時使用 roles 和 tasks,vars_files 或者 handlers,roles 將優先執行。
而且,也可以使用引數化的 roles,這種方式通過新增變數來實現,比如:
---
- hosts: webservers
roles:
- common
當一些事情不需要頻繁去做時,也可以為 roles 設定觸發條件,像這樣:
---
- hosts: webservers
roles:
-
它的工作方式是:將條件子句應用到 role 中的每乙個 task 上。
也可以給role分配指定的標籤,比如
---
- hosts: webservers
roles:
-
如果 play 仍然包含有 『tasks』 section,這些 tasks 將在所有 roles 應用完成之後才被執行。
也可定義一些 tasks,讓它們在 roles 之前以及之後執行,可以這樣做:
---
- hosts: webservers
pre_tasks:
- shell: echo 'hello'
roles:
- tasks:
- shell: echo 'still busy'
post_tasks:
- shell: echo 'goodbye'
------做運維之前很矯情的小年輕----- ansible程式roles角色
劇本編寫完問題 1.目錄結構不夠規範 ok 2.編寫好的任務如何重複呼叫 3.服務端配置檔案改動,客戶端引數資訊也自動變化 4.彙總劇本中沒有顯示主機角色資訊 5.乙個劇本內容資訊過多,不容易進行閱讀,如何進行拆分 ok 第乙個歷程 規範目錄結構 cd etc ansible roles mkdir...
ansible通過角色功能roles實現nfs部署
實驗環境 centos7.6,2g記憶體,50g硬碟大小,虛擬機器服務端ip 172.16.1.61 客戶端ip 172.16.1.7,172.16.1.41,172.16.1.31 劇本編寫完問題 1.目錄結構不夠規範 2.編寫好的任務如何重複呼叫 3.服務端配置檔案改動,客戶端引數資訊也自動變化...
Ansible高階之roles詳解
迭 法 with items 迭代 當需要重複性執行的任務時,可以使用迭代機制 對迭代選項的引用,固定變數名為 item 要在task中使用with items給定要迭代的元素列表 列 式 字串 浮點使用字串 host webservs remote user root tasks name cre...