怎麼在 Ansible Galaxy 分享 Roles?(上)
25. 怎麼在 Ansible Galaxy 分享 Roles?(上)
在「23. 怎麼用 Roles 部署 LNMP 網頁應用程式?(下)」裡,我們寫好了部署 TestLink 的 Playbooks,接下來凍仁將分享上傳至 Galaxy 前的注意事項。

怎麼把 Playbooks 打包成 Roles?
範例 lab/ch23/testlink 其實就是個把 Playbooks 拆開的 Role,它真正的程式進入點為 tasks/main.yml,而 setup.yml 只是為了測試 Playbooks 的正確性而存在的。這也是為什麼凍仁會用 setup.yml include tasks/main.yml,再用 tasks/main.yml include 其它 tasks 的原因。
在「19. 如何維護大型的 Playbooks?」一文時,凍仁建議大家把 Playbooks 給拆開,為的就是要把它打包成 Roles。
此例的
requirements.yml,setup.yml只有在作為 Playbooks 用時才會被使用。
好的 Roles 應具備什麼?
在
README.md裡提供清楚的說明文件。在 Meta Data (
meta/main.yml) 提供正確的資訊。在 Meta Data (
meta/main.yml) 寫入 Roles 的相依性 (Dependencies) 設定。命名變數時,使用 Role 的名稱作為變數的前綴。
藉由 Travis CI 整合測試 Roles。(more)
就上面的例子而言,我們會用
setup.yml來進行測試。
README.md
使用
ansible-galaxy init指令建立 Role 時會一併產生的檔案之一。使用 Markdown 格式編寫。
內容會顯示在 README 頁面裡:在 Galaxy 上看到的樣子與 GitHub 相同。
▲ 此為 ansible-galaxy init 產生的 READNE.md 範例。
Meta Data (meta/main.yml)
meta/main.yml)使用
ansible-galaxy init指令建立 Role 時會一併產生的檔案之一。使用 YAML 格式編寫。
內容會顯示在 Details 頁面裡面。
▲ 此為 chusiang.testlink role 的 meta/main.yml。
Dependencies
若相依於其它的 role,請於
meta/main.yml的dependencies下方補上。使用 YAML 格式編寫。
關於 Role Dependencies 可參考 Roles - Role Dependencies | Ansible Documentation 一文。
▲ 此為 chusiang.testlink role 的 meta/main.yml。
以上就是要上傳到 Galaxy 前該特別留意的地方,下章凍仁將講解怎麼把 Roles 上傳至 Galaxy。
相關連結
Last updated
Was this helpful?