为什么厨师无法解析我的食谱?

2024-02-01

Intro我正在学习 Chef 以自动化工作中的服务器管理。 我从下载了 Chefdk 3.0here https://downloads.getchef.com/chef-dk/windows/#/现在我正在尝试使用厨师制作我的第一本食谱。

重要的我在 Windows 环境中使用它进行测试,我确实希望它会失败,因为 Windows 没有 iptables,但我不希望它会失败,说它找不到食谱。我尝试过使用Windows食谱 https://supermarket.getchef.com/cookbooks/windows它有效。

问题我能够创建食谱并运行它,但我无法引用超市的依赖项。

我尝试了两种选择:

替代方案1

我使用以下命令来创建食谱

chef generate cookbook learn_chef_httpd

(from 本教程 https://learn.getchef.com/rhel/make-your-recipe-more-manageable/)

我能够完成本教程,现在我想测试引用另一本食谱,所以我选择简单的iptables https://api.berkshelf.com/cookbooks/simple_iptables/versions/0.7.0

我添加了这一行

cookbook 'simple_iptables', '~> 0.7.0'

到我的 Berksfile,如超市中所述。

然后我将这些行添加到我的 default.rb 文件中:

include_recipe 'simple_iptables'

# Allow HTTP, HTTPS
simple_iptables_rule "http" do
  rule [ "--proto tcp --dport 80",
         "--proto tcp --dport 443" ]
  jump "ACCEPT"
end

我使用以下命令运行食谱:

chef-client --local-mode --runlist 'recipe[learn_chef_httpd]'

问题是 Chef 找不到食谱

Chef::Exceptions::CookbookNotFound
----------------------------------
Cookbook simple_iptables not found. If you're loading simple_iptables from anoth er cookbook, make sure you configure the dependency in your metadata

我尝试将其添加到元数据中:

depends 'simple_iptables', '~> 0.7.0'

但我仍然收到错误:

Error Resolving Cookbooks for Run List:
Missing Cookbooks:

No such cookbook: simple_iptables

替代方案2

我仍在努力让它发挥作用,所以我也尝试让它成为“伯克谢尔夫方式”,所以我创建了一本新的食谱。

berks cookbook test

我添加了这一行

cookbook 'simple_iptables', '~> 0.7.0'

到我的 Berksfile,如超市中所述。

然后我将这些行添加到我的 default.rb 文件中:

include_recipe 'simple_iptables'

# Allow HTTP, HTTPS
simple_iptables_rule "http" do
  rule [ "--proto tcp --dport 80",
         "--proto tcp --dport 443" ]
  jump "ACCEPT"
end

执行berks安装:

伯克斯安装

并运行它:

chef-client --local-mode --runlist 'recipe[test]'

同样的错误又回来了

Chef::Exceptions::CookbookNotFound
----------------------------------
Cookbook simple_iptables not found. If you're loading simple_iptables from anoth er cookbook, make sure you configure the dependency in your metadata

我尝试将其添加到元数据中:

depends 'simple_iptables', '~> 0.7.0'

但我仍然收到错误:

Error Resolving Cookbooks for Run List:
Missing Cookbooks:

No such cookbook: simple_iptables

我查看了 ~/berkshelf 文件夹,食谱就在那里。

** 替代方案 3 **

我在 Amazon 上启动了 CentOS 6.5 EC2 实例,安装了 Ruby 2.1.3 和 Chef。 创建了 ~/chef-repo/cookbooks 文件夹

我使用 berkshelf 创建了一本食谱,然后运行

bundle install

添加了其他替代方案中的参考/代码 然后

berks install

和我上次一样跑。

我也遇到了同样的问题。

我缺少什么?我需要什么才能让它发挥作用?


确保您已配置您的chef_repo_path如中所述docs https://docs.getchef.com/ctl_chef_client.html#run-in-local-mode.

基本上local-mode需要知道在哪里可以找到你的食谱、角色、环境、数据包等。遗憾的是,文档并没有非常清楚地说明你在哪里/如何设置chef_repo_path

这是我从代码中可以看出的内容。

  1. if client.rb被发现并包含cookbook_path, chef_repo_path = "#{cookbook_path}/.."
  2. if knife.rb被发现并包含cookbook_path, chef_repo_path = "#{cookbook_path}/.."
  3. 厨师可以尝试占卜路径。The code https://github.com/opscode/chef/blob/master/lib/chef/config.rb#L124-L138将搜索自pwd向上查找名为的目录cookbooks。如果它找到了,那么cookbooks/..将被设置为您的 Chef_repo_path。
  4. 如果一切都失败了pwd将用作您的chef_repo_path

如果您使用 Berkshelf,最好的选择是执行berks vendor为了获得一个目录,将包含您需要的所有食谱。然后,您可以将 Chef_repo_path 指向cookbooks包含您出售的食谱的目录。

请注意,这是我花了 10 分钟研究源代码的结果,所以我可能不太正确。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

为什么厨师无法解析我的食谱? 的相关文章

  • 从 ruby​​ 内部加密数据包,无需依赖 Knife

    目前要加密数据包 我必须这样做 system knife data bag from file TemporaryEncrypting enc file path secret file Secret Key Path 这不起作用 因为 K
  • 如何在厨师中运行具有依赖项的食谱?

    我已经配置了工作站这一步开始使用 操作系统 redhat 6 5 我已经启动了一个节点 我这样修改了一本食谱 myCookbook metadata rb name myCookbook maintainer YOUR COMPANY NA
  • 厨师食谱 - 重新加载路径

    我刚刚使用 Chef Cookbook 安装了 Java 并为所有用户更新了 PATH 环境变量 将新文件添加到 etc profile d 是否可以告诉厨师重新加载 PATH 变量 当我做这样的事情时 execute java check
  • 如何确定目录中的任何文件是否已更改

    Chef 有没有办法确定它是否更改了给定目录中的任何文件 如果conf d 目录中的任何设置被更新 我想重新启动服务器进程 我确信可以在每次厨师客户端运行时将 md5sum 列表写入文件 并将当前迭代与之前的迭代进行比较 但这是解决常见场景
  • 使用“文件”chef-solo 资源更新文件

    我正在尝试使用安装javachef solo 问题是设置JAVA HOME and PATH变量在 etc profile文件 我尝试使用 file 厨师提供的资源 这是我的一些代码 java home export JAVA HOME u
  • 如何使用 Chef 菜谱来设置环境变量?

    如何使用 Chef 菜谱来设置环境变量 我需要使用 Chef 食谱设置环境变量 您能提供一个如何实现这一目标的示例吗 如果您需要严格在 Chef 进程内设置环境变量 则可以使用ENV foo bar 因为这是一个 ruby 过程 如果您需要
  • Chef - 如何编写包含用于“执行”的 DSL 的自定义资源

    我写了一个厨师definition发布到我们的聊天服务器 由于不再推荐定义 我如何将其重写为资源 我对如何使用 事件 方式触发代码特别感兴趣 File chat definitions post rb define chat post do
  • 如何在vagranted虚拟机上访问postgresql?

    我通过 Vagrant 虚拟机和 postgresql 进行制作 并希望将其用作我的 Rails 应用程序数据库 我使用类似的 Vagrantfile Vagrant configure 2 do config config vm netw
  • Vagrant 来测试厨师食谱 - 但如何处理私人 git

    我使用 vagrant 来测试我的厨师食谱 问题是我已经克隆了我的私人存储库并且机器没有被认证 我如何自动对 boostrap Chef 进行 git 身份验证 我正在使用 vagrant ubuntu 11 10 with Chef Th
  • Chef ruby​​ gem 安装程序失败

    我尝试通过 Chef 在 CentOS VM 上设置 cassandra 但失败并出现以下错误 我努力了清除捆绑包缓存 https stackoverflow com questions 10575679 bundle update fai
  • 在 ruby​​ 类中调用 Knife

    我想围绕刀创建一个很好的包装类 以允许程序以可读的方式运行刀命令 我目前正在尝试使用 Chef gem 中的 Knife rb 文件作为取得成功的指南 但是 我在关闭编辑器时遇到问题 如果我运行以下代码 require chef knife
  • 有没有办法将私有 git 存储库与 Berkshelf 一起使用

    我创建了一本名为foo 并且想要与一起使用Berkshelf 我是这样写的Berksfile cookbook foo git https bitbucket org ironsand cookbook foo git 然后将食谱卖给coo
  • Jenkins CI 与 Chef 服务器

    有什么方法可以将 Jenkins 与 Chef Server 集成 以便我可以创建要执行的作业吗 我不想去厨师工作站 我需要在单独的服务器或厨师工作站上安装 jenkins 吗 我可以直接从 Jenkins 控制台执行所有食谱吗 是的 你可
  • 如何通过 Chef 在 Tomcat 7 食谱上上传 WAR 文件?

    我正在尝试在由 CHEF 上的食谱安装的 Tomcat 7 上部署一个 War 文件 但是 我在任何论坛上都找不到我的问题的答案 我不知道该怎么做 我使用的是 Ubuntu 服务器 12 10 我正在使用的食谱是https github c
  • 更改正在运行的系统上的 Vagrant 端口转发

    我有一个 Vagrant 系统正在运行 我想对其进行更改 只需更改其中一个转发规则即可 From 这一页 http vagrantup com docs getting started ports html 转发端口在期间应用vagrant
  • 如何找到 Chef 菜谱中可用的磁盘?

    当 Chef 配方正在执行时 我想确定是否有足够的可用磁盘空间来执行操作 如何最好地做到这一点 Ohai http docs opscode com ohai html每次运行时都会检测节点的某些属性 这些属性被捕获为自动属性 http d
  • 仍然可以在节点 run_list 中指定确切的食谱版本吗?

    我的笔记中有这样的内容 run list recipe email protected cdn cgi l email protection 可以明确指定在节点 run list 中使用的说明书版本 但我无法让它工作 也找不到任何文档来说明
  • “berks update ”到底是做什么的?

    根据 berks help update 该命令应该 更新 Berksfile 中指定的说明书 和依赖项 是的 这就是它所说的 但这到底是什么意思呢 这与 Berksfile 中不同类型的 食谱 规范有何不同 更新命令将尝试查找每个说明书的
  • 在 Chef 中使用属性

    刚刚开始使用chef最近 我发现属性存储在一个名为的大型整体哈希中node可在您的食谱和模板中使用 似乎有多种定义属性的方法 直接在食谱本身中 在属性文件下 例如attributes default rb 在传递给的 JSON 对象中che
  • 如何获取 RightScale 厨师食谱中正在运行的食谱的完整路径?

    从我当前正在执行的食谱食谱中 我想访问它在我的执行机器上的 当前 位置 我需要它来访问它的缓存目录结构 我有一种感觉它位于 node 内部的某个地方 但我根本找不到有关其结构的任何文档 有什么建议吗 Thanks 刚刚通过检查 run co

随机推荐

  • Hive:选择 AS 和分组依据

    我有一个 Hive 查询 例如 SELECT Year Month Day Hours Minutes cast cast Seconds as int 15 as int 15 AS secondMod Count AS PerCount
  • XMLHttpRequest 返回错误编码的字符

    我使用 XMLHttpRequest 来读取 PDF 文档http www virtualmechanics com support tutorials spinner Simple2 pdf http www virtualmechani
  • 无法执行目标 org.apache.maven.plugins:maven-clean-plugin:2.4.1

    我正在做一个maven项目 我的IDE是Eclipse 我无法掌握的是当我在Eclipse中使用 clean X 时 它会报告以下错误 Apache Maven 3 0 4 r1232337 2012 01 17 16 44 56 0800
  • 将 Emacs AUCTeX 与 Sumatra PDF 同步

    有了我的这些行init el我能够将 Emacs LaTeX 缓冲区与 Sumatra 同步 setq TeX source correlate mode t setq TeX source correlate method synctex
  • 为什么我会出现 Keras 形状不匹配的情况?

    我正在遵循一个针对初学者的 Keras mnist 示例 我尝试更改标签以适合我自己的数据 该数据有 3 个不同的文本分类 我正在使用 to categorical 来实现这一点 形状对我来说看起来不错 但 fit 会出现错误 train
  • 查找数组中长度为 k 的所有子集

    给定一组 1 2 3 4 5 n 对于 n 个元素 我们需要找到长度为 k 的所有子集 例如 如果 n 4 且 k 2 则output将会 1 2 1 3 1 4 2 3 2 4 3 4 我什至不知道如何开始 我们不必使用内置的库函数 如
  • 你怎么会忘记 Laravel 中缓存的 Eloquent 模型呢?

    关于 Laravel 的理论问题在这里 所以我要做的缓存示例是 Article with comments gt remember 5 gt get 理想情况下 我希望有一个文章更新事件 当该模型的实例 已缓存 的 ID 更新时 我想忘记该
  • 存在哪些 ASP.NET MVC 示例项目? [关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi
  • 混合语言框架

    我有一个用 Objective C 编写的框架 我们称之为 MyKit 我用一些 Swift 类对其进行了扩展 我正在尝试使用以下文档来理解它 https developer apple com library ios documentat
  • OpenGL ES 片段着色器可以更改片段的深度值吗?

    OpenGL ES 2 0 中的片段着色器可以更改像素的 Z 值 深度 吗 在 OpenGL ES 2 0 中这是如何实现的 No gl FragDepth 这是 GLSL 桌面版本的一部分 在 OpenGL ES 中不存在 但是 您可以检
  • NHibernate 将类属性映射到行而不是列

    是否可以映射一个类 其中每个属性存储为表中的行而不是列 该场景是我们将全局选项保存到数据库的情况 我们将选项存储在 选项 类中 每个选项都有一个属性 即 展开菜单 退出时保存 等 我们不想将每个选项存储在其自己的表列中 而是希望有一个表 其
  • 如何获取包含占位符的属性的原始值?

    我试图在我的 properties 文件之一中定义以下属性 personExpression person surname 然后由配置类读取 Configuration public class TemplateConfig Autowir
  • 在 Chrome 扩展程序中获取 JSON

    我的 chrome 扩展有一个小问题 我只是想从另一台服务器获取 JSON 数组 但清单 2 不允许我这样做 我尝试指定content security policy 但 JSON 数组存储在没有 SSL 证书的服务器上 那么 如果不使用清
  • 更改 varchar 列的最大长度?

    我正在尝试将 varchar 列的长度从 255 个字符更新为 500 个字符 而不会丢失内容 我之前已经删除并重新创建过表 但我从未接触过 alter 语句 我相信我需要使用它来执行此操作 我在这里找到了文档 更改表 Transact S
  • Python——使用 Selenium 打开多个选项卡

    我正在使用Python 我正在尝试在 Chrome 上打开两个选项卡 每个选项卡都指向不同的网站 这是我的代码 from selenium import webdriver from selenium webdriver common ke
  • 将视频添加到 YouTube 上用户最喜欢/喜欢的播放列表

    目的是使用 YouTube API 创建一个收藏 喜欢按钮 当用户单击该按钮时 视频将保存到用户的 收藏 喜欢 播放列表中 就像您在自己的网站上实施 Facebook Like 按钮时的工作原理一样 这本质上是对发布的出色解决方案的后续问题
  • 在 google oauth 后,如何在不使用 webview 的情况下将用户重定向回我的应用程序?

    谷歌决定禁止通过 webview 进行 oauth 给我带来了巨大的麻烦 迁移到替代方案是一个漫长而困难的过程 我目前正在使用建议的 AppAuth 库 并且我收到用户抱怨 如果不将帐户添加到 chrome 他们的设备 这作为据我所知 如果
  • 地址簿联系人排序

    我有下面的代码 我设法从地址簿中列出了姓名和电话号码 但如何按名字对其进行排序 ABAddressBookRef addressBookRef ABAddressBookCreateWithOptions NULL NULL abConta
  • 多线程 Grep

    我有以下包含 30233088 字符串的 大 文件 head mystringfile txt GAATGAACACGAAGAA GAATGAACACGAAGAC GAATGAACACGAAGAG GAATGAACACGAAGCA cat
  • 为什么厨师无法解析我的食谱?

    Intro我正在学习 Chef 以自动化工作中的服务器管理 我从下载了 Chefdk 3 0here https downloads getchef com chef dk windows 现在我正在尝试使用厨师制作我的第一本食谱 重要的我