Desplegando instancias de DigitalOcean con Vagrant

Vagrant es una potente herramienta open source para la configuración y despliegue de múltiples entornos, tanto de desarrollo, como de producción. Está diseñado para funcionar en Linux, Mac OS X o Windows. Por defecto utiliza VirtualBox para la capa de virtualización, se puede utilizar también con otros proveedores como VMware o AWS. En esta entrada vamos a configurarlo utilizando el driver de DigitalOcean como proveedor.

Requisitos

Antes que nada, tenemos que instalar Vagrant, podemos descargar el instalador desde aquí. Seguidamente instalamos el plugin “Digital Ocean Provider” para ello ejecutaremos el siguiente comando:

vagrant plugin install vagrant-digitalocean

 

Para poder utilizar este plugin, necesitaremos acceder a nuestra cuenta de DigitalOcean y generar un nuevo token de API para poder autenticarnos.

Por último, necesitaremos tener configurado el acceso SSH a Digital Ocean con clave pública y privada. Para ello tenemos que generar las keys en nuestro equipo con el comando ssh-keygen -t rsa , almacenamos la clave pública generada en el directorio por defecto y luego la añadimos a nuestra cuenta de Digital Ocean.

Vagrantfile

En primer luegar creamos un nuevo directorio e inicializamos un fichero de configuración Vagrant:

mkdir test_digitalocean_vagrant
cd test_digitalocean_vagrant
Vagrant init
touch config.sh

 

A continuación, reemplazamos el contenido del fichero de configuración por el siguiente:

Vagrant.configure('2') do |config|
  config.vm.hostname = 'my_cool_droplet'

  config.vm.provider :digital_ocean do |provider, override|
    override.ssh.private_key_path = '~/.ssh/id_rsa'
    override.vm.box = 'digital_ocean'
    override.vm.box_url = "https://github.com/devopsgroup-io/vagrant-digitalocean/raw/master/box/digital_ocean.box"
    override.vm.provision :shell, path: "config.sh"

    provider.token = 'myToken'
    provider.region = 'nyc2'
    provider.size = '512mb'
    provider.ssh_key_name = 'key_name_digitalocean'
    provider.image = 'lemp'
  end
end

 

Veamos que significa cada atributo:

  • config.vm.hostname Nombre de la máquina que vamos a instanciar.
  • override.ssh.private_key_path Directorio en el que se almacena nuestra clave privada para acceder via SSH, por defecto '~/.ssh/id_rsa'.
  • override.vm.box Nombre de la “box” o proveedor que vamos a utilizar.
  • override.vm.box_url Url de la “box” o proveedor.
  • override.vm.provision Tipo de fichero de aprovisionamiento y ruta del mismo.
  • provider.token Token de Digital Ocean.
  • provider.image Imagen de DO que usaremos para crear nuestra máquina, por defecto es 'ubuntu-14-04-x64', aunque para este ejemplo he escogido 'lemp'. Imágenes disponibles: vagrant digitalocean-list images $DIGITAL_OCEAN_TOKEN
  • provider.region Región en la cual inicializaremos nuestro droplet, por defecto 'nyc2' Regiones disponibles: vagrant digitalocean-list regions $DIGITAL_OCEAN_TOKEN
  • provider.size RAM que queremos a asignar a nuestra máquina, por defecto '512mb'. Tamaños disponibles: vagrant digitalocean-list sizes $DIGITAL_OCEAN_TOKEN
  • provider.ssh_key_name Nombre que hemos asignado en Digital Ocean a nuestra clave pública.

Fichero de aprovisionamiento

En el atributo override.vm.provision del fichero de configuración definido en el apartado anterior, indicamos que íbamos a utilizar un fichero de aprovisionamiento de tipo shell llamado config.sh. A continuación, mostramos un ejemplo que podría servirnos para dejar funcionando nuestro servidor LEMP con WP-CLI y un servidor de correo saliente:

#!/usr/bin/env bash
apt-get update
apt-get install -y unzip curl git php5-cli

#Wordpress CLI
curl -O https://raw.githubusercontent.com/wp-cli/builds/gh-pages/phar/wp-cli.phar
chmod +x wp-cli.phar
sudo mv wp-cli.phar /usr/local/bin/wp

#Mailutils
debconf-set-selections <<< "postfix postfix/mailname string your.hostname.com"
debconf-set-selections <<< "postfix postfix/main_mailer_type string 'Internet Site'"
apt-get install -y mailutils

 

Despliegue de nuestra máquina

Una vez que tenemos listo el Vagrantfile y el fichero de aprovisionamiento podemos desplegar nuestra máquina ejecutando:

vagrant up --provider=digital_ocean

 

Comandos soportados:

El proveedor de DO soporta los siguientes comandos:

  • vagrant destroy Destruye una instancia de un droplet.
  • vagrant ssh Accede por ssh al droplet.
  • vagrant halt Apaga el droplet.
  • vagrant provision Ejecuta los ficheros de aprovisionamiento.
  • vagrant reload Reinicia la instancia de un droplet.
  • vagrant rebuild Reconstruye un droplet con la misma dirección IP.
  • vagrant status Devuelve el estado de un droplet.

Referencias

 

Valora esta entrada
0 comentarios

Dejar un comentario

¿Quieres unirte a la conversación?
Siéntete libre de contribuir

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *