[英]How can I develop and debug Chef cookbooks and recipes in an IDE (like Eclipse)?
我是紅寶石和廚師的新手。 我一直在開發烹飪書,提交它們,將它們上傳到Chef服務器,然后將它們部署到一個更改角色的Chef客戶端,然后在客戶端上運行“chef-client”。 這個過程很慢。
我如何使用IDE(在我的情況下為Eclipse)開發烹飪書並能夠調試(設置斷點,觀察變量等)並運行它們而無需將它們上傳到Chef服務器,然后通過廚師 - 客戶端將它們拉回來跑?
您可以將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文件的文件夾。
可能它已經知道,但目前我們可以使用ATOM與其他軟件包語言 - 廚師,linter-foodcritic,linter-ruby
答案並非如此簡單,因為今天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文件等。您還可以使用所有其他廚師功能(例如,廚師生成食譜)以幫助您入門。
有人在開普勒工作並發現:
簡而言之,添加:
<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.