Se ha denunciado esta presentación.
Utilizamos tu perfil de LinkedIn y tus datos de actividad para personalizar los anuncios y mostrarte publicidad más relevante. Puedes cambiar tus preferencias de publicidad en cualquier momento.

Vagrant para automatizar entornos DEV/PRO: VirtualBox y vSphere

3.240 visualizaciones

Publicado el

Breve introducción a Vagrant y definición de la gestión de configuración de los entornos desarrollo y producción, y del proceso de automatización de las infraestructuras localmente en VirtualBox y en un servidor VMware vSphere.

Publicado en: Tecnología
  • Sé el primero en comentar

Vagrant para automatizar entornos DEV/PRO: VirtualBox y vSphere

  1. 1. Vagrant para automatizar entornos DEV/PRO Vagrant + Chef Solo + [VirtualBox, vSphere] @javier_jeronimo
  2. 2. Objetivos ● Entorno desarrollo = entorno producción ○ Mismo SO ○ Mismas herramientas, bibliotecas, versiones... ● Automatizar entornos ○ Poder destruir y re-generar desde cero ○ Sólo esto asegura DEV=PRO ● Control de versiones para todo ● Gestión de dependencias automática
  3. 3. Vagrant Gestión de máquinas virtuales desde línea de comandos: ● vagrant up ● vagrant halt ● vagrant ssh vagrant up => un sólo comando por primera vez y la máquina estará lista y en ejecución
  4. 4. Vagrant - Conceptos 1. Definición
  5. 5. Vagrant - Conceptos (1) Definición de la máquina virtual ● Carpeta conteniendo un Vagrantfile ● ID de la “caja” base (box). Ej: precise64 ● URL de la caja (descarga y cache local) ○ ¡Cuidado con cajas con mismo ID! ● Configuración VM: IP, puertos, etc ● Sintaxis del fichero: Ruby DSL
  6. 6. Vagrant - Conceptos (1) Vagrant::Config.run do |config| # v1 # All Vagrant configuration is done here. The most common configuration # options are documented and commented below. For a complete reference, # please see the online documentation at vagrantup.com. # Boot with a GUI so you can see the screen. (Default is headless) # config.vm.boot_mode = :gui # # # # Assign this VM to a bridged network, allowing you to connect directly to a network using the host's network device. This makes the VM appear as another physical device on your network. config.vm.network :bridged # Forward a port from the guest to the host, which allows for outside # computers to access the VM, whereas host only networking does not. # config.vm.forward_port 80, 8080 [...]
  7. 7. Vagrant - Conceptos 2. Proveedor
  8. 8. Vagrant - Conceptos (2) Proveedor (provider) de la máquina: ● ¿Qué es? => Quien finalmente la ejecuta Proveedores: ● VirtualBox (incluido en Vagrant) ● VMWare, de pago (Workstation, Fusion) ● Otros mediante plugins: AWS, vSphere, etc.
  9. 9. Vagrant - Conceptos 3. Aprovisionador
  10. 10. Vagrant - Conceptos (3) Aprovisionador (provisioner): ● Prepara la máquina: instala paquetes, configura usuarios, etc. ● Varios disponibles: ○ ○ ○ ○ Shell script Puppet Chef Solo ...
  11. 11. Vagrant - Plugins ● Proveedores. Ej: Añadir soporte para AWS, vSphere, OpenStack, Parallels, ... ● Aprovisionadores. Ej: ○ Chef: gestionar dependencias con Berkshelf o Librarian, actualizar con OmniBus, … ○ Puppet: gestionar dependencias con Librarian ○ Otros: añadir soporte para Fabric, ... ● Otros. Ej: exec, screenshot, ...
  12. 12. Vagrant - Gestión configuración Caja base: ID + URL Vagrantfile Recetas a ejecutar + parámetros JSON 1 3 2 Berksfile ./cookbooks/* ./databags/* Gestión de configuración de las recetas Chef URL-de-la-caja ./roles/* Proveedor VirtualBox (instalación local) vSphere (servidor)
  13. 13. Vagrant - Diferentes entornos Desarrollo: ● VirtualBox ● Detalles: ○ Redes host-guest, guest-guest ○ DNS en /etc/hosts ● Entorno aislado en ordenador Producción: ● VMware vSphere ● Detalles: ○ Red virtualizada en CPD ○ DNS por servidor ● Entorno CPD virtualizado
  14. 14. Vagrant - Gestión configuración Repositorio: ● ● ● ● ● ● ● ● cookbooks/ databags/ roles/ boxes/ ○ vsphere.box <== (caja vacía: sólo metadatos provider) ○ precise64_virtualbox.box<== (VirtualBox VM: disco duro con datos, definición...) production/ ○ server01/ ■ Vagrantfile <== (provider=vSphere, box=vsphere.box) ■ Berksfile <== (gestión de dependencias Chef) development/ ○ server01/ ■ Vagrantfile <== (provider=VirtualBox, box=precise64_virtualbox.box) ■ Berksfile <== (gestión de dependencias Chef) Gemfile <== (gestión de dependencias Ruby) plugins.json <== (gestión de dependencias: plugins Vagrant)
  15. 15. Vagrant - Entorno desarrollo web.example.com sql.example.com tasks.example.com ... VirtualBox: VMs Ordenador Ingeniero SW Red virtual Red virtual Red virtual Red virtual
  16. 16. Vagrant - Entorno desarrollo Chef-Solo 6 Instalación de la máquina virtual: recetas, datos... Plugin: Chef OmniBus installer 5 5 4 4 CLI Virtualbox 6 VM Boot + configuración básica: IP, puertos, carpetas compartidas, ... 2 3 Plugin: Berkshelf incluido en vagrant CLI 2 Creación de la máquina virtual Vagrant 1 Descarga y cache local de la caja: *_virtualbox 3 1
  17. 17. Vagrant - Entorno producción web.example.com sql.example.com tasks.example.com ... Ordenador Ingeniero SW Servidor vSphere ESXi
  18. 18. Vagrant - Entorno producción Chef-Solo 7 Instalación de la máquina virtual: recetas, datos... Plugin: Chef OmniBus installer 6 1 vSphere plugin vagrant VM Boot + configuración 5 básica: IP, puertos, carpetas API compartidas, ... Plugin: Berkshelf API Creación de la máquina 3 virtual: template + spec 2 Creación: template + customization spec 1 Descarga de una máquina VMWare vSphere 6 7 2 4 5 3 4
  19. 19. Objetivos ● Entorno desarrollo = entorno producción ○ Distinta máquina: IPs, VirtualBox vs vSphere... ○ Mismas recetas Chef: gestión de configuración ● Automatizar entornos ○ vagrant up / vagrant provision / vagrant destroy ● Control de versiones para todo ● Gestión de dependencias automática ○ Bundler (Gemfile), Berkshelf (Berksfile + cookbooks/*/metadata.rb)
  20. 20. Referencias Vagrant - Plugins: https://github. com/mitchellh/vagrant/wiki/Available-Vagrant-Plugins Vagrant - Cajas: http://www.vagrantbox.es/ Berkshelf: http://berkshelf.com vSphere - Templates: http://goo.gl/H8jdxQ vSphere - Customization specs: http://goo.gl/OUVcTo

×