0

Мы недавно начали внедрять правильный конвейер построения CI для сценария непрерывного развертывания и решили использовать Chef в качестве нашего инструмента CM. Мы также используем Vagrant для создания изолированных локальных сред для разработчиков для наших разработчиков, поскольку он позволяет просто «бродяжничать вверх», а env просто запускается. Vagrant должен поддерживать Chef Zero, что и делает. Тем не менее, это требует хранения предварительно загруженных кулинарных книг в директории кулинарных книг, то есть управление зависимостями и их версиями будет огромной болью без «диспетчера пакетов».Среда разработки с бродягой и шеф-поваром

Что я хотел бы сделать, это использовать либо Policyfile, либо Berksfile для управления зависимостями поваренной книги. К сожалению, это не работает (или я делаю что-то неправильно). Прежде всего, я не мог найти способ реализовать Policyfile с помощью Vagrant, хотя функция была выпущена 2 года назад. Единственное, что появилось, было this. Путь Berkshelf был более многообещающим, потому что для Vagrant есть плагин «бродяга-беркшефа», который делает именно то, что я хочу ... но с несколькими иконами. Одной из проблем является зависимость от ChefDK. Главное, однако, в том, что это было своего рода устаревшим в пользу TestKitchen.

Итак, TestKitchen, в этом аккуратном инструменте было много шума. Он поддерживает как Policyfiles, так и Berkshelf, у него есть поставщик бродяг, который запускает виртуальную машину с помощью Vagrant. Так что же не так? Насколько я понимаю, TestKitchen для шеф-повара предназначался для разработчиков Cookbook, потому что он позволяет автоматизировать локальное тестирование Cookbook и т. Д. Но как насчет других разработчиков? Например, если разработчик работает только над самим проектом (приложением), а не с инфраструктурой, зачем разработчику даже нужен ChefDK? Все, что разработчик хочет сделать, это загрузить исходный код для приложения (в нашем случае это веб-приложение), которое включает в себя Vagrantfile в корневом каталоге, а затем просто введите «vagrant up» (поскольку VirtualBox и Vagrant уже установлены на компьютере) и начать работать!

Да, можно использовать TestKitchen в качестве бродячего обертки (this guy говорит, что все в порядке). Вместо «бродяги», разработчик набирал бы «кухню», а затем начинал работать. Но это означает, что Dev уже установил ChefDK, наряду с VirtualBox и Vagrant.

Есть ли [хороший и современный] способ не использовать TestKitchen в качестве поставщика среды разработки? Или это не считается плохой практикой? Мне кажется, что разработчик должен установить ChefDK, если он хочет закрутить dev env на своем ноутбуке. Как вы настроили среду разработки?

+0

Почему бы это быть менее хорошо установить chefdk чем бродяга и куча плагинов для поддержки повара в качестве бродячего provisionner? Этот вопрос, вероятно, основан на высокой оценке и поэтому не подходит для StackOverflow. – Tensibai

+0

Tensibai well..все я могу теперь просто надеяться, что он не получит downvoted =) Спасибо за ваш вклад, хотя! – lime

+0

Ну, вопрос ясен для меня, вероятно, будет полезен на другом носителе (возможно, в списке рассылки https://discourse.chef.io). поэтому нет оснований понижать его, я голосовал, чтобы закрыть его как основанное на мнениях, но я не думаю, что это стоит нисходящего. – Tensibai

ответ

0

Рабочий процесс Policyfile был построен в ожидании использования Chef Server и chef-client. Таким образом, вы, как правило, используете его с помощью модуля резервирования chef_client в Vagrant. Это, вероятно, не будет тем рабочим процессом, который вы хотите. Можно было бы создать что-то, в котором используется система экспорта политики, и некоторые причудливые хитрости файла, чтобы сделать плагин, похожий на Berks-Vagrant, но вам придется сделать это сами.

Большая часть мира шеф-повара перестала использовать Vagrant для настройки среды разработки в пользу облачных систем, поскольку создание чего-то типа «производства» в VBox VM вообще невозможно, как вы думаете.

1

Мы используем Jankins для обновления кулинарных книг на шеф-поваре. Кроме того, мы используем Berkshelf для управления зависимостями поваренной книги.

Vagrant может предоставить машину, используя шеф-повар. Он подключается к chef-серверу, получает последние поваренные книги/среды/роли и положения машины.

Это работает, но для обеспечения бродяг-машины требуется много времени. Так что это работает пока, но мы ищем некоторые лучшие варианты.

chef-zero может использоваться для отладки (но лучше использовать тестовую кухню), и я думаю, что он не подходит для рабочего процесса, который вы хотите.

Кроме того, вы можете проверить эти бродячие плагинов, они очень полезны: vagrant-omnibus, vagrant-cachier, vagrant-vbguest, vagrant-hostsupdater, vagrant-notify

+0

Спасибо, это хорошо. Однако, если кулинарные книги хранятся на сервере шеф-повара, а локальные экземпляры Vagrant предоставляются через шеф-клиент, который вытаскивает последние кулинарные книги с сервера, enrvironment теперь привязана к сетевому соединению. Итак, скажите, хочу ли я работать над проектом на самолете во время полета, рабочий процесс ломается, потому что у меня нет кулинарных книг ... – lime

+0

@ lime Вам нужен Интернет для обеспечения машины. После этого вы можете работать в автономном режиме: просто «выходите» в самолете. Даже если вы предоставляете машину с «chef-zero», вам могут понадобиться интернет-соединения для некоторых потребностей в обеспечении, таких как: программное обеспечение для установки, клонирование репозиториев, загрузка дампа БД и т. Д. –

+0

Один человек предложил поставить Vagrantfile вместе с другими вещами (в основном , «chef-repo») в репозиторий separete и использовать CI для обновления кулинарных книг там, а также на сервере шеф-повара. Таким образом, при клонировании репо можно было бы предоставить Vagrant VM из каталога местных кулинарных книг. Один вопрос остается, хотя на каком этапе CI обновит кулинарные книги? Каждый раз, когда они _stable_? Или даже когда сборка не работает, она должна обновлять вышеупомянутое репо новыми версиями? Создайте ветку с учетом проблем на этом шеф-репо и сохраните эту конкретную ветвь? – lime

Смежные вопросы