问题标签 [berkshelf]

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 回答
94 浏览

ruby - Vagrant 是否能够管理项目的所有服务器?(例如本地、开发、分期和生产)

几周前,我遇到了流浪者并坠入爱河。我目前正在一个新项目上尝试它,它在本地运行良好。我正在使用 Chef Solo 构建所有盒子的软件,并使用 Berkshelf 来管理食谱。

我想知道的是每个人如何管理每个项目的开发、登台和生产服务器。当我在本地处理这个项目时,我想拥有一个开发服务器,并在项目完成后最终登台和生产服务器。

我已经使用Vagrant AWS Plugin成功地使用 Amazon 的 Ec2 设置了 Vagrant ,但看起来 Vagrant 并没有让你同时vagrant up拥有一个本地盒子一个开发盒子,你只能拥有一个。

我写了一个小 bash 脚本,基本上给了我这种能力。我可以跑

它会通过查找专用于该框配置的 Vagrantfile 来构建我指定的每个框。我有一个目录名称machines,每个流浪文件都在其中。我的目录结构看起来像这样

这是一个明智的解决方案吗?

您如何为单个项目管理多个服务器。所有配置都可以存在于一个 Vagrantfile 中吗?

0 投票
1 回答
573 浏览

amazon-web-services - Berkshelf:为 opsworks 合并多个同名的食谱

我正在尝试使用 AWS 食谱和 Berkshelf 在 Vagrant 上模拟 Opsworks 部署。在此处引用AWS 文档-

对于 Chef 11.10 堆栈,在 AWS OpsWorks 安装内置、自定义和 Berkshelf 说明书后,它会按以下顺序将它们合并到一个公共目录中:

  1. 内置食谱。
  2. Berkshelf 食谱,如果有的话。
  3. 定制食谱,如果有的话。

当 AWS OpsWorks 执行此合并时,它会复制目录的全部内容,包括配方。如果有任何重复,则适用以下规则:

  • Berkshelf 食谱的内容优先于内置的食谱。
  • 定制食谱的内容优先于 Berkshelf 食谱。

为了说明这个过程是如何工作的,请考虑以下场景,其中所有三个说明书目录都包含一个名为 mycookbook 的说明书:

  • 内置说明书——mycookbook 包括一个名为 someattributes.rb 的属性文件、一个名为 sometemplate.erb 的模板文件和一个名为 somerecipe.rb 的食谱。
  • Berkshelf 食谱——mycookbook 包括 sometemplate.erb 和 somerecipe.rb。
  • 定制食谱——mycookbook 包括 somerecipe.rb。

合并后的食谱包含以下内容:

  • someattributes.rb 来自内置说明书。
  • 来自 Berkshelf 食谱的 sometemplate.erb。
  • somerecipe.rb 来自自定义食谱。

现在,有没有一种干净的方法可以在当地流浪者中做到这一点?Berkshelf 还是其他?人们遵循什么目录结构以及在本地测试时如何合并?

0 投票
1 回答
3797 浏览

git - 有没有办法将私有 git 存储库与 Berkshelf 一起使用

我创建了一本名为 的食谱foo,并希望与Berkshelf.

我是这样写的Berksfile

然后将食谱供应到cookbooks目录,但失败并出现如下错误:

如何告诉 ssh 用户名和密钥Berkshelf?当然,我的用户有权访问 git 存储库。

0 投票
1 回答
227 浏览

ruby - berks install 没有发现要重写的东西

我使用的是 Windows 7 x64 计算机,安装了 ChefDK 0.3.0-1,还安装了 berkshelf 和综合 gem。我这样设置我的 Berksfile 和 metadata.rb 文件

元数据.rb

伯克斯文件

我将系统环境变量中的环境变量设置为:

但是,当我发出命令时:

我收到以下错误:

我发现我不能使用 Cygwin Git,要么是因为我不知道要为它配置什么,要么是因为 git-scm 的 Git 到目前为止工作。我还使用 Windows 命令提示符来执行这些命令。我不确定从这里做什么,或者这试图告诉我什么。

0 投票
4 回答
35363 浏览

chef-infra - 为什么厨师不能解决我的食谱?

简介 我正在学习 Chef 以自动化工作中的服务器管理。我从这里下载了 chefdk 3.0 ,现在我正在尝试使用 chef 构建我的第一本食谱。

重要 的是,我在 Windows 环境中使用它进行测试,我确实希望它会失败,因为 Windows 没有 iptables,但我不希望它会因为找不到说明书而失败。我试过使用Windows 食谱,它可以工作。

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

我尝试了两种选择:

备选方案 1

我使用以下命令创建食谱

(来自本教程

我能够完成教程,现在我想测试参考另一本食谱,所以我选择了simple_iptables

我添加了这一行

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

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

我使用以下方法运行食谱:

问题是厨师没有找到食谱

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

但我仍然得到一个错误:

备选方案 2

我仍在努力让它发挥作用,所以我也尝试让它成为“berkshelf way”,所以我创建了一本新的食谱。

我添加了这一行

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

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

执行的berks安装:

伯克斯安装

并运行它:

同样的错误又回来了

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

但我仍然得到一个错误:

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

** 备选方案 3 **

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

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

然后像在其他替代方案中一样添加参考/代码

并以我上次的方式运行。

我遇到了同样的问题。

我错过了什么?我需要什么才能让它工作?

0 投票
4 回答
8225 浏览

chef-infra - 厨师客户找不到使用 berkshelf 的食谱

我是厨师新手,遇到了 berkshelf 和厨师客户的问题。我想拥有自己的具有依赖关系的食谱并应用它。我最初的食谱是这样的:

当我运行sudo bundle exec chef-client -z -o znc --config=client.rbchef-client 时找不到食谱:

另请注意:

为什么找不到食谱有什么建议吗?

编辑:

感谢你及时的答复。解决方案正如 John Bellone 所说,bundle exec berks vendor并将我的client.rb配置更改为:

0 投票
1 回答
1301 浏览

maven - Berkshelf-api 和 Chef Supermarket 与传统的工件存储库有何不同?

我熟悉 Artifactory、Maven 和 Nexus 等工件存储库。

Berkshelf-API / Chef Supermarket 与上述工件存储库有何不同?

乍一看,它们似乎在复制现有工件存储库中的功能(不变性、传递依赖解析等)。

澄清:这不是一个基于意见的问题,我正在寻找将Berkshelf-API / Chef Supermarket 用于 Chef Cookbooks 而不是其他典型的工件存储库 的技术原因。

0 投票
1 回答
992 浏览

chef-infra - 如何始终使用最新的食谱,而其他人则一直与 Berkshelf 锁定

我有一个Berksfile这样的:

之后knife solo cook nodeBerksfile.lock创建并锁定食谱的版本。

我想将最新的食谱用于自己的食谱(foo),并锁定其他人创建的食谱的版本(rbenvruby_build)。

我不知道该怎么做。有谁知道我能做到吗?

0 投票
3 回答
462 浏览

chef-infra - 打包厨师环境并在单独的供应服务器上运行

我们制作了一些食谱,以建立一个运行我们的软件解决方案的环境。这些食谱位于两个 git 服务器上,并依赖于公共食谱(我们使用的是 berkshelf)。

我们需要将我们的软件解决方案配置到不同的客户端环境(他们的硬件)中,为了做到这一点,我们希望能够在我们的一台开发机器上创建一个包含所有内容的包,并将该包上传到客户端中的配置机器环境。然后我们想使用该配置机器为该客户端设置所有内容。

我们需要这样做的原因是客户端环境中的配置机器将无法访问存储我们的食谱的 git 服务器。它甚至可能无法访问互联网。我们基本上希望将客户端环境视为一个完全孤立的岛屿。

我希望能够将整个环境(包括依赖项)打包并上传到配置服务器上。然后我会启动 chef-zero 并从那里为该环境提供所有节点。

问题是,我真的不知道如何实现这一目标。

0 投票
1 回答
269 浏览

ruby - 伯克斯拒绝更新

我可以很好地安装berkshelf:

但它并没有真正影响我的行为:

这看起来很正常:

我在 debian stable (wheezy) 上使用 ruby​​ 2.1.4:

我认为我的路径是正确的:

chefdk 可能会以某种方式干扰:

但是提供调用 berks 的完整路径不会影响版本。查看提供的berkswhich表明它只是从其他地方调用宝石,我如何追查它的来源?