通过 Ansible 控制 Vagrant 插件依赖
Controlling Vagrant plugin dependencies via Ansible
我有一个安装 Vagrant 的 Ansible 剧本,然后指示 Vagrant 安装特定的插件。 Vagrant 在安装它需要的 gem 时遇到问题,并说:
安装nokogiri(1.6.6.2)时出错,Bundler无法继续。
确保 `sudo gem install nokogiri -v '1.6.6.2'` 在捆绑前成功。
stdout:正在安装“vagrant-aws --version '0.5.0'”插件。这可能需要几分钟...
虽然我在使用以下命令安装 Nokogiri 时遇到问题:
$ sudo gem 安装 nokogiri -v '1.6.6.2'
正如 vagrant 所做的那样,我发现我 可以 使用以下命令手动安装 Nokogiri:
$ sudo gem install nokogiri -v 1.6.6.2 -- --use-system-libraries --with-xml2-include=/usr/include/libxml2
即使在我手动安装 gem 之后,如果我手动告诉它安装插件,vagrant 仍然会失败。
有没有办法更好地控制这些依赖关系,以便 vagrant 不会失败并且我的 playbook 会完成?
我认为使用 sudo 安装 ruby gem 是个问题。
我通过安装 Ruby Version Manager 解决了这个问题,它在您的主目录中安装和管理 gems。
安装 RVM 后,我可以在没有 sudo 的情况下安装 nokogiri,但是 vagrant-aws 仍然无法安装,直到我重新安装 vagrant。如果您正在使用 Ansible 构建一个全新的环境,那么您可以在第一次安装 vagrant(或任何其他 ruby 东西)之前安装 RVM。还有other ways to fix your gem permissions。
以下是我采取的步骤:
安装Ruby版本管理器(https://rvm.io/rvm/install)
curl -sSL https://get.rvm.io | bash -s stable --ruby
不使用 sudo 安装 nokogiri
gem install nokogiri
重新安装 vagrant (http://www.vagrantup.com/downloads)
原来我遗漏了一些关键依赖项:build-essential
、libxslt1-dev
、libxml2-dev
和 zlib1g-dev
。我在这里找到了这条评论:https://github.com/mitchellh/vagrant-aws/issues/163#issuecomment-27603855 很有帮助。
我有一个安装 Vagrant 的 Ansible 剧本,然后指示 Vagrant 安装特定的插件。 Vagrant 在安装它需要的 gem 时遇到问题,并说:
安装nokogiri(1.6.6.2)时出错,Bundler无法继续。 确保 `sudo gem install nokogiri -v '1.6.6.2'` 在捆绑前成功。 stdout:正在安装“vagrant-aws --version '0.5.0'”插件。这可能需要几分钟...
虽然我在使用以下命令安装 Nokogiri 时遇到问题:
$ sudo gem 安装 nokogiri -v '1.6.6.2'
正如 vagrant 所做的那样,我发现我 可以 使用以下命令手动安装 Nokogiri:
$ sudo gem install nokogiri -v 1.6.6.2 -- --use-system-libraries --with-xml2-include=/usr/include/libxml2
即使在我手动安装 gem 之后,如果我手动告诉它安装插件,vagrant 仍然会失败。
有没有办法更好地控制这些依赖关系,以便 vagrant 不会失败并且我的 playbook 会完成?
我认为使用 sudo 安装 ruby gem 是个问题。
我通过安装 Ruby Version Manager 解决了这个问题,它在您的主目录中安装和管理 gems。
安装 RVM 后,我可以在没有 sudo 的情况下安装 nokogiri,但是 vagrant-aws 仍然无法安装,直到我重新安装 vagrant。如果您正在使用 Ansible 构建一个全新的环境,那么您可以在第一次安装 vagrant(或任何其他 ruby 东西)之前安装 RVM。还有other ways to fix your gem permissions。
以下是我采取的步骤:
安装Ruby版本管理器(https://rvm.io/rvm/install)
curl -sSL https://get.rvm.io | bash -s stable --ruby
不使用 sudo 安装 nokogiri
gem install nokogiri
重新安装 vagrant (http://www.vagrantup.com/downloads)
原来我遗漏了一些关键依赖项:build-essential
、libxslt1-dev
、libxml2-dev
和 zlib1g-dev
。我在这里找到了这条评论:https://github.com/mitchellh/vagrant-aws/issues/163#issuecomment-27603855 很有帮助。