http://files.vagrantup.com/packages/7ec0ee1d00a916f80b109a298bab08e391945243/vagrant_1.2.7_i686.deb
http://download.virtualbox.org/virtualbox/4.2.16/virtualbox-4.2_4.2.16-86992~Ubuntu~precise_amd64.deb
A base box padrão do vagrant é uma distribuição Linux Ubuntu 12.04 LTS 32-bit:
vagrant box add precise32 http://files.vagrantup.com/precise32.box
vagrant init precise32
vagrant up
Para atualizar a distribuição:
vagrant ssh
do-release-upgrade
Após a atualização, é necessário recompilar o Guest Additions:
sudo apt-get install build-essential linux-headers-$(uname -r)
sudo /etc/init.d/vboxadd setup
sudo reboot
Para acesso à máquina virtual a partir de um host Windows, utiliza-se o PuTTY como cliente de SSH. Porém, é necessário converter a chave privada `` SSH para o formato .ppk com o PuTTY Key Generator:
- Executar o
puttygen.exe - Conversions > Import key
- Selecionar o arquivo
C:/Users/nsobrenome/.vagrant.d/insecure_private_key - Save private key > Yes
- Gravar o arquivo
C:/Users/nsobrenome/.vagrant.d/insecure_private_key.ppk
vagrant ssh
wget http://download.virtualbox.org/virtualbox/4.2.16/VBoxGuestAdditions_4.2.16.iso
sudo mount VBoxGuestAdditions_4.2.16.iso -o loop /mnt
sudo apt-get install build-essential linux-headers-$(uname -r)
cd /mnt
sudo sh VBoxLinuxAdditions.run --nox11
mkdir myubuntubox
cd myubuntubox
git clone https://github.com/jedi4ever/veewee.git
cd veewee
gem install bundler
bundle install
vagrant basebox define myubuntubox ubuntu-12.04.1-server-amd64
mkdir iso
cd iso
wget http://mirror.globo.com/ubuntu/releases//precise/ubuntu-12.04.1-server-amd64.iso
wget http://download.virtualbox.org/virtualbox/4.2.16/VBoxGuestAdditions_4.2.16.iso
cd ..
vagrant basebox build myubuntubox
vagrant basebox validate myubuntubox
vagrant basebox export myubuntubox
unalias vagrant
vagrant box add development myubuntubox.box
mkdir myproject
cd myproject
vagrant init development
vagrant up
Na versão atual do veewee existe um bug no postinstall.sh durante a configuração do arquivo /etc/sudoers. Para corrigir:
vagrant ssh
sudo sed -ri -e 's/(%sudo\s+ALL=\(ALL:ALL\))\s+ALL/\1 NOPASSWD: ALL/' /etc/sudoers
reboot
cp Vagrantfile Vagrantfile.pkg
vagrant package --vagrantfile Vagrantfile.pkg
sudo echo "ServerName localhost" >> /etc/apache2/httpd.conf
sudo sed -ri -e 's/(export\s+APACHE_RUN_(USER|GROUP))=www-data/\1=vagrant/' /etc/apache2/envvars
# /etc/apache2/sites-available/vagrant
<VirtualHost *:80>
ServerAdmin webmaster@localhost
DocumentRoot /vagrant/www
<Directory />
Options FollowSymLinks
AllowOverride None
</Directory>
<Directory /vagrant/www>
Options Indexes FollowSymLinks MultiViews
AllowOverride None
Order allow,deny
allow from all
</Directory>
ErrorLog /vagrant/log/error.log
LogLevel warn
CustomLog /vagrant/log/access.log combined
</VirtualHost>
sudo a2dissite default
sudo a2ensite vagrant
sudo service apache2 restart
sudo sed -ri -e 's/(bind-address.*)/;\1/' /etc/mysql/my.cnf
sudo sed -ri -e 's/(skip-external-locking.*)/;\1/' /etc/mysql/my.cnf
sudo service mysql restart
Para garantir acesso a partir da máquina hospedeira:
hostaddr=$(route -v | grep default | sed -e 's/default\s\+\([^[:space:]]\+\).*/\1/g')
mysql -uroot -hlocalhost -e "GRANT ALL PRIVILEGES ON *.* TO 'development'@'$hostaddr'"
Para conectar a partir da máquina hospedeira:
mysql -udevelopment -hlocalhost --protocol=tcp
Em determinados casos não é possível definir o protocolo de conexão para scripts na máquina hospedeira, portanto estes deverão ser executados diretamente na máquina virtual.