12.08.2014

Configurando Vagrant sobre Windows

Introducción

Vagrant funciona sobre varios sistemas operativos como MacOS X, Windows, Debian, Ubuntu, CentOS, RedHat, Fedora y más. En esta página se seguirá los pasos para tener una máquina virtual de Debian mediante Vagrant sobre Windows.

Entorno Windows

Para ejecutar Vagrant y la máquina virtual en un entorno Windows, vamos a seguir las siguientes secciones

  • Instalación de Vagrant 
  • Instalación de Oracle VirtualBox 
  • Instalación del emulador de consola CMDER 
  • Creación de la carpeta para las máquinas Vagrant 
  • Creación de la caja Debian-docker 
  • Creación de la máquina virtual
  • Configuraciones de la máquina virtual
  • Ejecución de la máquina virtual
  • Conección ssh a la máquina virtual
  • Suspendiendo y apagando la máquina virtual

Instalación de Vagrant

Primero descargamos el instalador de Vagrant de http://www.vagrantup.com/downloads.html y lo ejecutamos.

La instalación es simple, cuando pregunte sobre la ruta de instalación como vamos a usar la línea de comandos se recomienda usar una ruta corta, por ejemplo en la guía usaremos “D:\Vagrant”.

Instalación de Oracle VirtualBox

Ahora debemos instalar la versión más actual de VirtualBox del siguiente enlace https://www.virtualbox.org/wiki/Downloads

Con la instalación por defecto está bien.

Instalación del emulador de consola CMDER

Por defecto Windows no cuenta con un emulador de consola y un cliente ssh, hay varias aplicaciones para esto, nostros usaremos un emulador liviano llamado CMDER, tiene buenas funcionalidades incluyendo git y para los que están acostumbrados a la consola de Linux se sentirán como en casa.

Debemos descargar la versión completa de CMDER en el siguiente enlace http://bliker.github.io/cmder

Para ejecutarlo solo hay que descomprimir el archivo descargado en una carpeta y ejecutar Cmder.exe

Se recomienda configurar “Control de Acceso de Usuarios (CAU)” en la opción de "Nunca notificar". En Windows 7 en adelante debería encontrarse siguiendo el orden: Panel de control -> Systema y Seguridad -> Configuraciones de control de acceso de usuarios.

Los siguientes pasos se harán usando CMDER.

Creación de la carpeta para las máquinas Vagrant

Por facilidad, crearemos las carpetas dentro de D:\\Vagrant

Primero una carpeta llamada Proyectos y dentro una que contendrá nuestra máquina virtual de Debian-docker

C:\
λ cd D:\
D:\
λ cd Vagrant
D:\Vagrant
λ mkdir Proyectos
D:\Vagrant
λ mkdir Proyectos\Debian-docker
D:\Vagrant
λ cd Proyectos\Debian-docker
D:\Vagrant\Proyectos\Debian-docker
λ

Creación de la caja Debian-docker

No siempre es necesario empezar desde cero, descargaremos una caja lista que tiene Debian 8 y algunos ajustes listos para funcionar con Docker.io

D:\Vagrant\Proyectos\Debian-docker
λ vagrant box add williamyeh/debian-jessie64-docker --provider virtualbox
==> box: Loading metadata for box 'williamyeh/debian-jessie64-docker'
    box: URL: https://vagrantcloud.com/williamyeh/debian-jessie64-docker
==> box: Adding box 'williamyeh/debian-jessie64-docker' (v1.2.0) for provider: virtualbox
    box: Downloading: https://vagrantcloud.com/williamyeh/debian-jessie64-docker/version/5/provider/virtualbox.box    
    box: Progress: 100% (Rate: 482k/s, Estimated time remaining: --:--:--)
==> box: Successfully added box 'williamyeh/debian-jessie64-docker' (v1.2.0) for 'virtualbox'!
Por defecto nos crea una imagen llamada williamyeh/debian-jessie64-docker, la renombraremos a debian-docker mediante los siguientes comandos

D:\Vagrant\Proyectos\Debian-docker
λ vagrant box repackage williamyeh/debian-jessie64-docker virtualbox 1.2.0
D:\Vagrant\Proyectos\Debian-docker
λ vagrant box add debian-docker package.box --provider virtualbox
==> box: Adding box 'debian-docker' (v0) for provider: virtualbox
    box: Downloading: file://D:/Vagrant/Proyectos/Debian-docker/package.box
    box: Progress: 100% (Rate: 526M/s, Estimated time remaining: --:--:--)
==> box: Successfully added box 'debian-docker' (v0) for 'virtualbox'!

Podemos listar las cajas que tenemos
D:\Vagrant\Proyectos\Debian-docker
λ vagrant box list
debian-docker                     (virtualbox, 0)
williamyeh/debian-jessie64-docker (virtualbox, 1.2.0)

Creación de la máquina virtual

En la ubicación actual inicializaremos una máquina virtual basada en la caja debian-docker creada anteriormente

D:\Vagrant\Proyectos\Debian-docker
λ vagrant init debian-docker
A `Vagrantfile` has been placed in this directory. You are now
ready to `vagrant up` your first virtual environment! Please read
the comments in the Vagrantfile as well as documentation on
`vagrantup.com` for more information on using Vagrant.
D:\Vagrant\Proyectos\Debian-docker
λ ls
Vagrantfile
Inicializando la máquina virtual va a crear un archivo de configuración llamado Vagrantfile que "hereda" las configuraciones de la caja usada para su inicialización, en este caso debian-docker.
Este archivo contendrá cualquier configuración específica como memoria, red, carpetas compartidas, etc.

Configuraciones de la máquina virtual

Antes de ejecutar la máquina virtual, vamos a cambiar algunas configuraciones editando el archivo Vagrantfile con el editor de texto de nuestra preferencia.


D:\Vagrant\Proyectos\Debian-docker
λ NotePad Vagrantfile
Localizamos la parte de inicio de configuración “do |config|”. Desde la siguiente línea podemos configurar todo lo que deseemos.

Lo primero que haremos será crear una carpeta compartida en la máquina virtual llamada vagrant para que apunte a la misma ubicación donde se levanta dicha máquina.
Para esto añadimos la siguiente línea dejando saltos de línea arriba y abajo de la misma.

    config.vm.synced_folder"D:\\Vagrant\\Proyectos\\Debian-docker\\", "/media/vagrant"

Ejecución de la máquina virtual

Ahora es momento de iniciar nuestra máquina virtual.

D:\Vagrant\Proyectos\Debian-docker
λ vagrant up
Bringing machine 'default' up with 'virtualbox' provider...
==> default: Clearing any previously set forwarded ports...
==> default: Clearing any previously set network interfaces...
==> default: Preparing network interfaces based on configuration...
    default: Adapter 1: nat
==> default: Forwarding ports...
    default: 22 => 2222 (adapter 1)
==> default: Running 'pre-boot' VM customizations...
==> default: Booting VM...
==> default: Waiting for machine to boot. This may take a few minutes...
    default: SSH address: 127.0.0.1:2222
    default: SSH username: vagrant
    default: SSH auth method: private key
    default: Warning: Connection timeout. Retrying...
    default: Warning: Remote connection disconnect. Retrying...
==> default: Machine booted and ready!
==> default: Checking for guest additions in VM...
==> default: Mounting shared folders...
    default: /vagrant => C:/Users/Taoshi/Vagrant_Projects/Jessie-Docker
    default: /media/vagrant => C:/Users/Taoshi/Vagrant_Projects/Jessie-Docker
==> default: Machine already provisioned. Run `vagrant provision` or use the `--provision`
==> default: to force provisioning. Provisioners marked to run always will still run.

Podemos verificar el estado de la máquina

D:\Vagrant\Proyectos\Debian-docker
λ vagrant status
Current machine states:
defaultrunning (virtualbox)
The VM is running. To stop this VM, you can run `vagrant halt` to
shut it down forcefully, or you can run `vagrant suspend` to simply
suspend the virtual machine. In either case, to restart it again,
simply run `vagrant up`.

Conección ssh a la máquina virtual

Vagrant permite conexión ssh nativa hacia las máquina virtuales en ejecución.

D:\Vagrant\Proyectos\Debian-docker
λ vagrant ssh
Linux debian-8-amd64 3.13-1-amd64 #1 SMP Debian 3.13.5-1 (2014-03-04) x86_64
The programs included with the Debian GNU/Linux system are free software;
the exact distribution terms for each program are described in the
individual files in /usr/share/doc/*/copyright.
Debian GNU/Linux comes with ABSOLUTELY NO WARRANTY, to the extent
permitted by applicable law.
No LSB modules are available.
Distributor ID: Debian
Description:    Debian GNU/Linux testing (jessie)
Release:        testing
Codename:       jessie
vagrant@debian-8-amd64:~$


Podemos trabajar como en toda consola bash, para salir lo hacemos con el comando exit

vagrant@debian-8-amd64:~$ exit
logout
Connection to 127.0.0.1 closed.
C:\Vagrant\Proyectos\Debian-docker
λ

Suspendiendo y apagando la máquina virtual


Cuando no deseemos usar la máquina virtual, podemos suspenderla o apagarla.


D:\Vagrant\Proyectos\Debian-docker
λ vagrant suspend
D:\Vagrant\Proyectos\Debian-docker
λ vagrant halt
En cualquiera de los dos casos la reactivamos mediante vagrant up
D:\Vagrant\Proyectos\Debian-docker
λ vagrant up

Eso es todo lo básico para tener nuestras máquinas virtuales mediante Vagrant bajo Windows.