Управление зависимостями плагинов 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 3

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 )