Chef 自定义食谱未安装在 AWS opsworks 上

Chef custom cookbook not installing on AWS opsworks

在这个问题的后面 我正在尝试获取在 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

谢谢

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

正如@coderanger 所说,您可以将依赖项包含在存储库的 Berkshelf 文件中。

我已经添加了一个 Berkshelf 文件 - https://github.com/k-kinzal/chef-php-phalcon/blob/master/Berksfile to the repo and the pull request has been merged - https://github.com/k-kinzal/chef-php-phalcon/pull/5#discussion_r53566061

您需要将 Opsworks 堆栈上的 Manage Berkshelf 设置为 Yes 以允许您使用 Berkshelf 文件解决依赖关系。