Requisitos: virtualbox + extension pack e o vagrant com versões compatíveis
Obs: arquivos sh, vagrantfile logo após este markdown
Acessar o terminal ou cmd e adicionar a box desejada a se trabalhar, optei por utilizar a ubuntu/trusty32. Outras podem ser obtidas em https://atlas.hashicorp.com/boxes/search Caso já possua uma box pode pular para o próximo passo.
vagrant box add ubuntu/trusty32
Acessar o diretório em que deseja iniciar o acesso a maquina virtual e rodar o comando:
vagrant init
Isso irá criar o arquivo Vagrantfile contendo um script ruby com definições da máquina que será criada. Procure a configuração config.vm.box e informe o nome de sua box. Obs: Todos os comandos referente a esta máquina sempre rodar na pasta que a mesma foi iniciada.
config.vm.box = "ubuntu/trusty64"
Para que o mongo esteja acessível fora da máquina virtual, encontre a seção comentada onde esta definido o encaminhamento de portas do guest (máquina virtual) para o host (sistema opercional atual) e defina logo abaixo o encaminhamento da porta default do mongod e mongos (neste caso 27017).
# config.vm.network "forwarded_port", guest: 80, host: 8080 <- seção original do Vagrantfile
config.vm.network "forwarded_port", guest: 27017, host: 27017 # nova linha adicionada
Caso queira definir um nome amigável para máquina inclua o seguinte trecho.
config.vm.provider "virtualbox" do |v|
v.name = "vm-mongo"
end
Para automatizar o processo de instalação de uma instância do mongodb crie um arquivo na mesma pasta em que o Vagrantfile foi criado com o nome provision-mongo.sh com o seguinte conteúdo:
#!/usr/bin/env bash
locale-gen UTF-8
apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv 7F0CEB10 && \
echo 'deb http://downloads-distro.mongodb.org/repo/ubuntu-upstart dist 10gen' | tee /etc/apt/sources.list.d/mongodb.list && \
apt-get update && \
apt-get install mongodb-org=2.6.4 mongodb-org-server=2.6.4 mongodb-org-shell=2.6.4 mongodb-org-mongos=2.6.4 mongodb-org-tools=2.6.4 && \
echo "mongodb-org hold" | dpkg --set-selections && \
echo "mongodb-org-server hold" | dpkg --set-selections && \
echo "mongodb-org-shell hold" | dpkg --set-selections && \
echo "mongodb-org-mongos hold" | dpkg --set-selections && \
echo "mongodb-org-tools hold" | dpkg --set-selections && \
sed -i '/bind_ip = 127.0.0.1/,/bind_ip\ =\ 127\.0\.0\.1/s/^/#/' /etc/mongod.conf && \
service mongod restart
Voltando ao Vagrantfile, encontre a seção (# Enable provisioning with a shell script. Additional provisioners such as) e acima este trecho comentado inclua.
config.vm.provision :shell, path: "provision-mongo.sh"
De volta ao terminal/cmd execute:
vagrant up
Aguarde a criação da máquina e após o boot o vagrant iniciará a instalação do mongo e iniciará o serviço.
Obs: Caso tenha problemas e obtenha a mensagem 'The guest additions on this VM do not match the install version of VirtualBox' instale o plugin abaixo pelo terminal/cmd e tente novamente
vagrant plugin install vagrant-vbguest
Em seguida caso tenha tido o problema da obserevação acima o comando abaixo para forçar a execução do shell para instalar o mongo:
vagrant up --provision
Após término do processo o próprio script shell iniciará o mongod que disponiblizará o server através do endereço local e porta 27017.
vagrant suspend
vagrant resume
vagrant ssh
Instale algum cliente SSH, exemplo: putty.exe.
Para se conectar utilize o IP/porta 172.0.0.1:2222 e indique a chave privada insecure_private_key
localizada na pasta C:/Users/seu usuário/.vagrant.d
Com a instância do mongo rodando realize o teste com algum client do mongodb, ex: mongoose para nodejs http://mongoosejs.com/docs/
var mongoose = require('mongoose');
mongoose.connect('mongodb://localhost:27017/test');
var db = mongoose.connection;
db.on('error', console.error.bind(console, 'connection error:'));
db.once('open', function() {
console.log('conectamos');
});
Referência: https://gist.github.com/trumbitta/9eed0c3ce369c9c4a01b