未在AWS opsworks上安装厨师自定义菜谱

时间:2016-02-16 17:42:11

标签: chef aws-opsworks

关闭此问题的背面Chef - How to run a cookbook locally我正在尝试使用适用于AWS opsworks的自定义菜谱。正如我在上一个问题中所述,我是Chef的新手,但我正在使用别人制作的食谱 https://github.com/k-kinzal/chef-php-phalcon

然而,当我将此作为自定义食谱添加到我的实例时,没有安装任何内容。 从日志中可以看到菜谱被检索并移动到正确的位置,但日志的底部看起来像

[2016-02-16T18:48:54+00:00] INFO: Forking chef instance to converge...
[2016-02-16T18:48:54+00:00] INFO: *** Chef 12.6.0 ***
[2016-02-16T18:48:54+00:00] INFO: Chef-client pid: 2237
[2016-02-16T18:48:59+00:00] INFO: Setting the run_list to ["recipe[php-phalcon::default]"] from CLI options
[2016-02-16T18:48:59+00:00] INFO: Run List is [recipe[php-phalcon::default]]
[2016-02-16T18:48:59+00:00] INFO: Run List expands to [php-phalcon::default]
[2016-02-16T18:48:59+00:00] INFO: Starting Chef Run for app2
[2016-02-16T18:48:59+00:00] INFO: Running start handlers
[2016-02-16T18:48:59+00:00] INFO: Start handlers complete.
[2016-02-16T18:48:59+00:00] INFO: HTTP Request Returned 404 Not Found: Object not found: 
[2016-02-16T18:48:59+00:00] INFO: HTTP Request Returned 412 Precondition Failed: No such cookbook: git

================================================================================
Error Resolving Cookbooks for Run List:
================================================================================

Missing Cookbooks:
------------------
No such cookbook: git

Expanded Run List:
------------------
* php-phalcon::default

[2016-02-16T18:48:59+00:00] ERROR: Running exception handlers
[2016-02-16T18:48:59+00:00] ERROR: Exception handlers complete
[2016-02-16T18:48:59+00:00] FATAL: Stacktrace dumped to /var/chef/runs/a9eb7a78-2544-413b-aeae-075c959c98ca/local-mode-cache/cache/chef-stacktrace.out
[2016-02-16T18:48:59+00:00] FATAL: Please provide the contents of the stacktrace.out file if you file a bug report
[2016-02-16T18:48:59+00:00] ERROR: 412 "Precondition Failed"
[2016-02-16T18:49:00+00:00] FATAL: Chef::Exceptions::ChildConvergeError: Chef run process exited unsuccessfully (exit code 1)

我不完全确定我应该在这里做什么,git在机器上,所以我不确定为什么这个先决条件失败了。我见过Berks'突然出现了很多。基于我之前的问题,我是否可以在机器上本地运行此配方,然后运行Berks将所有内容打包并将其用作opsworks的食谱?

我正在使用Chef 12来实现这个目标

感谢

2 个答案:

答案 0 :(得分:2)

就像@coderanger所说,你可以将你的依赖项包含在repo中的Berkshelf文件中。

我已经在回购邮件中添加了一个Berkshelf文件 - https://github.com/k-kinzal/chef-php-phalcon/blob/master/Berksfile,并且合并了拉取请求 - https://github.com/k-kinzal/chef-php-phalcon/pull/5#discussion_r53566061

您需要将Opsworks堆栈上的管理Berkshelf 设置为,以允许您使用Berkshelf文件来解析依赖关系。

答案 1 :(得分:1)

您需要在OpsWorks配置中包含php-phalcon食谱的所有依赖项。你可以找到这些in the metadata.rb file。 Berkshelf是一个在内部理解依赖关系的食谱下载器,可能是编译东西的正确选择,但我不知道新的OpsWorks堆栈是否足以说明问题。