Entornos de desarrollo portables, reproducibles y ligeros

Preview:

DESCRIPTION

Ventajas e incovenientes de las diferentes opciones disponibles para configurar entornos de desarrollo en equipos de trabajo mixtos. Introducción a Vagrant, una herramienta para crear, configurar y desplegar entornos virtuales.

Citation preview

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