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



我和流浪汉和厨师Solo一起玩是为了教育目的。我会用给定版本的MongoDB来提升一台Ubuntu机器(在接下来的将来,我会与我的同事共享这台机器来制作开发机器,所以我们都必须运行相同的环境)。这是我的Vagrantfile,它可以工作并使用这个MongoDB配方(以及所有相关的依赖项):

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。错误在哪里?我可以指定要安装的版本吗?

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

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

如果你想安装一个不同于ubuntu提供版本的替代版本,你需要添加mongodb-org存储库。您可以通过添加以下配方来执行此操作:

chef.add_recipe "mongodb::mongodb_org_repo"

所以你的流浪者文件现在看起来像:

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

最新更新