Solucionado (ver solução)
Solucionado
(ver solução)
2
respostas

Problema de lib ao execultar: vagrant up --provider=aws

Boa tarde.

Estou com um problema ao rodar o vagrant com o provider aws na minha máquina (vagrant up --provider=aws). Ao execultar esse comando dispara esse erro:

C:/HashiCorp/Vagrant/embedded/gems/gems/nokogiri-1.6.3.1-x86-mingw32/lib/nokogiri.rb:29:in `require': cannot load such f ile -- nokogiri/nokogiri (LoadError)

Pelo que vi no arquivo, o path é retornado através da versão do Ruby. Os arquivos que contem na lib vão da versão 1.9 até a 2.1 e a versão do Ruby é a 2.2.

Já tentei burlar o comando, atualizar e lib e alterar o arquivo vagramt.1.8.1.gemspec para pegar uma versão mais atual, mas mesmo assim não tive sucesso.

Caso tenham alguma ideia e consigam me ajudar agradeço.

Versão Vagrant = 1.8.1 SO = Windows 7 SysAws = Ubuntu 64bits

2 respostas

Olá Danilo,

Não consigo simular o problema aqui na minha máquina, mas pelo que vi na internet existe um grande problema entre o windows, o nokogiri na versão 1.6.6 ou inferior e ruby 2.2.

Achei um possivel solução aqui,(em inglês) : https://richonrails.com/articles/ruby-2-2-on-windows

Basicamente é tentar atualizar o nokogiri para a 1.6.7 (chuto que a versão atual 1.6.8 também não tenha esse problema).

Abra o prompt e excute esse comando : gems install nokogiri em seguida é fazer um gem cleanup. Estou acreditando que na sua máquina já tenha o gems instalado.

Feito tente o vagrant up novamente, verifique se ele vai usar o nokogiri 1.6.3 novamente se caso o erro persiste.

abraço.

solução!

Show,

Mas cara, antes que postasse eu consegui resolver essa questão e passei por mais um problema que vale aqui uma ressalva.

Começando por esse. O Vagrant tem alguns arquivos de validação de versões, onde sem altera-los, ele não executa e avisa que existe libs que não estão de acordo com a configuração.

Essa é a issue que trouxe uma solução mais definitiva que encontrei:

https://github.com/mitchellh/vagrant/issues/6766

Aqui explica:

  • Alterar os arquivos vagrant.gemspec e vagrant-1.8.1.gemspec no diretório C:\HashiCorp\Vagrant\embedded\gems\specifications\"os arquivos".gemspec para que aceite uma versão acima da atual. Para isso basta alterar as linhas que contem a lib nokogori alterando de"= 1.6.3.1" para ">= 1.6.3.1". No meu caso tinha apenas o arquivo vagrant-1.8.1.gemspec.

    • Rodar o comando vagrant plugin install nokogiri --plugin-version 1.6.7.1 para instalar a lib que suporta o ruby 2.2.

    • E por fim ir até o diretório "C:\HashiCorp\Vagrant\embedded\gems\gems\vagrant-1.8.1\plugins\synced_folders\rsync\helper.rb" e apagar da linha 77 a 79 os registros:

    "-o ControlMaster=auto " + "-o ControlPath=#{controlpath} " + "-o ControlPersist=10m " +

    • Após seguir esses passos, garanta que o ssh e o rsync estão configurados na sua máquina para serem usados. Para isso basta rodar os comando which ssh e which rsync que irá listar o local.

Após isso é só dar um vagrant up --provision=aws que irá funcionar.

Depois disso tive o mesmo problema de uma postagem daqui do forum, quanto a região onde o servidor está criado. Na postagem a pessoa explicou que alimentou a variável aws.region = "us-west-2" e funcionou.

Não é bem assim. Primeiro no seu gerenciador vai ver qual a região que você criou sua instância na nuvem. A partir dessa região que deve configurar o código do mesmo.

Ex: Se sua instância foi criada em South America (Sao Paulo), então seu código será sa-east-1. Logo a configuração da variável é aws.region = "sa-east-1".

Segue a lista das regiões listadas no gerenciador: http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/using-regions-availability-zones.html

Qualquer dúvida fico a disposição.

Abraço e obrigado pela ajuda!