Continuous Delivery (y 3)



Documentos relacionados
Desarrollo de WordPress con Vagrant

INSTALACIÓN DE ORACLE 8i (8.1.7) SOBRE NT

INSTALACIÓN DE SERVIDOR DE CORREO ELECTRÓNICO

Servidor Web Apache Knoppix Linux.-

ESCUELA POLITÉCNICA NACIONAL 28 DE OCTUBRE, 2015 ORTIZ JÁCOME LEONARDO JOSÉ

Creación de un DNS simple

Documento de implementación Servidor Web. Proyecto Laboratorio de Redes

Herramientas de. Sistemas Informáticos I.E.S. Virgen de la Paloma

4.2 La tubería de despliegue

Instituto Tecnológico de Las América. Materia Sistemas operativos III. Temas. Facilitador José Doñe. Sustentante Robín Bienvenido Disla Ramirez

Laboratorio de Desarrollo Software

Esquema Presentación

INSTALACION DE UN SERVIDOR PENTAHO 5.2 CON POSTGRESQL 9.1 EN LINUX CENTOS 6.6 de 32 BITS

GIT Dinahosting 3. Hola!

TUTORIAL DE INSTALACIÓN PARA VIRTUALBOX

Podemos descargar la distribucion de gnu/linux de los repositorios de Ubuntu

1. Ir a

Servidor Apache 1. Instalación de apache

Manual para el uso de GIT Los siguientes pasos indican el procedimiento para entrar a GIT y para agregar la llave pública.

VAGRANT. Administración de Sistemas Informáticos y Redes I.E.S Jacarandá Brenes (Sevilla). Proyecto Integrado 2º Ciclo - ASIR 2015

Guía Teórica Práctico 1: Ventana de Comandos o Terminal

Servidor FTP en Ubuntu Juan Antonio Fañas

Laboratorio de Desarrollo Software! Entorno de Desarrollo

Para poder instalar el producto, tendremos que obtener el instalador apropiado para nuestro entorno hardware y software.

CENTRO DE INVESTIGACIÓN CIENTÍFICA Y DE EDUCACIÓN SUPERIOR DE ENSENADA, BAJA CALIFORNIA Departamento de Cómputo / Dirección de Telemática ÍNDICE

Tutorial: Primeros Pasos con Subversion

PRACTICA 6.6 VPN Logmein Hamachi registrarse en la página instalación,

Instituto Tecnológico de Las Américas (ITLA)

INSTALACIÓN DE GITLAB

Cluster Beowulf/MPI en Debian

Instalación del programa PSPP y obtención de una distribución de frecuencias.

Práctica Virtual Box.

Integración Continua en Hudson

Instalación Joomla. Instrucciones para instalar Joomla en un pc en la red local del instituto, o en un servidor en Internet

Integración de Toolchain PTXdist sobre IDE gráfico basado en Eclipse

Este documento recoge ejercicios prácticos relacionados con la gestión y monitorización de redes y servicios IPv6.

ESCENARIOS CLIMÁTICOS DE CORTO PLAZO ENTORNO DE MODELACIÓN

Compartiendo conocimiento... Guía básica de instalación de Asterisk 11 en Centos6.5

Uso del servidor gráfico X en los servidores del CESGA mediante PuTTY y Cygwin

MANUAL TÉCNICO DE IMPLEMENTACIÓN PROYECTO SOCIAL COMPUESCUELA. Elaborado por: Julián A. Hernández M.

Instalación y Mantenimiento de Servicios de Internet

TUTORIAL INSTALACION SERVIDOR DE VIDEOCONFERENCIA CON OPENFIRE. Descargamos el openfire de la página oficial luego lo pasamos a Ubuntu:

Configuración de un servidor FTP

Informe técnico de configuración y ejecución

Integración de Toolchain PTXdist sobre IDE gráfico basado en Eclipse

Acceso al Disco Compartido y Dispositivos USB y DVD

Desarrollo Web en Entorno Servidor

Instalación de IPv6 en plataformas FreeBSD

Jorge Valhondo Vazquez. Implantación Aplicaciones Informáticas de Gestión ASI2

Orquestación de la Configuración con Puppet. Por: José Luis Jaime Gonzalez

INSTRUCTIVO DE INSTALACION ATOM 2.0.1

SYNCTHING. Herramienta de sincronización de datos vía LAN. Laboratorio de Sistemas Operativos y Redes. Caminos Diego; Zapatero R.

INTRANET: MANUAL DE INSTALACIÓN

AQReports: Plugin de integración de JasperReports en AbanQ

Instalando CodeKa v1.0 sobre Bitnami Xamp Stack (para Windows, Linux, OS X y Solaris).

DIRECCIÓN GENERAL DE EDUCACIÓN SUPERIOR TECNOLÓGICA INSTITUTO TECNOLÓGICO DE CD. VALLES MANUAL DE USUARIO

SISTEMAS INFORMÁTICOS EN TIEMPO REAL 2º Ingeniería Industrial MANUAL DE HERRAMIENTAS SOFTWARE PARA PROGRAMACIÓN EN UNIX

1 MANUAL DE INSTALACIÓN

Azure DevOps y Powershell Desired State Configuration (DSC)

Gestión de Registros Parte I: rsyslog

Instalación de Tomcat7 en Ubuntu

UNIVERSIDAD TÉCNICA DEL NORTE

La publicación. Pere Barnola Augé P08/93133/01510

Historial de Versiones: Velneo vversion. Funcionamiento. Repositorio de versiones. Funcionalidades del Historial de Versiones. Bloquear.

Práctica 1: Herramientas básicas:

Instalación software VPN Usuarios SARA

Servicio de groupware

Herramienta Páginas amarillas. Manual de Instalación

Vmware vsphere es la suite de virtualizacion empresarial de Vmware. vsphere es un conjunto de aplicaciones, no una aplicación en si.

Práctica 1 SISTEMAS OPERATIVOS. Introducción...

SISTEMA CABILDO MANUAL DE INSTALACIÓN CLIENTE ERP CABILDO LA SOLUCIÓN TECNOLÓGICA MÁS COMPLETA E INTEGRAL PARA GOBIERNOS LOCALES

Cristian Blanco

Uso básico de la terminal

5. Instalación y configuración de un servidor DNS. (configuración mediante webmin).

Manual de usuario del plugin RM-ODP para MDT Papyrus

INSTALACIÓN DE UBUNTU SERVER 12.4 EN MÁQUINA VIRTUAL

Informática 1 Grado en Matemáticas

Administración avanzada de paquetes. apt-proxy.

CONFIGURACIÓN DEL SERVIDOR

Ubuntu Server HOW TO : SERVIDOR FTP EN ESTE SE REALIZA LO SIGUIENTE: En este how to se le va a enseñar como compartir datos en un servidor ftp..

Instalación de Winisis en Windows 8 (64 bits) usando Virtual Box Oracle Ernesto Spinak 10/07/2013 borrador 1

INSTALACIÓN DE MySQL SERVER EN WINDOWS

Instalación de un nodo (cliente) - GIA

Servidor Apache. Instalación Configuración Apache con Webmin 24/03/2014. Vicente

Curso de verano. Biología Computacional: Análisis masivo de datos ómicos

Creando usuarios y grupos. Usuario root. Usuarios especiales

TEMA 2: GESTIÓN DE ARCHIVOS

ATLAS MANUAL DE USUARIO DEL ARQUETIPO WEB CON DOCUMENTUM

Vielka Mari Utate Tineo Instituto Tecnológico de las Américas ITLA. Profesor José Doñé PRACTICA NO. 7, SAMBA COMO GRUPO DE TRABAJO

INSTALACIÓN DE PROFTPD

Práctica 3 Manejo de GCC y ejecución de programas por consola. Computador Compilador Editor de texto o IDE

ANEXO D Manual de Técnico MANUAL TECNICO PROMO APP PROMO PLATFORM PROMO API PROYECTO FINAL

MANUAL DE INSTALACIÓN APACHE DIRECTORY SERVER PRESENTADO POR: YEISON JAIR VARGAS FLORES CODIGO: RICARDO ANDRES NIÑO MENDEZ CODIGO:

Creación de un Sistema Mínimo con GNU/Linux

Transcripción:

Continuous Delivery (y 3) Sesión 11a

2

Entornos de prueba La última parte de la tubería de despliegue consiste en probar los builds compilados en distintos entornos de prueba Distintos entornos Tests de integración y aceptación UAT Tests de capacidad Producción A su vez, cada uno de ellos puede tener distintas configuraciones y estar formado por múltiples máquinas Pruebas con distintos clientes y navegadores Pruebas con distintas bases de datos y servicios (si se va a desplegar la aplicación en distintos entornos de producción) 3

Desplegar de la misma forma Es esencial usar el mismo proceso para desplegar en los distintos entornos Características diferentes de los entornos Distintas IP (como mínimo) Distintos sistemas operativos Distinta configuración del middleware (localización de las bases de datos y servicios externos) El script de despliegue debería ser el mismo en todos los entornos: 1. Configurar el entorno 2. Desplegar los binarios 3. Pruebas de humo Los entornos deben tener siempre la misma configuración inicial, dependiente solo de los tests que se quieren realizar 4

Gestión de entornos de prueba y producción Cuanto menos control tenemos sobre el entorno en el que el código se ejecuta, más probabilidades hay de comportamientos no esperados Nos interesa tener control sobre todos y cada uno de los bits del entorno en el que se despliega nuestra aplicación Los cambios en los entornos deben realizarse sólo mediante procesos automatizados y registrados En cada entorno se debe definir claramente (y guardar en el control de versiones): Configuración Software que se despliega Topología de la red Estado El objetivo final es necesitar solo dos parámetros para realizar el despliegue: Identificador del entorno de despliegue Identificador del build a desplegar 5

Herramientas de empaquetado En cada entorno hay que desplegar: Conjunto de ficheros binarios Ficheros de configuración Ficheros estáticos en el control de versiones Es muy recomendable utilizar un sistema de empaquetado para desplegar la aplicación en el entorno: RPMs en el mundo Linux Cada release se empaqueta y se sube a un repositorio Las herramientas de gestión de entornos se encargan de instalar el paquete de la misma forma que instalan el resto de software 6

Virtualización de entornos La virtualización permite crear y configurar distintos entornos en una única máquina física Muy económico Entornos controlables Ejecuciones repetibles Software más popular VirtualBox (Oracle) vsphere Hypervisor (VMware) 7

Vagrant Software open source, creado por Mitchel Hashimoto (@mitchellh) Escrito en Ruby Permite automatizar la creación, puesta en marcha, configuración y aprovisionamiento de entornos virtuales Vagrant web site 8

Instalación de Vagrant Funciona inicialmente con VirtualBox Fácil instalación mediante paquetes nativos del SO Se instala el comando vagrant Posibles comandos: 9

Inicializando y descargando una box Se crea un directorio y se ejecuta el comando vagrant init para crear un fichero Vagrantfile que contiene una configuración por defecto $ mkdir prueba-vagrant $ cd prueba-vagrant $ vagrant init Se descarga una máquina virtual vacía (box) de una URL con el comando vagrant box add nombre URL $ vagrant box add precise32 http://files.vagrantup.com/precise32.box Downloading box from URL: http://files.vagrantup.com/precise32.box Extracting box...te: 568k/s, Estimated time remaining: 0:00:02)) Successfully added box 'database' with provider 'virtualbox' 10

Boxes Las boxes son esqueletos de máquinas virtuales de la plataforma de virtualización con la que Vagrant esté trabajando Lista de boxes oficiales: https://github.com/mitchellh/vagrant/wiki/available-vagrant-boxes Lista de boxes de la comunidad: http://www.vagrantbox.es Contienen lo básico para poder poner en marcha Vagrant: Gestor de paquetes ssh Usuario ssh Chef o Puppet (aunque no es necesario, lo veremos después) Se guardan en el directorio ~/.vagrant.d/boxes 11

Cómo usar una box Un primer ejemplo Fichero Vagrantfile Vagrant.configure("2") do config config.vm.box = "precise32" end Para poner en marcha la máquina virtual y conectarse por ssh: $ vagrant up $ vagrant ssh 12

Carpeta compartida Vagrant comparte automáticamente el directorio de la máquina host (el directorio con el fichero Vagrantfile) en el directorio /vagrant de la máquina virtual $ vagrant up Bringing machine 'default' up with 'virtualbox' provider... [default] Booting VM... [default] Waiting for machine to boot. This may take a few minutes... [default] Machine booted and ready [default] Mounting shared folders... [default] -- /vagrant [default] VM already provisioned. Run `vagrant provision` or use `--provision` to force it $ vagrant ssh Welcome to Ubuntu 12.04 LTS (GNU/Linux 3.2.0-23-generic-pae i686) * Documentation: https://help.ubuntu.com/ Welcome to your Vagrant-built virtual machine. Last login: Fri Sep 14 06:22:31 2012 from 10.0.2.2 vagrant@precise32:~$ pwd /home/vagrant vagrant@precise32:~$ ls /vagrant Vagrantfile 13

Aprovisionamiento Es posible automatizar la instalación de software en las máquinas virtuales definiendo un script en el fichero bootstrap.sh en el mismo directorio del Vagrantfile: #/usr/bin/env bash apt-get update apt-get install -y apache2 rm -rf /var/www ln -fs /vagrant /var/www Y añadiendo una instrucción en Vagrantfile: Vagrant.configure("2") do config config.vm.box = "precise32" config.vm.provision :shell, :path => "bootstrap.sh" end 14

Puesta en marcha El comando vagrant reload --provision vuelve a lanzar la máquina virtual y ejecuta el aprovisionamiento: $ vagrant reload -provision... se ejecuta el script bootstrap.sh $ echo "Hola mundo" > hola.txt $ vagrant ssh vagrant@precise32:~$ wget -qo- 127.0.0.1/hola.txt Hola mundo 15

Configuración de la red El fichero Vagrantfile permite también configurar la red de la máquina virtual con distintas opciones Reenvío de puertos Asignación de dirección IP estática Definición de redes privadas entre máquinas (documentación de Vagrant) Ejemplo de reenvío de puertos Vagrant.configure("2") do config config.vm.box = "precise32" config.vm.provision :shell, :path => "bootstrap.sh" config.vm.network :forwarded_port, host: 4567, guest: 80 end Si hacemos vagrant reload podremos acceder en la máquina host al servidor web en http://127.0.0.1:4567 16

Múltiples máquinas Es posible controlar distintas máquinas con un único Vagrantfile Vagrant.configure("2") do config config.vm.provision "shell", inline: "echo Hello" config.vm.define "web" do web web.vm.box = "apache" end config.vm.define "db" do db db.vm.box = "mysql" end end Es posible arrancar, conectarse, etc. a cualquier máquina con vagrant up <machine-name> Es posible comunicar una máquina con otra a través de la red privada 17

Otros comandos vagrant halt: para la máquina vagrant destroy: elimina el estado de la máquina (no borra la box) vagrant status: muestra el estado de las máquinas 18

Herramientas de gestión de entornos Por defecto la configuración (aprovisionamiento) de la máquina Vagrant se hace con un script de shell Es posible utilizar otras herramientas de mayor nivel, independientes del shell y del SO usado, como Puppet o Chef Vagrant.configure("2") do config config.vm.provision "puppet_server" do puppet puppet.puppet_server = "puppet.example.com" puppet.puppet_node = "node.example.com" puppet.options = "--verbose --debug" end end 19

Introducción a Puppet Permite automatizar la gestión toda la infraestructura de máquinas de una empresa Terminología: Nodo: máquina que mantiene una configuración determinada Puppet master: servidor de Puppet que chequea la configuración de los nodos cada 30 minutos Puppet agent: agente de Puppet que se ejecuta en cada nodo y se comunica con el Puppet master Estado deseado: Configuración definida para cada uno de los nodos Cada nodo envía al Puppet master datos sobre su estado actual Si un nodo no se encuentra en la configuración deseada, el maestro le envía detalles de su configuración y el agente realiza los cambios necesarios en el nodo para volver al estado deseado 20

Introducción a Puppet http://puppetlabs.com/puppet/what-is-puppet 21

Introducción a Puppet http://puppetlabs.com/puppet/what-is-puppet 22

Descripción de la configuración de un nodo La configuración de un nodo se describe mediante la definición de recursos Cada recurso es una instancia de un tipo de recurso, tiene un nombre, unos atributos (definidos por el tipo) y unos valores para cada atributo Puppet usa su propio lenguaje para definir los recursos user { 'dave': ensure => present, uid => '507', gid => 'admin', shell => '/bin/zsh', home => '/home/dave', managehome => true, } En los recursos se define el estado deseado 23

Tipos de recursos Es conveniente tener a mano la chuleta de tipos de recursos The Trifecta file package service Otros importantes notify exec cron user group 24

Consola de administración La versión enterprise de Puppet (gratuita hasta 10 nodos) tiene herramientas y utilidades para simplificar la gestión, como la consola de administración 25

Vídeo de Puppet enterprise http://www.youtube.com/watch?v=j8imf23jzag#t=1 26

Lecturas Jez Humble, Continuous Delivery, pp. 152-168 27