为多个应用程序设置个性化的 Opsworks Deployment 配方

Posted

技术标签:

【中文标题】为多个应用程序设置个性化的 Opsworks Deployment 配方【英文标题】:Set Opsworks Deployment recipes personalized for multiple apps 【发布时间】:2016-02-05 02:37:53 【问题描述】:

我在 OpsWorks Stack 中有标准 php 层。

这一层有两个应用:

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】:

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

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

【讨论】:

谢谢,我想以这种方式进行。但我不知道如何使用特定变量来识别我正在部署的应用程序,然后我不知道如何为厨师实现“if”语句..你能告诉我最简单的例子吗? 你有没有指定安装目录的说明书属性?这是确定您正在部署的应用程序的一种方法。没有太多上下文,很难举出例子。 我想我可以通过 json 环境变量指定属性。但是,我如何使用变量?我添加了应用程序的通用脚本。很抱歉我对厨师食谱的经验不足,并提前感谢

以上是关于为多个应用程序设置个性化的 Opsworks Deployment 配方的主要内容,如果未能解决你的问题,请参考以下文章

Berkshelf:为 opsworks 合并多个同名的食谱

有没有办法将 Redis 层设置为 OpsWorks 中现有的 Rails 应用程序?

为 OpsWorks php 应用服务器堆栈设置 upload_max_filesize

Opsworks 厨师 12 道菜谱

如何将应用程序限制为 AWS Opsworks 中的一种类型的层?

OpsWorks Rails 应用服务器设置