我为我的简单自定义食谱创建了一个GitHub回购:
laravel/
|- recipes/
| - deploy.rb
|- templates/
|- default
| - database.php.erb
我已将自定义厨师食谱的回购添加为https://github.com/minkruben/Laravel-opsworks.git
我已将laravel::deploy
添加到部署“周期”。
这是我的deploy.rb:
node[:deploy].each do |app_name, deploy|
if deploy[:application] == "platform"
script "set_permissions" do
interpreter "bash"
user "root"
cwd "#{deploy[:deploy_to]}/current/app"
code <<-EOH
chmod -R 777 storage
EOH
end
template "#{deploy[:deploy_to]}/current/app/config/database.php" do
source "database.php.erb"
mode 0660
group deploy[:group]
if platform?("ubuntu")
owner "www-data"
elsif platform?("amazon")
owner "apache"
end
variables(
:host => (deploy[:database][:host] rescue nil),
:user => (deploy[:database][:username] rescue nil),
:password => (deploy[:database][:password] rescue nil),
:db => (deploy[:database][:database] rescue nil)
)
only_if do
File.directory?("#{deploy[:deploy_to]}/current")
end
end
end
end
当我通过SSH与ubuntu用户登录实例时,app / storage文件夹权限不会更改&amp; app/config/database.php
未填充数据库详细信息。
我错过了某个关键步骤吗?日志中没有错误。 配方清晰可识别并加载,但似乎没有执行。
答案 0 :(得分:2)
使用OpsWorks,您有两个选择:
这里的逻辑看起来更像是一个钩子,而不是一个部署配方。为什么?因为您只是修改已部署的应用程序而不是指定部署逻辑本身。这似乎表明您正在使用亚马逊的内置层之一,并且亚马逊正在为您提供部署配方。
如果上述假设是正确的,那么你就在路径#1上。重新实现你的逻辑作为一个钩子应该可以做到这一点。