使用Chef Solo和Vagrant安装给定版本的MongoDB

时间:2016-02-23 23:40:20

标签: mongodb vagrant chef-solo

我与Vagrant和Chef Solo合作,用于教育目的。我会用一个给定版本的MongoDB来升级一台Ubuntu机器(在未来我将与我的同事分享机器来制造开发机器,因此我们必须运行相同的环境)。 这是我的Vagrantfile,它工作并使用this MongoDB recipe(以及所有相关的dependecies):

Vagrant.configure(2) do |config|
  config.vm.box = "hashicorp/precise64"
  config.vm.provision "chef_solo" do |chef|
    chef.add_recipe "mongodb"

    chef.json = {
      "mongodb" => {
        "package_version" => "2.6.4"
      }
    }
  end

  config.vm.network "forwarded_port", guest: 27017, host: 27017
end

vagrant up之后,结果是不可预测的,因为安装的版本不反映package_version。哪里出错了?我可以指定要安装的版本吗?

1 个答案:

答案 0 :(得分:1)

默认情况下,它会尝试安装ubuntu repo中提供的mongo deb软件包。您指定了要在此仓库中不存在的要安装的版本:

==> default: STDERR: E: Version '2.6.4' for 'mongodb' was not found

如果要安装与ubuntu提供的版本不同的替代版本,则需要添加mongodb-org repo。您可以通过添加以下配方来完成此操作:

chef.add_recipe "mongodb::mongodb_org_repo"

所以你的Vagrantfile现在看起来像是:

Vagrant.configure(2) do |config|
  config.vm.box = "hashicorp/precise64"
  config.vm.provision "chef_solo" do |chef|
    chef.add_recipe "mongodb::mongodb_org_repo"
    chef.add_recipe "mongodb"
    chef.json = {
      "mongodb" => {
        "package_version" => "2.6.4"
      }
    }
  end

  config.vm.network "forwarded_port", guest: 27017, host: 27017
end

您可以通过以下方式确认安装的mongodb-org软件包的版本:

vagrant@precise64:~$ dpkg -l | grep mongodb-org
ii  mongodb-org                              2.6.4                      MongoDB open source document-oriented database system (metapackage)
ii  mongodb-org-mongos                       2.6.11                     MongoDB sharded cluster query router
ii  mongodb-org-server                       2.6.11                     MongoDB database server
ii  mongodb-org-shell                        2.6.11                     MongoDB shell client
ii  mongodb-org-tools                        2.6.11                     MongoDB tools