配置 ansible.cfg
Last updated
Was this helpful?
Last updated
Was this helpful?
我們在上一個章節中在 Ansible 預設查找的路徑下建立了我們的第一個 role 並成功執行部署。然而,若今天我們希望 Ansible 根據我們自己定義的路徑來執行 role 呢?以筆者自身的經驗而言,根據 role 屬性的不同,可能有些 role 我們認為較為是通用的就會放在 public repo 上,但有些 roles 則因為安全性的考量,所以需要放在 private repo 裡。我們並不希望將這兩類的 roles 全部丟到同一個路徑下,這樣既不好管理也容易產生混淆。那在這樣的情況下,我們有辦法透過任何方式來解決這個問題嗎?
答案顯然是有的。在 Ansible 中,我們可以透過配置 Ansible 的組態檔案 - ,來指定 Ansible 要去哪裡查找 。
在工作目錄新增一個檔案 ansible.cfg
並加入以下內容:
如此一來,Ansible 除了預設查找路徑外,還會依此指定路徑去找到我們 role 的存放位置。假設有多個 role 路徑需要設定,我們還可以透過 :
來串接不同 role 的存放路徑,比如:
若點進官方配置文件的,可以發現除了 roles_path
之外還有一大堆參數可以依據使用者的需求進行非常有彈性的配置。還記得我們在之前的章節中,必須要在運行 ansible-playbook
的時候同時加上 -i
以及 --private-key
的參數來告訴 Ansible 我們的 inventory file 跟 SSH 金鑰的存放位置嗎?我們並不想要在每次運行都要輸入這一大串資料,因此我們可以在 ansible.cfg 裡定義 inventory
跟 private_key_file
來方便我們管理這類資訊:
定義完成後,在未來我們只需要運行 ansible-playbook playbook.yml
簡單一行指令就可以輕鬆使用 Ansible 來進行部署拉!
其中值得注意的是,在這個示範裡面我是將 ansible.cfg
這個配置檔案置於我們工作資料夾之下,目前具體資料夾結構如下:
但從官方文件中,我們可以發現除了將配置檔案放置於工作目錄底下外,還有其他幾種不同的配置方式:
設置環境變量 (ANSIBLE_CONFIG)
置於當前目錄下的 ansible.cfg
(這次範例中使用的方法)
置於根目錄下的 .ansible.cfg
置於 /etc/ansible/
下的 ansible.cfg
若我們同時分別有不同的配置文件存在在系統中,Ansible 會依照上述順序逐一查找文件,若找到其中一個,就會依其設定進行配置,並不再繼續查找。