Назад | Перейти на главную страницу

Vagrant не обнаруживает chef-solo, если не переустановить

Я использую Vagrant для тестирования своих рецептов Chef в Amazon AWS, и у меня возникает раздражающая проблема:

Изначально я предполагал, что Vagrant сам установит chef (как это происходит при использовании Virtual Box в качестве провайдера), но похоже, что это нужно сделать с помощью сценария cloud-init. Однако даже после того, как я успешно установил гем Chef через cloud-init, я все еще получал следующую ошибку:

The chef binary (eitherшеф-поварorповар-клиент) was not found

Быстрый поиск этой ошибки в Google предложил три вероятные причины:

Я вошел в систему и дважды проверил; установлены chef-solo и chef-client; Переменная пути для пользователя, sudo и root все включены /usr/local/bin и с разрешениями все в порядке.

Мне удалось решить эту проблему, удалив и переустановив гем с помощью sudo gem install chef. Я не понимаю, почему это должно решить проблему, и это небольшая проблема, если мне нужно использовать ssh в тестовом окне и каждый раз вручную устанавливать гем.

Есть ли у кого-нибудь предложения, почему это может происходить?

Я бы не стал устанавливать chef-client через самоцвет.

Opscode рекомендует устанавливать через свои установщик "омнибус".

Удобный способ сделать это с помощью плагина Vagrant: https://github.com/schisamo/vagrant-omnibus. vagrant-omnibus поддерживает несколько провайдеров, включая vagrant-aws, а также поддерживает множество различных дистрибутивов.

Обычно это так просто:

$ vagrant plugin install vagrant-omnibus и добавив строку конфигурации в ваш Vagrantfile,

У меня такая же проблема ... на данный момент я исправил ее:

vagrant ssh -c 'sudo ln -s /opt/chef/bin/* /usr/local/bin/'

Но это дерьмовое решение ... Я надеюсь, что найду что-нибудь получше, как только у меня будет время.