Security

使用 capistrano 進行部署的正確方法

  • October 19, 2012

我尋找使用 capistrano 進行部署的良好實踐。

我想先簡要描述一下我過去是如何進行部署的。

capistrano 本地安裝在開發人員的電腦上。我使用 capistrano 選項部署思想網關:gateway。首先,我認為使用:gateway選項我只需要與網關主機建立 ssh 連接,但事實證明我需要與我想要部署到的所有主機的ssh 連接(公鑰)。

我想找到一種方便且安全的方式來部署應用程序。

例如,當新開發人員開始工作時,將他的public_key只放在網關伺服器上而不是放在所有應用程序伺服器上會更方便。另一方面,我不希望他與伺服器有任何連接,特別是ssh到網關,僅僅因為他是開發人員,他只需要進行部署。

如果您知道使用 capistrano 進行部署的良好做法,請告訴我們。

Capistrano 是從零開始設計的,假設 ssh 是所有管理的基礎。用作網關的機器必須接受和發出 ssh 連接。周圍沒有什麼。您的開發人員將獲得對網關的 ssh 訪問權限。

你有一些要求:

  • 輕鬆將新開發人員添加到部署目標的授權密鑰列表中
  • 不想在網關盒子上給開發者一個完整的終端

您需要決定如何處理部署目標的鍵控。您在這裡有兩個主要選擇:

  1. 使用通用密鑰,每個人都會得到一個,並且它被嵌入到圖像/目標中。
  2. 使用特定的密鑰,每個人都有自己的密鑰,您可以通過puppetchef來管理 authorized_keys 列表。

第二個選項是最安全的,但如果您有一個配置管理系統,則效果最好。你真的應該使用一個,它甚至可以為網關伺服器提供authorized_keys 文件。

您有一些選項可以限制開發人員在 ssh 進入您的系統後可以執行的操作。

根據 Capistrano 實際如何與網關一起工作,其中一些可能會阻止它工作,因此需要進行測試。它可能需要一個完整的外殼才能執行。

引用自:https://serverfault.com/questions/439269