16

我是红宝石和厨师的新手。我一直在开发食谱,提交它们,将它们上传到 Chef 服务器,然后将它们部署到具有角色更改的 Chef 客户端,然后在客户端上运行“厨师客户端”。这个过程很慢。

我如何使用 IDE(在我的例子中是 Eclipse)开发食谱并能够调试(设置断点、监视变量等)并运行它们而不将它们上传到厨师服务器,然后用厨师客户端将它们拉回来跑?

  • 我正在使用带有“Dynamic Languages Toolkit - Ruby Development Tools 3.0.0.v20110424-7Z--E_EkMYXO4k101442”插件的 Eclipse 3.7 Indigo
  • 我正在使用 10.x Chef 代码线开发 Opscode Chef 食谱
  • 我正在开发一个 Ubuntu 10.10 系统,开发可在 RHEL/Centos 5 服务器上运行的食谱
  • 我们运行自己的 Chef Server(开源)
4

7 回答 7

4

我也在寻找这种工具。

找到了这个,它显示了 Shef 可以做到这一点。

http://stevendanna.github.com/blog/2012/01/28/shef-debugging-tips-1/

于 2012-02-09T16:43:35.070 回答
3

您可以将 Eclipse 用作 Chef Cookbooks 的简单编辑器。你不会有任何 IDE 支持和调试,但像我这样的人可能更喜欢它。

如果您在 Eclipse 上使用 Ruby 编辑器,您可能会获得 .rb Ruby 文件的语法高亮显示,但我还没有尝试过。

您可以通过在里面添加一个 .project 文件将任何文件夹设为 Eclipse 项目(例如 chef-repo 或特定的厨师):

<?xml 版本="1.0" 编码="UTF-8"?>
<项目描述>
    <name>PROJECT_NAME</name>
    <评论></评论>
    <项目>
    </项目>
    <构建规范>
    </buildSpec>
    <性质>
    </性质>
</项目描述>

然后在 Eclipse 中选择 File -> Import -> General -> Existing Projects into Workspace 并选择添加 .project 文件的文件夹。

于 2013-02-06T20:15:47.700 回答
1

对于 Eclipse Ruby 开发工具,截至 2015 年 5 月 13 日,不支持厨师食谱,但如果您愿意,可以使用专有替代方案。

RubyMine 7 IDE 支持具有标准 Chef 资源及其属性的自动完成和定义导航的 Chef。Ruby Mine 基于 Intellij IDEA。

如果您在ruby​​ 插件之上安装Chef 集成插件,则此功能可以与 Intellij IDEA 一起使用,而不是 RubyMine

如果您是学生或教师,或者是为了教育或培训,或者是为了开源项目,您都可以申请免费许可。

于 2015-05-13T15:27:39.390 回答
1

可能它已经为人所知,但目前我们可以将 ATOM 与附加包 language-chef、linter-foodcritic、linter-ruby 一起使用

https://atom.io/

于 2016-06-30T05:03:10.473 回答
1

答案并不简单,截至今天 Opscode 还没有“官方插件”。

在过去的几个晚上,我为 eclipse 创建了一个 chef 插件。它现在非常简单,如果其他人对它感兴趣,我可能还会添加更多......现在它完成了我需要的大部分工作(创建新的食谱,添加食谱,属性,lwrps 等),大多数情况下,我在厨师工具(厨师、伯克斯、厨房、美食评论家等)周围放置了一个日食包装器

https://github.com/rleibman/chef-eclipse-plugin

我无意删除这个插件,除非 opscode 自己提供。

在本教程的帮助下,我开始创建这个插件:https ://cvalcarcel.wordpress.com/2009/07/08/writing-an-eclipse-plug-in-part-1-what-im-going-to -做/

现在,说了这么多......如果您对命令行感到满意,您可以使用已经存在的东西来完成大部分您需要的事情:使用 berks 或 chef 创建一本食谱,例如:

厨师生成食谱 my_cookbook

然后在 Eclipse 中创建一个新的 ruby​​ 项目,打开你刚刚创建的食谱。创建完成后,您可以编辑 ruby​​ 文件等。您还可以使用所有其他厨师功能(例如厨师生成食谱)来帮助您入门。

于 2016-10-11T21:01:28.590 回答
0

在开普勒上做了一些工作,发现:

  • 将 Chef 作为 ruby​​ 项目导入通常会失败,因为导入程序似乎无法将诸如“食谱”等特定于厨师的结构识别为源位置。你所看到的只是 ruby​​ 解释器库
  • 强制 ruby​​ 导入手动将文件夹视为源(声明源文件夹)也失败,因为文件夹和任何子文件夹中的代码不可见
  • 导入作为一般项目的工作是显示所有基于 Chef 的结构及其代码,但代码不被识别为 ruby​​ 代码,并且没有语法相关功能
  • 作为一般项目导入,然后添加 ruby​​ buildspec 和 ruby​​ 性质确实有效。 所有文件都是可见的,并且使用 ruby​​ 编辑器进行编辑可以通过语法高亮显示。

简而言之,添加以下内容:

<buildSpec>
    <buildCommand>
        <name>org.eclipse.dltk.core.scriptbuilder</name>
        <arguments></arguments>
    </buildCommand>
</buildSpec>
<natures>
    <nature>org.eclipse.dltk.ruby.core.nature</nature>
</natures>

我怀疑是否有任何调试等——这不是我的目标,因为我在 Linux 上运行,但至少我们有一个不错的编辑器和 git 集成!

为了安全起见,还将 .buildpath 文件复制到项目位置......不确定是否有必要。通用内容是:

<?xml version="1.0" encoding="UTF-8"?>
<buildpath>
  <buildpathentry kind="src" path=""/>
  <buildpathentry kind="con" path="org.eclipse.dltk.launching.INTERPRETER_CONTAINER"/>
</buildpath>
于 2013-08-29T21:05:23.077 回答
0

我倾向于chef-solo在目标虚拟机上使用。我将查看我的食谱存储库并使用模板化的 solo.rb 在本地进行迭代:

path File.expand_path(File.dirname(__FILE__))
cookbook_path "#{File.expand_path(File.dirname(__FILE__))}/cookbooks"
log_level ENV['CHEF_LOG_LEVEL'] && ENV['CHEF_LOG_LEVEL'].downcase.to_sym || :info
log_location ENV['CHEF_LOG_LOCATION'] || STDOUT
verbose_logging ENV['CHEF_VERBOSE_LOGGING']

log_level与跑步者一起骑车时,设置为调试有很大帮助。

于 2011-10-18T02:18:26.877 回答