为什么我的自定义配方不在AWS OpsWorks上运行?

时间:2014-03-31 15:58:46

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

我为我的简单自定义食谱创建了一个GitHub回购:

my-cookbook/
|- recipes/
   |- appsetup.rb

我已将自定义厨师食谱的回购添加为https://github.com/my-github-user/my-github-repo.git

我已将my-cookbook::appsetup添加到设置"周期"。

我知道它被执行了,因为如果我弄乱语法就无法加载。

这是我的appsetup.rb:

node[:deploy].each do |app_name, deploy|
  script "install_composer" do
    interpreter "bash"
    user "root"
    cwd "#{deploy[:deploy_to]}/current"
    code "curl -sS https://getcomposer.org/installer | php && php composer.phar install --no-dev"
  end
end

当我使用ubuntu用户通过SSH登录实例时,没有安装composer。

我还试过以下无效(A nodejs安装):

node[:deploy].each do |app_name, deploy|
  execute "installing node" do
    command "add-apt-repository --yes ppa:chris-lea/node.js && apt-get update && sudo apt-get install python-software-properties python g++ make nodejs"
  end
end

节点没有安装,日志中没有错误。日志中对食谱的唯一引用只是说:

[2014-03-31T13:26:04+00:00] INFO: OpsWorks Custom Run List: ["opsworks_initial_setup", "ssh_host_keys", "ssh_users", "mysql::client", "dependencies", "ebs", "opsworks_ganglia::client", "opsworks_stack_state_sync", "mod_php5_apache2", "my-cookbook::appsetup", "deploy::default", "deploy::php", "test_suite", "opsworks_cleanup"]
...
2014-03-31T13:26:04+00:00] INFO: New Run List expands to ["opsworks_initial_setup", "ssh_host_keys", "ssh_users", "mysql::client", "dependencies", "ebs", "opsworks_ganglia::client", "opsworks_stack_state_sync", "mod_php5_apache2", "my-cookbook::appsetup", "deploy::default", "deploy::php", "test_suite", "opsworks_cleanup"]
...
[2014-03-31T13:26:05+00:00] DEBUG: Loading Recipe my-cookbook::appsetup via include_recipe
[2014-03-31T13:26:05+00:00] DEBUG: Found recipe appsetup in cookbook my-cookbook

我错过了某个关键步骤吗?配方清楚地被识别和加载,但似乎没有被执行。

(以下是虚构的名字:my-github-user,my-github-repo,my-cookbook)

4 个答案:

答案 0 :(得分:3)

我知道你已经放弃了食谱,但我几乎100%肯定是因为你的食谱根目录中没有metadata.rb文件。

答案 1 :(得分:2)

您的食谱名称不应包含破折号。我遇到了同样的问题,取而代之的是' _'为我解决了。

答案 2 :(得分:0)

如果这些命令无声地失败,可能是因为你使用了&&掩盖了失败。

对于add-apt-repository,这是一个交互式命令。尝试使用“--yes”选项默认回答“是”,使其不再具有交互性。

答案 3 :(得分:0)

如果未成功执行命令,则无法在当前目录中找到这些文件。检查最后一个版本文件夹,查看它是否放在那里。

通过将CWD更改为:/ tmp

来检查是否有正确的目录等设置可能是明智的