2014-01-09 111 views
5

因此,現在的一種常見做法是將連接字符串作爲環境變量以避免將其置於文件中。這一切都很好,但我不確定如何在嘗試使用Salt/Ansible或Chef/Puppet等配置管理工具設置連續部署工作流程時使此工作成爲可能。如何管理用於連續部署的環境變量

具體來說,我有使用上述配置管理工具在環境中的下列問題:

  1. 你在哪裏存儲連接字符串/密碼/鍵從代碼庫分開?
    • 你是否將這些項目保存在某種類型的代碼回購(git等)中?
    • 您是否使用內置於您的工具中的某種結構?
  2. 你如何保持這些相同的物品的安全?
  3. 你跟蹤這些項目的變化/備份嗎?如果是這樣,如何?

回答

2

在廚師可以

  1. 存儲密碼或令牌API在任何encrypted data bags或使用chef-vault。然後在廚師進行配置時使用解密(使用共享祕密對加密數據包進行加密,使用Chef客戶端的現有PKI的廚師 - 保險庫)。
  2. 設置環境變量時調用外部軟件使用environment參數的例如。 execute resource
  3. 不確定,在這裏寫什麼 - 我會說你沒有真正管理它們。這樣,您只爲需要它的命令設置變量,例如,爲整個廚師跑。
+0

加密數據包是要走的路。 –

+1

我想說廚師庫是要走的路;-) – StephenKing

0

對於木偶,首選的方法可能是將祕密存儲在Hiera文件中,這些文件只是普通的YAML文件。這意味着所有祕密都存儲在主文件夾中,與清單文件分開。

+0

但這仍然在VCS中,不是嗎? – StephenKing

+0

不一定。在我的位置,我們在所有環境中都使用VCS中的模塊,併爲每個環境提供特定的hieradata。 – bartavelle

0

truecrypt虛擬加密磁盤是跨平臺的並且獨立於工具。將其掛載爲讀寫,以更改其包含的文件中的祕密,卸載它,然後將加密的磁盤映像提交/推送到版本控制中。裝載只讀用於自動化。