0

設置Capistrano將Rails應用程序部署到具有不同環境的多個環境的正確方法是什麼?換句話說,設想開發人員對代碼進行更改並將更改推送到測試環境的典型場景。經過測試後,發佈經理將更改推送到生產環境。等等,其中可能有額外的水平。 Capistrano(即使是capistrano-ext中的多級擴展)似乎是爲有權部署到任何環境的單個用戶構建的。對於底層人員不應該能夠部署到生產環境的情況,建議的設置是什麼?使用Capistrano部署到多個環境的權限

回答

1

在設置Capistrano和部署時,用於部署的用戶帳戶與可部署權限的人之間存在差異。

在Capistrano的你設置的用戶

set :user, 'deploy' 

此用戶帳戶必須存在於每個機器的Capistrano的部署腳本連接,每個角色appwebdb上。建議使用SSH key authentication進行設置。

當有人使用cap deploy時,它將使用SSH密鑰連接到計算機,並且只有在該帳戶上安裝了公鑰時才能使用。

該方法允許不同的人對機器有不同的訪問權限。對於production,只能安裝管理員訪問機器的人員的SSH密鑰。然後,即使有人運行cap deploy,它也無法工作,因爲它們無法連接到遠程用戶。

我們允許任何人在臨時環境中擁有SSH密鑰,但只有幾個人才能訪問生產服務器。