前言
利用這裡講的include_roles與include_tasks搭配後面講的變數可以作到針對node的特性動態載入需要的roles/tasks
使用模組與時機
基本上include_roles與include_tasks是類似的模組,可以搭配簡單的when條件載入,也可以透過Jinja2的變數動態載入對應的roles或是tasks
這樣的描述比較難以理解,搭配一段隨意寫的範例說明一下
在playbook.yml中使用
1 | # 這是一個play book |
由上面的案例可以看得出來,include的tasks只要標清楚相對目錄位置,就可以引用不同地方的tasks來直接用,例子裡就是引用了common這個role裡面的一個子tasks-yay-update.yml
在roles/<role_name>/tasks/main.yml中載入
1 | # 在roles/<role>/tasks/main.yml中只能導入tasks, 下列案例是非OCI的VPS時才執行account變數對應的tasks.yml |
在這個範例裡面,由於playbook內已經定義了變數所以可以直接用"{{ }}"導引的變數去跑
結語
由上述來看,可以透過支解roles內的小tasks或是把獨立的小tasks放在固定的地方,然後透過include_tasks來重複利用就可以減少大量重複機能的source code編寫
而且也可以讓ansible的行為更有彈性
而且編寫上也不用落落長的寫一個檔案,debug的時候很累