Я использую 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/'
Но это дерьмовое решение ... Я надеюсь, что найду что-нибудь получше, как только у меня будет время.