Как я могу разрабатывать и отлаживать поваренные книги и рецепты Chef в IDE (например, Eclipse)? - PullRequest
14 голосов
/ 18 октября 2011

Я новичок в рубине и шеф-поваре. Я занимался разработкой поваренных книг, их фиксацией, загрузкой на Chef Server, а затем развертыванием их на клиенте Chef с изменением роли, после чего на клиенте запускался «chef-client». Этот процесс медленный.

Как я могу, используя IDE (Eclipse в моем случае), разрабатывать кулинарные книги и иметь возможность отлаживать (устанавливать точки останова, наблюдать за переменными и т. Д.) И запускать их, не загружая их на сервер Chef, а затем вытаскивая их обратно с помощью шеф-клиент запускает?

  • Я использую Eclipse 3.7 Indigo с плагином «Динамические языки - Инструменты разработки Ruby 3.0.0.v20110424-7Z - E_EkMYXO4k101442»
  • Я разрабатываю поваренные книги Opscode Chef с кодовой линией 10.x Chef
  • Я работаю над системой Ubuntu 10.10 и занимаюсь разработкой поваренных книг, которые будут работать на серверах RHEL / Centos 5
  • У нас есть собственный Chef Server (с открытым исходным кодом)

Ответы [ 7 ]

4 голосов
/ 09 февраля 2012

Я также искал этот вид инструмента.

Нашел этот, который показывает шефу, чтобы сделать это.

3 голосов
/ 07 февраля 2013

Вы можете использовать Eclipse в качестве простого редактора поваренных книг шеф-повара. У вас не будет поддержки и отладки IDE, но некоторые люди, подобные мне, все равно могут предпочесть это.

Если вы используете Ruby Editor в Eclipse, вы можете получить подсветку синтаксиса для файлов .rb Ruby, но я еще не пробовал.

Вы можете сделать любую папку Проектом Eclipse (например, chef-repo ИЛИ конкретный CookCook), добавив файл .project с внутренним:

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

Затем в Eclipse выберите «Файл» -> «Импорт» -> «Основные» -> «Существующие проекты в рабочую область» и выберите папку, в которую вы добавили файл .project.

1 голос
/ 12 октября 2016

Ответ не так прост, на сегодняшний день у Opscode нет «официального плагина».

Я провел последние несколько вечеров, создавая плагин для шеф-повара для затмения. Сейчас это очень скучно, если другие люди проявят интерес к работе над ним, я мог бы также добавить больше ... Пока он делает большую часть того, что мне нужно (создание новых поваренных книг, добавление рецептов, атрибутов, 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-do/.

Теперь, сказав все это ... если вам удобно работать с командной строкой, вы можете делать большую часть того, что вам нужно, с помощью уже имеющихся вещей: создать поваренную книгу с Берксом или шеф-поваром, например:

шеф-повар создает поваренную книгу my_cookbook

А затем создайте новый проект ruby ​​в eclipse, открытый для только что созданной вами поваренной книги. После того, как он создан, вы можете редактировать файлы ruby ​​и т. Д. Вы также можете использовать все остальные функции chef (например, рецепт создания шеф-повара), чтобы помочь вам начать работу.

1 голос
/ 30 июня 2016

Может быть, это уже известно, но в настоящее время мы можем использовать ATOM с дополнительными пакетами language-chef, linter-foodcritic, linter-ruby

https://atom.io/

0 голосов
/ 13 мая 2015

Для Eclipse Ruby Development Tools по состоянию на 13 мая 2015 года поддержка поваренных книг шеф-повара не поддерживается, однако, если вы хотите, есть и проприетарная альтернатива.

RubyMine 7 IDE поддерживает Chef с функцией автозаполнения и определения для стандартных ресурсов Chef и их атрибутов.Ruby Mine основан на Intellij IDEA.

Вместо RubyMine эта функция работает с Intellij IDEA, если вы установите плагин интеграции Chef поверх ruby ​​plugin

Если вы студент или преподаватель , или для образования или обучения , или для проектов с открытым исходным кодом , вы можете подать заявку на бесплатную лицензию.

0 голосов
/ 30 августа 2013

Проделал некоторую работу с Kepler и обнаружил, что:

  • Импорт Chef в качестве проекта ruby ​​обычно завершается неудачно, поскольку импортер, похоже, не может распознать структуры, определенные шеф-поваром, такие как "кулинарные книги" и т. Д., Как местадля источника.Все, что вы видите, это библиотека интерпретатора ruby ​​
  • Не удается принудительно выполнить импорт ruby ​​для просмотра папок как источника вручную (объявить исходную папку), поскольку код в папке и любых подпапках не виден
  • Импорт в качестве общего проекта работает с точки зрения отображения всех структур на основе Chef и их кода, но код не распознается как код ruby, и нет никаких возможностей, связанных с синтаксисом
  • Импорт в качестве общего проекта,затем последующее добавление ruby ​​buildspec и ruby ​​nature действительно работает. Все файлы видимы, и редактирование в редакторе 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>
0 голосов
/ 18 октября 2011

Я склонен использовать 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 на отладку очень помогает при езде на велосипеде с бегуном.

...