问题标签 [chef-recipe]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
878 浏览

chef-infra - 扩展 application_php 厨师食谱返回 RecipeNotFound 错误

我最近一直在和 chef 一起部署应用程序。我正在尝试在 opscode 提供的应用程序和 application_php 食谱之上构建。但我对厨师有点陌生,我真的不明白我应该怎么做。

我为我的应用创建了一本食谱。食谱目前看起来像这样:

角色:my_app.json

但是当我运行knife bootstrap example.com -r role[my_app] ...我收到以下错误:

好像做对了什么。有谁知道我应该如何扩展 application 和 application_php 食谱?

0 投票
1 回答
240 浏览

deployment - 如何“触发”主厨独奏并获得回调/报告?

我正在考虑使用 Chef-Solo 作为 PaaS 编排器。

我将拥有自己的仪表板,它将生成配方,我的节点将从它们中提取。我知道我可以通过使用来做到这一点:

但是,如果我想添加越来越多的属性;就像拥有要部署的虚拟主机或 mysql 用户列表。我不知道我怎么能做到这一点。

我正在寻找你的想法;我“认为”engineyard 正在使用 chef 来部署“按需”php、node .js 应用程序;他们是如何做到这一点的?

如果已经部署了应用程序部署,如何不重新执行该应用程序部署

在第一次运行时,我将拥有:

然后,当创建一个新站点时,属性将变为:

等等

以及如何获得关于 chef-solo 正在做什么的报告?

欢迎任何巧妙的想法:)

0 投票
1 回答
870 浏览

linux - 重启 RHEL 服务器后,chef-server 无法启动

“usr/sbin/setup-chef-server.sh”

厨师服务器启动时出错

正在检查 RabbitMQ...

启动 CouchDB...

正在启动 couchdb:已经在运行 [警告] 正在启用厨师服务...

开始厨师服务...

启动厨师服务器:[失败]

启动 chef-server-webui:[失败]

启动 chef-solr:/usr/lib/ruby/site_ruby/1.8/rubygems/dependency.rb:247:into_specs': Could not find chef-solr (>= 0) amongst [bunny-0.7.9, chef-10.16.2, erubis-2.7.0, highline-1.6.15, ipaddress-0.8.0, json-1.6.1, mime-types-1.19, mixlib-authentication-1.3.0, mixlib-cli-1.2.2, mixlib-config-1.1.2, mixlib-log-1.4.1, mixlib-shellout-1.1.0, moneta-0.6.0, net-ssh-2.2.2, net-ssh-gateway-1.1.0, net-ssh-multi-1.1, ohai-6.14.0, polyglot-0.3.3, rest-client-1.6.7, systemu-2.5.2, treetop-1.4.12, uuidtools-2.1.3, yajl-ruby-1.1.0] (Gem::LoadError)

[失败的]

启动厨师扩展器:/usr/lib/ruby/site_ruby/1.8/rubygems/dependency.rb:247:in `to_specs':在 [bunny-0.7.9, chef-中找不到厨师扩展器(> = 0) 10.16.2、erubis-2.7.0、highline-1.6.15、ipaddress-0.8.0、json-1.6.1、mime-types-1.19、mixlib-authentication-1.3.0、mixlib-cli-1.2.2、 mixlib-config-1.1.2、mixlib-log-1.4.1、mixlib-shellout-1.1.0、moneta-0.6.0、net-ssh-2.2.2、net-ssh-gateway-1.1.0、net- ssh-multi-1.1、ohai-6.14.0、polyglot-0.3.3、rest-client-1.6.7、systemu-2.5.2、treetop-1.4.12、uuidtools-2.1.3、yajl-ruby-1.1。 0](宝石::加载错误)

[失败的]

0 投票
2 回答
7813 浏览

chef-infra - 用厨师重命名文件的最佳方法

如何用厨师重命名文件?

厨师文档中,我只发现:

  • 创造
  • create_if_missing
  • 删除
  • 触碰
0 投票
2 回答
1012 浏览

ruby - 如何为厨师处理程序安装依赖项?

我正在尝试通过 chef_handler lwrp 安装厨师处理程序。这个处理程序(chef-handler-email)捆绑在一个 gem 中。我正在尝试安装 gem,然后从单个配方中打开处理程序,如下所示:

如果 gem 已经安装,这可以正常工作。但是,如果尚未安装 Gem,我会收到此错误:

似乎 chef_handler 资源正在尝试在 chef_gem 执行并为处理程序安装 gem 之前加载处理程序。我显然可以在两步手动过程中执行此操作,其中我有一个单独的安装 gem 的配方,然后翻转到另一个配置处理程序的配方,但我希望避免多步骤手动过程。可以通过单一配方完成吗?

0 投票
1 回答
243 浏览

jekyll - 杰基尔厨师食谱

在某些方面,这是厨师问题的开始。但是,我正在尝试创建一个简单的方法来从 github 签出我的 jekyll 代码,然后运行 ​​jekyll 在本地构建它。我还没有开始担心让 nginx 配置运行,但我已经尝试了大约 100 种不同的“before_migrate”脚本排列,还没有找到一种方法将 jekyll 加载到可用的 gem 中或加载到路径中做一个command "jekyll ..."

这是目前的配方:

更新:

事实证明,这个问题根本不是配方问题,而是其中一个 HTML 文档包含一个 UTF-8 字符,并且 jekyll 正在运行,LC_ALL=C因此令人讨厌。这当然是我尝试写的第一个食谱,这并没有帮助。

出于历史原因,这是最终脚本

0 投票
1 回答
2258 浏览

chef-infra - 如何在 RightScale 厨师食谱中获取正在运行的食谱的完整路径?

从我当前正在执行的食谱食谱中,我想访问它在我的执行机器上的“当前”位置。

我需要这个来访问它的缓存目录结构。

我感觉它位于“node[]”内的某个地方,但我根本找不到任何关于它的结构的文档。

有什么建议吗?

谢谢

0 投票
2 回答
5904 浏览

chef-infra - 配方如何获得服务器标签的完整列表?

配方如何获得服务器标签的完整列表?

或者

配方如何检查某个标签是否已设置/存在?

顺便说一句:标记?对我不起作用

0 投票
1 回答
2565 浏览

chef-infra - 厨师食谱等待 git clone 完成

我已经尝试了几种不同的方法,包括创建一个新配方并通知该配方运行,但我一直遇到同样的问题,即在资源运行之前克隆的 repo 目录不存在file,所以我收到了一个致命错误。

我的问题是,我可以在文件资源尝试执行之前让 git clone 完成,还是有更好的方法来做到这一点?

SN:我正在尝试通过新的用户环境设置来完成交易 - 所以在创建新用户之后,我将从将为该用户部署的 git repo 中克隆一堆配置文件。

0 投票
3 回答
71613 浏览

chef-infra - 覆盖配方中的属性

假设我在食谱中有一个默认属性:

然后它在角色和环境中被修改和覆盖,直到它最终到达我的食谱。在那里,我计算了一些我想添加到属性中的附加服务。如果我做这样的事情:

然后当我尝试在我的模板中使用该属性时,undefined method 'each' for nil:NilClass当我尝试这样做时,我在我的模板中得到一个

另外,我还得到一个WARN: Setting attributes without specifying a precedence is deprecated and will be removed in Chef 11.0. 有用的警告告诉我如何以正常优先级设置属性(显然,使用node.set["key"] = "value",但没有告诉我如何指定默认或覆盖属性。

我可以通过执行以下操作来解决此问题:

但这感觉就像一个黑客。我在此页面node.set()之外找不到任何文档,这也表明您可以在配方中设置普通属性和覆盖属性,但没有说明如何设置。

那么...您如何从配方中正确设置属性(与其他所有内容一起深度合并)?该node.set()调用实际上做了什么,我可以告诉它我想要合并的优先级吗?