Ansible之roles(角色)詳解

2021-09-04 11:35:18 字數 1760 閱讀 7097

角色(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...