问题标签 [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 回答
385 浏览

ruby - 模板路径中出现意外的 tIDENTIFIER

我会先说我知道一点 Ruby 但不是很好,所以这很可能是一个常见的 Ruby 错误(但我似乎找不到答案!)

我有这个厨师食谱(使用 Vagrant 运行):

这失败并显示以下消息:

这对我来说没有多大意义,因为“相关文件内容”似乎是从文件的不同部分中删除的。

Ruby 是否有一些关于在字符串中添加斜杠的内容(如果是这样,为什么前面 3 个斜杠不会出错,除非它从右到左运行?)

0 投票
2 回答
8231 浏览

ruby - 在厨师食谱中干燥

在厨师食谱中做一点 DRY 的最佳方法是什么?即只是打破Ruby代码的一小部分,所以我不会一遍又一遍地复制粘贴它。

当然,以下失败:

我可能在一个配方中有多个 ruby​​_blocks,因为它们做不同的事情并且需要有不同的 not_if 块才能成为真正的幂等。

0 投票
2 回答
2074 浏览

git - Opscode Chef - 清理 /shared/cached-copy 的方法

我们在管道中使用 Opscode Chef,我们注意到部署(请参阅http://docs.opscode.com/resource_deploy.html)将我们的源代码的完整副本创建到 /shared/cached-copy

它的 .git/object 文件夹中已经有近千个完整版本(不仅仅是增量!),因此文件大小增长和增长。

有什么办法可以清理甚至完全防止这种情况?我们根本不需要它。

当然,我可以在每次部署后写一些东西来删除目录,但是有没有好的方法来处理这个?谢谢。

0 投票
1 回答
5237 浏览

chef-infra - Chef Apache2 web_app 配置

我正在尝试使用Opscode cookbook使用 chef 来配置 Apache 。我已经像下面这样配置了我的默认属性。我已经创建了一个模板文件/vagrant/sites-available/sof.conf(甚至/vagrant/sites-available/sof.conf.erb只是为了确定)。

它从不评估模板或启用站点。怎么了?

(如果有任何改变,请使用 chef-server)

0 投票
1 回答
831 浏览

chef-infra - 厨师食谱依赖 - berkshelf

我使用 chef-server 来管理我的服务器,我不想让半官方的 logstash 食谱正常工作,但我遇到了配方依赖问题。

我将所有的食谱和我克隆的 logstash 放在一个 chef-config repo 中。

我需要安装 logstash 依赖的食谱,这可以用 berkshelf 完成,但是 berks install 将它们放在 ~/.berkshelf/cookbooks/apache2 中,这似乎有点毫无意义,因为我需要它们在我的食谱文件夹中以允许我将它们上传到厨师服务器。

我确实尝试过:

但这有两个问题,首先我覆盖了其他同名的食谱(mysql),我所有的食谱都被删除了。

人们如何处理这个问题?

0 投票
1 回答
575 浏览

automation - 厨师模板通过参数覆盖变量

我是 chef-solo opscode 的新手,没有找到以下方法

我正在编写一个模板并将 data_bag json 作为变量传递给它

- 食谱

-erb

- 数据包

它一切正常,我想要进一步的是,当我执行它时,如下所示

@development["password"]应该被覆盖为我传递的新值,而不是来自数据包

任何提示?

或者关于合并两个数据包的任何想法?

编辑:

我想将http://apidock.com/rails/Hash/deep_merge添加到 Chef init 的某个地方,因此 Hash 类将提供 deep_merge 方法,知道该放在哪里吗?我尝试在recipe 和solo.rb 的顶部,但没有运气。

0 投票
3 回答
459 浏览

amazon-web-services - How do I run chef recipes after app server is fired up

Using Amazons OpsWorks

I'm able to get a PHP App Server to get initialised, it downloads our project from git and sets it up, I've got a custom recipe being run on Setup that works and downloads composer, but this gets run before the git repository is downloaded, so too early to try and change permissions.

I've currently got a recipe in Deploy that changes permissions on some files that were created as part of downloading our git project, however this recipe doesn't seem to get fired when setting up a new instance, I can only run it by manually deploying an app.

How can I have a recipe run after the git project has been downloaded by chef, when an instance is created (so when the site auto scales and a new instance is fired up, the recipe is run to set file permissions correctly)

0 投票
3 回答
1073 浏览

chef-infra - 流浪者的厨师食谱不尊重长时间运行的w-get下载的rest_timeout或超时选项

我正在尝试获取一个要在厨师食谱中使用的大文件——它是一个大约 350mb 的数据库备份。我正在使用 wget 来获取文件,这是我的食谱:

无论我尝试了什么,我都会得到以下信息:

我什至尝试给 Vagrant 打猴子补丁,这样我就可以添加 rest_timeout 选项:

这会产生一个 /tmp/vagrant-chef-1/solo.rb 确实有一个 rest_timeout 选项:

但是我仍然遇到 Chef 无法完成的相同错误。关于在没有厨师超时或其他问题停止食谱的情况下让这个大型下载工作的任何建议?当我设置机器然后从内部运行 wget 时它工作正常。非常感谢任何帮助!

0 投票
1 回答
453 浏览

api - 以编程方式在 Chef 独奏食谱中获取 Vagrant 属性

我有一个 Chef (solo) recipe,它生成一个 CSS 文件并将其放在 web 根目录的某个位置(/vagrant/css在我的例子中是在 VM 上)。问题是配方需要知道虚拟机上 vagrant 同步目录的绝对路径——它是一个文件夹,Vagrantfile默认情况下它映射到/vagrant虚拟机内部。

我知道如何设置该路径

但问题是如何让配方知道这一点/synced/dir/on/vm

目前我使用的是:

它让我可以node["base_directory"]在配方代码中使用,但这样做有一个缺点:如果我要编写多个配方,那么node["base_directory"]在每个配方中都使用会很不方便。硬编码路径要好得多,但它迫使我对chef.json每个配方使用相同的键。

此外,如果我想分享我的食谱,我会强制用户"base_directory" => "/vagrant"在他们的Vagrantfile.

是否有 API 方法可以在配方代码中获取 VM 上的此同步目录路径?或者更笼统地说:有没有办法从 Chef 食谱中获取 Vagrant 特有的属性?

我搜索了 Vagrant 文档,但似乎只有一页关于该主题的页面,而且由于它是 Vagrant 特有的,因此Chef 文档中也没有相关信息。

0 投票
1 回答
7235 浏览

ruby - 您如何模块化 Chef 食谱?

这是一个工作配方的示例,它遍历网站名称数组并使用函数 createIisWebsite() 在 IIS 中创建它们。

在我们的实际解决方案中,这些数据存储在其他地方并通过 Web API 访问。

现在我希望能够从本食谱中的多个食谱中调用函数 createIisWebsite()。

我试过把它扔到一个辅助模块(库)中。在那里我无法获得对 iis_site 的引用。

我尝试将函数移动到default.rb然后执行 include_recipe "::default"。这似乎也不起作用。

我收到“在 Windows 版本 6.2.9200 上找不到 createIisWebsite 的资源”

我采用这种方法的原因是因为我想要一个包含每个 Web 服务器集群的网站列表的配方。我觉得我没有采取最佳实践路线。

有任何想法吗?