2015-11-04 23 views
1

我在OpsWorks堆棧中有標準的PHP層。設置爲多個應用程序個性化的Opsworks部署食譜

有兩種應用該層上:

  • APP1,在域app1.mydomain.com
  • APP2,在域app2.mydomain.com

的應用程序的運行在同一臺服務器上。

我有我的部署食譜git回購。一切正常。

但現在我需要爲每個應用程序個性化部署食譜。

例如:

  • 我需要該應用程序「APP1」的文件夾「FOLDER_1」是可寫的777
  • 我需要該應用程序「APP2」的文件夾「FOLDER_1」是可讀644

現在,我只有在所有部署的應用程序中運行的配方。我如何個性化我的部署配方以針對不同應用以不同方式運行?

預先感謝您

編輯:我想在這裏做什麼:

node[:deploy].each do |app_name, deploy|                          

    [IF APPLICATION ONE (how can i grab application variable?)]: 
    script "change_permissions" do          
    interpreter "bash"             
    user "root"               
    cwd "#{deploy[:deploy_to]}/current"         
    code <<-EOH               
    chmod -R 777 uploads 
    mv .htaccess_production .htaccess         
    EOH                 
    end 

    [ELSE IF APPLICATION 2]: 
    script "change_permissions" do          
    interpreter "bash"             
    user "root"               
    cwd "#{deploy[:deploy_to]}/current"         
    code <<-EOH               
    chmod -R 755 uploads 
    rm .htaccess_production 
    EOH                 
    end                  
end 

回答

1

如果只有兩個應用程序設置申請,設法讓一個默認的設置和使用一個廚師標籤或節點屬性做一個切換案例。我也有使用環境變量來區分實現的路線的經驗,但如果實例中的變化本地化,則可能不需要。

現在,如果涉及的變化很大,您應該考慮將它們放在單獨的配方中,並在切換大小塊中運行單個配方。稍後維護更容易。希望這可以幫助。

+0

謝謝你,我想用這種方式繼續。但我不知道如何採取一個特定的變量來識別我正在部署哪個應用程序,然後我不知道如何實現廚師的「if」聲明。請問你能告訴我最簡單的例子嗎? – Release

+0

你有沒有指定安裝目錄的cookbook屬性?這是找出您正在部署哪個應用程序的一種方法。沒有太多的背景,很難舉例說明。 –

+0

我想我可以通過json環境變量指定屬性。但那麼,我如何使用變量?我添加了應用程序的通用腳本。對不起,我的廚師烹飪書的經驗不足,並提前致謝 – Release

相關問題