为多个应用程序设置个性化的 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