我和流浪汉和厨师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