ansible 加載relative path role的方式

對ansible還不是很熟, 大概知道可以把ansible scripts寫得很模組化, 但就遇到一個問題是如何加載我們剛寫的task role呢?

在ansible 中, 預設的 role 的讀取路徑會是如下:

  • ${playbook_dir}/roles/...
  • ${HOME}/.ansible/roles/...
  • /usr/share/ansible/roles/...
  • /etc/ansible/roles/...
  • ${playbook_dir}/...

如果在上面的路徑下, 都找不到對應的role時, ansible就會無法執行對應的playbook…

但除了上面的role搜尋路徑以外, 其實我們可以在paybook中直接透過相對路徑去指定role的對應位址.

舉例來說:

我的playbook 資料夾結構為

my-playbook/
    roles/
        my-role
    playbook1
        /main.yml

main.yml 的內容中, 可以透過相對路徑來指定我另外撰寫的 my-role

- hosts: all
  vars:
    foo: "bar"
  roles:
    - role: "../roles/my-role"

Reference: