對不起,這是一個相當愚蠢的問題,但人們是否將他們的Capistrano文件(Capfile,deploy.rb,multisite> config/deploy/*)提交到他們的私人scm回購站?人們是否將他們的capistrano deploy.rb和食譜提交給他們的私人scm?
是否有人們遵循的最佳實踐或標準?你跟隨什麼?
謝謝。
對不起,這是一個相當愚蠢的問題,但人們是否將他們的Capistrano文件(Capfile,deploy.rb,multisite> config/deploy/*)提交到他們的私人scm回購站?人們是否將他們的capistrano deploy.rb和食譜提交給他們的私人scm?
是否有人們遵循的最佳實踐或標準?你跟隨什麼?
謝謝。
最好的做法是「是」,提交您的deploy.rb,但不要提交任何包含密碼,api_keys或其他私人數據的文件 - 而是創建這些文件模板。在database.yml
提交與數據庫名稱,端口,用戶名的文件,但類似
password: <db_password>
創建一個模板文件。
很明顯,如果你的項目是在像GitHub這樣的公共倉庫中,那麼它是正確的。但是如果你的SCM是私人的,就像你說的那樣,你應該像對待任何其他安全資源一樣對待它。密碼和密鑰不僅僅是「任何其他安全資源」 - 它們應該是高度安全的。
對於完全自我配置的系統,創建capistrano(或可能是rake)任務,讀取具有各種密碼或密鑰的仔細控制的本地文件(也許是YAML),並且一旦部署了提交的文件,將密碼寫入模板。
如果密碼或配置文件的格式變化不大,可以使用cap:setup任務,然後手動添加密碼,將它們保留在app/shared/config目錄中並讓capistrano在其中創建符號鏈接部署時的源代碼樹。
當涉及到部署時,這是隻有高度特權的用戶才能執行(特別是對於生產)。這種做法允許您僅將密碼和其他敏感數據顯示給已被授權訪問給定服務器的用戶。
瑞安貝茨在這樣的策略上做了一些很好的RailsCasts,查看some of these episodes。請注意,許多RailsCast不再免費,但每月$ 9,這非常值得!
嗨湯姆,謝謝你花時間徹底地寫下你的回覆。它的內容豐富而且簡潔。 –
@mosch是誰?... –
是的,我願意。爲什麼要*不*提交它們? –
@Sergio:由於deploy.rb包含兩項內容:特定於應用程序的常規部署設置以及特定於目標實例的設置。 – moritz
謝謝你們的回覆。對此,我真的非常感激。 –