Post on 19-May-2015
description
Entornos de desarrollo portables,
reproducibles y ligeros
@borjacampina
Operaciones IT y Desarrollo de producto
http://i2factory.com/ spin-off uhu/us
¿Qué opciones tenemos para preparar
el entorno de desarrollo?
#1 Instalación en máquina local
“ensucias” tu máquina interferencia con software habitual diferentes librerías para diferentes
proyectos no se puede portar (no fácilmente)
características diferentes del entorno de producción
inconvenientes
Si además eres parte de un equipo...
...puede que haya incidencias debido a usar...
Diferentes SSOO
Diferentes versiones de apps/pkgs/deps
Diferentes configuraciones
#2 Crear máquina
virtual (en local)
mantienes máquina (host) limpia
entornos de proyectos separados
snapshots y portabilidad
ventajas
instalación manual (o casi: bitnami, seeding, unattended..)
VM snapshots o exportaciones de
VM ocupan BASTANTE
inconvenientes
#3 Servidor /
máquina remota
entorno independiente de tu máquina
puede tener mismas
características que el entorno de producción
ventajas
soltar pa$$ta (aunque hay entornos gratuitos y otros cada vez más
asequibles: digitalocean, linode... pay-per-use)
necesidad de acceso a internet push code / changes to server
inconvenientes
Ventajas: mismo entorno para el equipo
Inconvenientes: mismo entorno para el equipo
Si además eres parte de un equipo...
Pero no toques, ¿por qué tocas?
resumiendo...
Crear un entorno de forma
manual es un pu** co**** tedioso
las cosas no funcionan...
la documentación a veces es Incompleta o incorrecta...
y si además el entorno se estropea pasado un tiempo...
free** & opensource
https://github.com/mitchellh/vagrant
primera release v.0.1.0 marzo 2010
h"ps://github.com/mitchellh/vagrant/wiki/Available-‐Vagrant-‐Plugins
herramienta que nos permite crear y configurar de forma ligera
(con código, en texto plano) entornos de desarrollo
reproducibles y portables
CLI (ruby) que permite configurar y administrar
herramientas de virtualización
(por defecto virtualbox)
Virtualbox (provider por defecto**) h"ps://www.virtualbox.org/wiki/Downloads
Vagrant (necesita ruby)
h"p://downloads.vagrantup.com/
(también como gema: gem install vagrant –no-‐ri –no-‐rdoc)
instalación
Soporta muchos proveedores on-premise e IaaS/Proveedores cloud
docker-‐provider vagrant-‐aws vagrant-‐cloudstack vagrant-‐digitalocean vagrant-‐hp vagrant-‐joyent vagrant-‐kvm vagrant-‐libvirt vagrant-‐lxc vagrant-‐managed-‐servers vagrant-‐openstack vagrant-‐parallels vagrant-‐proxmox vagrant-‐rackspace vagrant-‐soHlayer vagrant-‐vsphere (no oficial) ...
http://www.vagrantup.com/vmware
Soporte oficial, licencia 79usd
vagrant init
Wait... boxes?
Son “máquinas esqueleto/base”, preconfiguradas (usuarios root/vagrant, ruby, puppet...)
Cuando ejecutamos vagrant box add [box-name] [box-url/box-path]
Indicamos a vagrant que descargue (si especificamos url) o copie (si especificamos un path) en nuestro directorio local
.vagrant.d/boxes dicha máquina y le asigne el alias “box-name”
Wait... boxes?
¿De dónde obtenemos más máquinas? http://www.vagrantbox.es/
http://cloud-images.ubuntu.com/vagrant/
¿Y si queremos hacernos una? Comando: vagrant package
https://github.com/jedi4ever/veewee
vagrant box add precise32 http://files.vagrantup.com/precise32.box vagrant init precise32
(Vagrantfile)
vagrant up
vagrant destroy –f
vagrant ssh
Sólo tenemos una máquina básica
Para configurar e instalar software de forma desatendida vagrant nos ofrece los siguientes métodos de aprovisionamiento:
• Puppet http://puppetlabs.com/ (https://puphpet.com ) • Chef http://www.opscode.com/chef/ (http://rove.io/ )
• Ansible http://www.ansibleworks.com/ • Shell
(Más
https://github.com/mitchellh/vagrant/wiki/Available-Vagrant-Plugins)
¿Cuándo se ejecuta? En el primer vagrant up (para evitarlo: --no-provision)
En una máquina corriendo: vagrant provision
vagrant cloud (>= 1.5)
¿Quién usa vagrant?
“Tuen&-‐in-‐a-‐box. Es lo que usan los desarrolladores para trabajar y es un perfil de VM que ejecuta un perfil de puppet que provisiona una infraestructura completa para que un desarrollador tenga un "mini Tuen&" en local. Con todo el development environment
necesario.
Usando Vagrant, el desarrollador es libre de hacer lo que le de la gana en su propio host y podra destruir la VM y levantarla con un solo comando cada vez que quiera, y por supuesto,
consumir los recursos que quiera sin afectar a nadie.” -‐ Victor García (Tuen& DevOps Engineer)
h"ps://drupal.org/project/vdd