天天看點

運維自動化-Ansible ( 四 )模闆templatesPlaybook中template 的 算術運算Playbook中template 的 for 循環Playbook中template 的 if 判斷roles

功能:根據子產品檔案動态生成對應的配置檔案

.j2檔案

yml檔案

生成的配置檔案

文法:

以執行個體來講:

運維自動化-Ansible ( 四 )模闆templatesPlaybook中template 的 算術運算Playbook中template 的 for 循環Playbook中template 的 if 判斷roles

再來一個多行多主機的模闆:

playbook檔案:

j2檔案:

用于層次性、結構化地組織playbook。 roles能夠根據層次型結構自動裝載變量檔案、tasks以及handlers等。

要使用roles隻需要在playbook中使用import_tasks指令即可。(include也可以用,官方明确聲明此指令将會淘汰)

簡單來講,roles就是通過分别将變量、檔案、任務、模闆及處理器放置于單獨的目錄中,并可以便捷地

include它們的一種機制。角色一般用于基于主機建構服務的場景中,但也可以是用于建構守護程序等場景中

 複雜場景:建議使用roles,代碼複用度高

還是拿一個執行個體來說:

如果要在一台初始化的主機上面安裝httpd服務,有以下過程:(這裡不考慮編譯安裝情況,假設yum腳本裡不會建立組和使用者)

把這些過程展現在ansible上面就是對應的具體的tasks,是以,将需要在roles/tasks/下面建立分别用于這些過程的獨立yml檔案

每個具體的小任務有了,那麼就得有一個主的配置檔案,預設劇本就會讀取它,進而确定其他任務的關系。

注意,檔案名必須是main.yml

最後,建立一個執行的playbook檔案,這個檔案與roles目錄是同級目錄。

運維自動化-Ansible ( 四 )模闆templatesPlaybook中template 的 算術運算Playbook中template 的 for 循環Playbook中template 的 if 判斷roles

至此,此時的目錄結構為:

為了更好的複用代碼,可以将一些公共的代碼集中在一個目錄裡,按需要在以後的roles進行調用

調用的時候,在tasks中引入即可

同理,在别的檔案中引入import_role也是可以的。

前面的章節針對tasks有tags,而roles中也可以運用此方法

基于條件判斷的roles的tags

當roles中有了tags後,執行時候加上-t tags名稱即可

第 (五) 篇屬于應用級别的。後續再更新了。

本文轉自 ljpwinxp 51CTO部落格,原文連結:http://blog.51cto.com/191226139/2069226

繼續閱讀