Управление зависимостями плагинов Vagrant через Ansible
У меня есть Ansible playbook, который устанавливает Vagrant, а затем инструктирует Vagrant установить определенный плагин. Бродяга с трудом устанавливает драгоценный камень, который ему нужен, и говорит:
An error occurred while installing nokogiri (1.6.6.2), and Bundler cannot continue. Make sure that `sudo gem install nokogiri -v '1.6.6.2'` succeeds before bundling. stdout: Installing the 'vagrant-aws --version '0.5.0'' plugin. This can take a few minutes...
В то время как у меня возникли проблемы с установкой Nokogiri, используя команду:
$ sudo gem install nokogiri -v '1.6.6.2'
Поскольку это делает бродяга, я обнаружил, что я могу установить Nokogiri вручную, используя эту команду:
$ sudo gem install nokogiri -v 1.6.6.2 -- --use-system-libraries --with-xml2-include=/usr/include/libxml2
Даже после того, как я установил драгоценный камень вручную, vagrant все еще терпит неудачу, если я вручную скажу ему установить плагин.
Есть ли способ получить лучший контроль над этими зависимостями, чтобы vagrant не потерпел неудачу и мой playbook был завершен?2 ответа:
Оказывается, я упустил некоторые ключевые зависимости:
build-essential
,libxslt1-dev
,libxml2-dev
, иzlib1g-dev
. Я нашел этот комментарий здесь: https://github.com/mitchellh/vagrant-aws/issues/163#issuecomment-27603855 очень полезно.
Я считаю, что это проблема с использованием sudo для установки ruby gem.
Я решил эту проблему, установив Ruby Version Manager, который устанавливает и управляет gems в вашем домашнем каталоге.
После установки RVM я мог установить nokogiri без sudo, но vagrant-aws все равно не удалось установить, пока я не установил vagrant заново. Если вы создаете новую среду с Ansible, то вы, вероятно, можете просто установить RVM перед установкой vagrant в первый раз (или любой другой ruby материал). Есть и другие способы исправить ваши разрешения gem.
Вот шаги, которые я предпринял:
Установить Ruby Version Manager (https://rvm.io/rvm/install )
$ \curl -sSL https://get.rvm.io | bash -s stable --ruby
Установить nokogiri без sudo
$ gem install nokogiri
Переустановить vagrant (http://www.vagrantup.com/downloads )