我与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
。哪里出错了?我可以指定要安装的版本吗?
答案 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