假設我只有一個文件庫文件,其中包含一些我想保密的變量。有沒有辦法在Ansible中加載文件一次,然後全局訪問所有角色和所有任務?Ansible全局加密變量
基本上我不喜歡到處複製var_files,像這樣:
- hosts: webserver
var_files: encrypted.yml
roles: ....
- hosts: dbserver
var_files: encrypted.yml
roles: ....
假設我只有一個文件庫文件,其中包含一些我想保密的變量。有沒有辦法在Ansible中加載文件一次,然後全局訪問所有角色和所有任務?Ansible全局加密變量
基本上我不喜歡到處複製var_files,像這樣:
- hosts: webserver
var_files: encrypted.yml
roles: ....
- hosts: dbserver
var_files: encrypted.yml
roles: ....
號你在你的例子有什麼是文件中有兩個Ansible劇本並沒有更高的抽象水平在Ansible中(高於劇本)。
我真的不知道這個實際上工作!但我相信這只是一個普遍的良好做法,每個文件都有一個單獨的劇本。當你運行它,畢竟,你ansible-playbook
運行它,而不是ansible-playbooks
這不涉及到在一個文件中有兩個劇本,但如果你擔心安全問題,你應該考慮使用Ansible Vault(新的1.5)
您可以使用group_vars,這是根據主機所屬的組自動加載的可變文件。所有主機都是all
組的成員,因此您可以將公用變量放在group_vars/all
中。
group_vars目錄可以相對於(優先級降低):劇本,庫存文件或/ etc/ansible。
如果你想單獨加密和未加密常見變量,你可以使用它作爲一個目錄以及:
group_vars/all/settings.yml
的正常變量group_vars/all/encrypted.yml
爲拱形的。如果您不喜歡我選擇的文件名,請選擇您自己的文件夾,只要它位於all
組下即可,無關緊要。
示例文件在劇本中有兩個*播放*,而不是文件中的兩個劇本。在單個劇本中有多個劇本是完全合理的,例如,您可能需要設置Web服務器,然後再設置另一臺服務器(如示例中所示),其中兩臺服務器集合在一起提供特定的Web應用程序。 –