Entornos de desarrollo portables, reproducibles y ligeros

33
Entornos de desarrollo portables, reproducibles y ligeros

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.

Transcript of Entornos de desarrollo portables, reproducibles y ligeros

Page 1: Entornos de desarrollo portables, reproducibles y ligeros

Entornos de desarrollo portables,

reproducibles y ligeros

Page 2: Entornos de desarrollo portables, reproducibles y ligeros

@borjacampina

Operaciones IT y Desarrollo de producto

http://i2factory.com/ spin-off uhu/us

Page 3: Entornos de desarrollo portables, reproducibles y ligeros

¿Qué opciones tenemos para preparar

el entorno de desarrollo?

Page 4: Entornos de desarrollo portables, reproducibles y ligeros

#1 Instalación en máquina local

Page 5: Entornos de desarrollo portables, reproducibles y ligeros

“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

Page 6: Entornos de desarrollo portables, reproducibles y ligeros
Page 7: Entornos de desarrollo portables, reproducibles y ligeros

Si además eres parte de un equipo...

Page 8: Entornos de desarrollo portables, reproducibles y ligeros

...puede que haya incidencias debido a usar...

Diferentes SSOO

Diferentes versiones de apps/pkgs/deps

Diferentes configuraciones

Page 9: Entornos de desarrollo portables, reproducibles y ligeros

#2 Crear máquina

virtual (en local)

Page 10: Entornos de desarrollo portables, reproducibles y ligeros

mantienes máquina (host) limpia

entornos de proyectos separados

snapshots y portabilidad

ventajas

Page 11: Entornos de desarrollo portables, reproducibles y ligeros

instalación manual (o casi: bitnami, seeding, unattended..)

VM snapshots o exportaciones de

VM ocupan BASTANTE

inconvenientes

Page 12: Entornos de desarrollo portables, reproducibles y ligeros

#3 Servidor /

máquina remota

Page 13: Entornos de desarrollo portables, reproducibles y ligeros

entorno independiente de tu máquina

puede tener mismas

características que el entorno de producción

ventajas

Page 14: Entornos de desarrollo portables, reproducibles y ligeros

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

Page 15: Entornos de desarrollo portables, reproducibles y ligeros

Ventajas: mismo entorno para el equipo

Inconvenientes: mismo entorno para el equipo

Si además eres parte de un equipo...

Page 16: Entornos de desarrollo portables, reproducibles y ligeros

Pero no toques, ¿por qué tocas?

Page 17: Entornos de desarrollo portables, reproducibles y ligeros

resumiendo...

Page 18: Entornos de desarrollo portables, reproducibles y ligeros

Crear un entorno de forma

manual es un pu** co**** tedioso

Page 19: Entornos de desarrollo portables, reproducibles y ligeros

las cosas no funcionan...

Page 20: Entornos de desarrollo portables, reproducibles y ligeros

la documentación a veces es Incompleta o incorrecta...

Page 21: Entornos de desarrollo portables, reproducibles y ligeros

y si además el entorno se estropea pasado un tiempo...

Page 22: Entornos de desarrollo portables, reproducibles y ligeros
Page 23: Entornos de desarrollo portables, reproducibles y ligeros

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

Page 24: Entornos de desarrollo portables, reproducibles y ligeros

CLI (ruby) que permite configurar y administrar

herramientas de virtualización

(por defecto virtualbox)

Page 25: Entornos de desarrollo portables, reproducibles y ligeros

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

Page 26: Entornos de desarrollo portables, reproducibles y ligeros

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

Page 27: Entornos de desarrollo portables, reproducibles y ligeros

vagrant init

Page 28: Entornos de desarrollo portables, reproducibles y ligeros

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”  

Page 29: Entornos de desarrollo portables, reproducibles y ligeros

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

Page 30: Entornos de desarrollo portables, reproducibles y ligeros

vagrant box add precise32 http://files.vagrantup.com/precise32.box vagrant init precise32

(Vagrantfile)

vagrant up

vagrant destroy –f

vagrant ssh

Page 31: Entornos de desarrollo portables, reproducibles y ligeros

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

Page 32: Entornos de desarrollo portables, reproducibles y ligeros

vagrant cloud (>= 1.5)

Page 33: Entornos de desarrollo portables, reproducibles y ligeros

¿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