怎麼在 Ansible Galaxy 分享 Roles?(上)

25. 怎麼在 Ansible Galaxy 分享 Roles?(上)

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

automate_with_ansible_practice-28.jpg

怎麼把 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 應具備什麼?

  1. README.md 裡提供清楚的說明文件。

  2. 在 Meta Data (meta/main.yml) 提供正確的資訊。

  3. 在 Meta Data (meta/main.yml) 寫入 Roles 的相依性 (Dependencies) 設定。

  4. 命名變數時,使用 Role 的名稱作為變數的前綴。

  5. 藉由 Travis CI 整合測試 Roles。(more)

就上面的例子而言,我們會用 setup.yml 來進行測試。

README.md

  1. 使用 ansible-galaxy init 指令建立 Role 時會一併產生的檔案之一。

  2. 使用 Markdown 格式編寫。

  3. 內容會顯示在 README 頁面裡:在 Galaxy 上看到的樣子與 GitHub 相同。

▲ 此為 ansible-galaxy init 產生的 READNE.md 範例。

Meta Data (meta/main.yml)

  1. 使用 ansible-galaxy init 指令建立 Role 時會一併產生的檔案之一。

  2. 使用 YAML 格式編寫。

  3. 內容會顯示在 Details 頁面裡面。

▲ 此為 chusiang.testlink role 的 meta/main.yml

Dependencies

  1. 若相依於其它的 role,請於 meta/main.ymldependencies 下方補上。

  2. 使用 YAML 格式編寫。

  3. 關於 Role Dependencies 可參考 Roles - Role Dependencies | Ansible Documentation 一文。

▲ 此為 chusiang.testlink role 的 meta/main.yml

以上就是要上傳到 Galaxy 前該特別留意的地方,下章凍仁將講解怎麼把 Roles 上傳至 Galaxy。

相關連結

Last updated

Was this helpful?