簡體   English   中英

如何在IDE(如Eclipse)中開發和調試Chef cookbook和配方?

[英]How can I develop and debug Chef cookbooks and recipes in an IDE (like Eclipse)?

我是紅寶石和廚師的新手。 我一直在開發烹飪書,提交它們,將它們上傳到Chef服務器,然后將它們部署到一個更改角色的Chef客戶端,然后在客戶端上運行“chef-client”。 這個過程很慢。

我如何使用IDE(在我的情況下為Eclipse)開發烹飪書並能夠調試(設置斷點,觀察變量等)並運行它們而無需將它們上傳到Chef服務器,然后通過廚師 - 客戶端將它們拉回來跑?

  • 我正在使用Eclipse 3.7 Indigo和“Dynamic Languages Toolkit - Ruby Development Tools 3.0.0.v20110424-7Z - E_EkMYXO4k101442”插件
  • 我正在使用10.x Chef代碼行開發Opscode Chef cookbook
  • 我正在開發一個Ubuntu 10.10系統,用於開發在RHEL / Centos 5服務器上運行的烹飪書
  • 我們運行自己的Chef Server(開源)

我也在尋找這種工具。

發現這個顯示了這樣做的人。

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

您可以將Eclipse用作Chef Cookbooks的簡單編輯器。 您將不會有任何IDE支持和調試,但有些像我這樣的人可能更喜歡它。

如果你在Eclipse上使用Ruby編輯器,你可能會獲得.rb Ruby文件的語法高亮,但我還沒有嘗試過。

您可以通過在內部添加.project文件,將任何文件夾設置為Eclipse項目(例如chef-repo或特定的cookcook):

<?xml version="1.0" encoding="UTF-8"?>
<projectDescription>
    <name>PROJECT_NAME</name>
    <comment></comment>
    <projects>
    </projects>
    <buildSpec>
    </buildSpec>
    <natures>
    </natures>
</projectDescription>

然后在Eclipse中選擇File - > Import - > General - > Existing Projects into Workspace,並選擇添加.project文件的文件夾。

對於Eclipse Ruby Development Tools,截​​至2015年5月13日,不支持廚師烹飪書,但如果您願意,可以使用專有替代品。

RubyMine 7 IDE 支持Chef為標准Chef資源及其屬性提供Auto完整和定義導航。 Ruby Mine基於Intellij IDEA。

如果您在Ruby插件之上安裝Chef集成插件 ,則此功能可與Intellij IDEA配合使用,而不是RubyMine

如果您是學生或教師 ,或者是教育或培訓 ,或者是開源項目 ,您可以申請免費許可。

可能它已經知道,但目前我們可以使用ATOM與其他軟件包語言 - 廚師,linter-foodcritic,linter-ruby

https://atom.io/

答案並非如此簡單,因為今天Opscode沒有“官方插件”。

我花了幾個晚上為eclipse創建了一個廚師插件。 這是非常簡單的骨頭,如果其他人表現出對它的興趣,我可能會添加更多...現在它完成了我需要的大部分工作(創建新的食譜,添加食譜,屬性,lwrps等),我主要是在廚師工具周圍放一個日食包裝(廚師,berks,廚房,食品雜貨等)

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 -do /

現在,說了所有這些...如果你對命令行感到滿意,你可以用已經存在的東西做你需要的大部分工作:用berks或chef創建一本食譜,例如:

廚師生成食譜my_cookbook

然后在eclipse中創建一個新的ruby項目,打開你剛剛創建的cookbook。 一旦創建,您就可以編輯ruby文件等。您還可以使用所有其他廚師功能(例如,廚師生成食譜)以幫助您入門。

有人在開普勒工作並發現:

  • 將Chef作為ruby項目導入通常會失敗,因為導入器似乎無法識別廚師特定的結構,如“cookbook”等作為源的位置。 所有你看到的是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>

我傾向於在目標虛擬機上使用chef-solo 我將查看我的cookbook repo並使用模板化的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設置為debug會在與跑步者一起騎行時有所幫助。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM