为多个应用设置个性化的Opsworks部署配方

时间:2015-11-04 14:38:34

标签: amazon-web-services chef-recipe aws-opsworks cookbook

我在OpsWorks Stack中有标准的PHP层。

这一层有两个应用程序:

  • app1,位于域app1.mydomain.com
  • app2,在域app2.mydomain.com

应用程序在相同的服务器上运行。

我的部署配方有一个git repo。一切正常。

但现在我需要为每个应用程序个性化部署配方。

例如:

  • 我需要应用'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 :(得分:1)

如果您只应用两个应用程序设置,请尝试将其设置为默认设置,并使用chef标签或节点属性来执行切换案例。我也有使用环境变量来区分实现路线的经验,但如果更改在实例上是本地的,则可能没有必要。

现在,如果所涉及的更改很重要,您应该考虑将它们放在单独的配方中,并在交换机案例块中运行单独的配方。以后更容易维护。希望这会有所帮助。