amazon-web-services - 即使食谱可用并且设置了依赖项,Chef 中也没有此类食谱异常 - AWS OpsWorks
问题描述
我是 Chef 和 AWS OpsWorks 的初学者。我试图尝试定制食谱。我创建了一个具有目录的 git 存储库test_cookbook
,并配置了 chef 以从中获取食谱。在其中,我创建了如下文件;
test_cookbook
|_metadata.rb
|_recipes
|_testrecipe.rb
下面是内容metadata.rb
depends 'magic_shell'
magic_shell 是一本开放的食谱,在厨师超市有售https://supermarket.chef.io/cookbooks/magic_shell
当我尝试执行时testrecipe
,我遇到了错误;
[2021-01-12T09:52:23+00:00] INFO: HTTP Request Returned 412 Precondition Failed: No such cookbook: magic_shell
================================================================================
Error Resolving Cookbooks for Run List:
================================================================================
Missing Cookbooks:
------------------
No such cookbook: magic_shell
有人可以告诉我为什么会发生这种情况以及如何解决这个问题吗?
解决方案
未打包依赖项。
根据文档
您可以使用 Berkshelf 在本地打包您的说明书依赖项,将包上传到 Amazon S3,并修改您的堆栈以将 Amazon S3 上的包用作说明书源。
或者使用 Berksfile 拉取依赖项并将它们推送到您的 git 源。
例如,我在metadata.rb中有opsworks_helpers的依赖项
$ grep depends metadata.rb
depends 'opsworks_helpers'
我当前的目录结构是这样的
$ tree
.
├── collectd
..
│ │ └── collectd.rb
│ ├── metadata.rb
└── opsworks_helpers
├── Berksfile
├── CHANGELOG.md
├── Gemfile
...
└── serverspec
└── spec_helper.rb
推荐阅读
- java - 嵌套静态类的 Java 导入通配符可访问性
- sql-server - SSIS 使用 UTF-8 将 OLEDB 源导出到平面文件
- dynamic - 如何在 Blazor 中引用通过 DynamicComponent 创建的组件?
- moodle - 如何在 Moodle LMS 中检索课程的论坛/讨论附件?
- python-requests - NOAA V2 API 存在一些问题
- python - 为什么从 HEX 文件读取并使用 tobinarray 将其转换为二进制时,英特尔十六进制库会打印 255?
- reactjs - 如何将计数器停止在 0?我可以不让它每次都重置吗?
- google-ads-api - CampaignName CONTAINS_ALL ['test', 'play'] 字段 CampaignName 使用了无效或不适用的运算符
- firebase - 试图在颤振上获得两个分开的firestore文档
- python - 为什么递归函数两次考虑数组中的最后一个元素?