星期五, 9月 22, 2017

Ansible 處理多主機不同密碼

用 Ansible 一陣子了,比較麻煩的地方是,主機不一定密碼都相同,簡單的方法當然是讓主機密碼都一樣,但這樣就降低了安全性。有沒有不需要改動密碼的方式呢?在網路上找了半天,找到這篇:ubuntu - Ansible: how to run a play with hosts with different passwords? - Stack Overflow ,裏面有個回應是建議使用 group_vars + ansible-vault + ansible_become_user/ansible_become_pass 來解決。
以下紀錄大致的步驟:
  1. 在 playbook 所在目錄或是 /etc/ansible 下建立 group_vars 資料夾 (以下簡稱 group_vars 資料夾)。
  2. 在 inventory 檔案裡,將相同密碼的主機編成一個群組,這裡假設群組名稱是 foo。
  3. 進入 group_vars 資料夾,用 ansible-vault create foo.yml ,這時候會詢問你 vault 的密碼,輸入完成以後,會開啟編輯器,請在裏面輸入
    ---
    ansible_become_user: "root"
    ansible_become_pass: "your_password"
  4. 存檔離開編輯器。
  5. 在輸入 ansible-playbook 或 ansible 指令時,帶 --ask-vault-pass 參數,也就是在執行時,會問你 vault 檔案的密碼,然後自動解密並讀入裏面的變數執行。
之後要編輯加密過的檔案,得用 ansible-vault edit foo.yml 才行。
參考資料:

沒有留言: