1.Qué es Vagrant y por qué usarlo.
Vagrant es una herramienta que nos facilita la creación de entornos de desarrollo virtualizados. Es muy utilizado para testear aplicaciones web, simulando todas las características del servidor en nuestra máquina virtual (a partir de ahora MV). Vagrant tiene un funcionamiento basado en "cajas" con sistemas operativos para desarrollar directamente sobre ellos creados por una extensa comunidad.
Antes de pasar a la instalación de Vagrant tenemos que asegurarnos que VirtualBox está instalado en nuestro equipo.
Instalación.
Lo primero que haremos será irnos a su página web oficial de descargas y escoger el sistema operativo o distribución de nuestro anfitrión.
En mi caso descargaré el archivo para debian de 64 bits. Para su instalación nos vamos a la terminal:
# cd Descargas
# dpkg -i vagrant_1.9.5_x86_64.deb
Tras esto vamos a comprobar si está instalado correctamente introduciendo:
$ vagrant -v
La salida en pantalla deberá ser la versión de Vagrant hemos instalado.
Vagrant tiene una página de cajas donde se encuentran todas. En mi caso voy a elegir una Ubuntu 14.04 e instalaremos LAMP.
Para las "cajas" no es necesario descargar nada, solo con el nombre de la caja es suficiente, pues el propio programa se encarga de descargar la imagen.
Una vez dentro de la carpeta de nuestra máquina virtual vamos a crear el fichero Vagrantfile, este podemos crearlo con el comando:
El fichero por defecto viene con un contenido amplio y comentado, para este caso como es nuestra primera vez, vamos a hacerlo de una manera más simple.
Y escribimos el siguiente contenido en nuestro fichero:
Ahora después del comentario "Insert config options here" introducimos según nuestra necesidades:
2.Funcionamiento.
La ventaja de Vagrant es que podemos utilizar sistemas virtualizados con determinadas herramientas. Y es que Vagrant tiene un funcionamiento por "cajas" y es que si necesito un entorno con Python, MySQL y Apache puedo configurar una "caja" rápidamente y utilizarla.Vagrant tiene una página de cajas donde se encuentran todas. En mi caso voy a elegir una Ubuntu 14.04 e instalaremos LAMP.
Para las "cajas" no es necesario descargar nada, solo con el nombre de la caja es suficiente, pues el propio programa se encarga de descargar la imagen.
Creación de una máquina.
Para esto haremos una carpeta que se llama vagrant y dentro de esta haremos subcarpetas con el nombre las MV. En mi caso, se llamara Ubuntu-LAMP.$ mkdir vagrant; cd vagrant; mkdir Ubuntu-LAMP; cd Ubuntu-LAMP
Una vez dentro de la carpeta de nuestra máquina virtual vamos a crear el fichero Vagrantfile, este podemos crearlo con el comando:
$ vagrant init
El fichero por defecto viene con un contenido amplio y comentado, para este caso como es nuestra primera vez, vamos a hacerlo de una manera más simple.
$ nano Vagrantfile
Y escribimos el siguiente contenido en nuestro fichero:
# -*- mode: ruby -*-
# vi: set ft=ruby :
VAGRANTFILE_API_VERSION = "2"
Vagrant.configure(VAGRANTFILE_API_VERSION) do |config|
# Insert config options here
end
Ahora después del comentario "Insert config options here" introducimos según nuestra necesidades:
- El sistema operativo: Lo hemos seleccionado de la página de Vagrant que en este caso es ubuntu/trusty64, (dato: no tenemos que descargar nada de la pagina solo fijarnos en el nombre).
config.vm.box = "ubuntu/trusty64"
- Redireccionar puertos: Si estamos desarrollando una aplicación web tendremos que redireccionar el puerto de la MV a la anfitriona y así poder acceder a localhost. En mi caso la redireccionaré al 8080.
config.vm.network "forwarded_port", guest: 80, host: 8080
- Si en vez de acceder por localhost queremos hacerlo por una dirección ip pondremos la siguiente línea:
config.vm.network "private_network", ip: "172.22.2.23"
- Ahora para redirigir una carpeta de nuestro sistema a nuestra MV pondremos:
config.vm.synced_folder "htdocs", "/var/www/html"
- Configurar el entorno e instalar características: Necesitaremos un fichero config.sh, que editaremos más adelante. Aquí estarán los comandos que se ejecutarán al iniciar la máquina. Para ello:
config.vm.provision "shel", path: "config.sh"
Si añadimos todas las opciones anteriores, el fichero Vagrantfile nos quedará así:
# -*- mode: ruby -*-
# vi: set ft=ruby :
# Vagrantfile API/syntax version. Don't touch unless you know what you're doing!
VAGRANTFILE_API_VERSION = "2"
Vagrant.configure(VAGRANTFILE_API_VERSION) do |config|
config.vm.box = "ubuntu/trusty64"
config.vm.network "forwarded_port", guest: 80, host: 8080
config.vm.network "private_network", ip: "192.168.33.10"
config.vm.synced_folder "htdocs", "/var/www/html"
config.vm.provision "shell", path: "config.sh"
end
Una vez creado el fichero Vagrantfile vamos a por la instalación de LAMP mediante el fichero config.sh:
Los 'echo' se utilizan para la autoconfiguracion del usuario y la contraseña de MySQL y PhpMyAdmin. Por defecto es root/root.
Dentro del index.php:
#!/bin/bash
# Update server
apt-get update
apt-get upgrade -y
# Install essentials
apt-get -y install build-essential binutils-doc git -y
# Install Apache
apt-get install apache2 -y
#Install PHP
apt-get install php5 libapache2-mod-php5 php5-cli php5-mysql -y
# Install MySQL
echo "mysql-server mysql-server/root_password password root" | sudo debconf-set-selections
echo "mysql-server mysql-server/root_password_again password root" | sudo debconf-set-selections
apt-get install mysql-client mysql-server -y
# Install PhpMyAdmin
echo 'phpmyadmin phpmyadmin/dbconfig-install boolean true' | debconf-set-selections
echo 'phpmyadmin phpmyadmin/app-password-confirm password root' | debconf-set-selections
echo 'phpmyadmin phpmyadmin/mysql/admin-pass password root' | debconf-set-selections
echo 'phpmyadmin phpmyadmin/mysql/app-pass password root' | debconf-set-selections
echo 'phpmyadmin phpmyadmin/reconfigure-webserver multiselect apache2' | debconf-set-selections
apt-get install phpmyadmin -y
# Restart Apache service
service apache2 restart
Los 'echo' se utilizan para la autoconfiguracion del usuario y la contraseña de MySQL y PhpMyAdmin. Por defecto es root/root.
Carpeta HTDOCS
Dentro de la carpeta tenemos que añaidr un fichero PHP (index.php) que nos muestre la información del servidor. Aquí es donde iría el código de nuestra Web.Dentro del index.php:
<?php phpinfo(); ?>
Comandos útiles de Vagrant:
- Para iniciar la MV:
$ vagrant up
- Entrar por SSH a la máquina, sin necesidad de ip:
$ vagrant ssh
- Suspender la máquina virtual:
$ vagrant suspend
- Reanudar la MV:
$ vagrant resume
- Apagar la MV:
$ vagrant halt
- Saber el estado de la máquina:
$ vagrant status
- Destruir la máquina virtual:
$ vagrant destroy
Esta virtualización se hará con virtualbox, en las siguientes entradas explicaré como utilizarlo con KVM.