Upload
scrumecuador
View
284
Download
3
Embed Size (px)
Citation preview
#rsgecu2015DevOps: Infraestructura Agil con Open Source
DevOps:Infraestructura Agil con Open Source
Ricardo ArguelloCEOSoporte Libre@ricardoarguello
#rsgecu2015DevOps: Infraestructura Agil con Open Source
Acerca de
● Casi 20 años de experiencia en Desarrollo/Infra● Colaborador del proyecto Fedora● Ex-colaborador de JBoss.org● Desarrollador o Sysadmin?● CEO de Soporte Libre: Software Libre y Open
Source
#rsgecu2015DevOps: Infraestructura Agil con Open Source
Acerca de ustedes
● Desarrolladores?● Sysadmins?● Software Libre / Open Source?
#rsgecu2015DevOps: Infraestructura Agil con Open Source
He escuchado mucho acerca de DevOps ultimamente!
Qué es?
#rsgecu2015DevOps: Infraestructura Agil con Open Source
Como luce I.T. dentro demuchas organizaciones hoy?
#rsgecu2015DevOps: Infraestructura Agil con Open Source
La ventana de mantenimiento pasa de la medianoche
LA ULTIMA ACTUALIZACIÓN A UNA APLICACIÓN CRÍTICA
#rsgecu2015DevOps: Infraestructura Agil con Open Source
La ventana de mantenimiento pasa de la medianoche
La base de datos de producción se corrompe durante la actualización
LA ULTIMA ACTUALIZACIÓN A UNA APLICACIÓN CRÍTICA
#rsgecu2015DevOps: Infraestructura Agil con Open Source
La ventana de mantenimiento pasa de la medianoche
La base de datos de producción se corrompe durante la actualización
El sitio web está abajo
LA ULTIMA ACTUALIZACIÓN A UNA APLICACIÓN CRÍTICA
#rsgecu2015DevOps: Infraestructura Agil con Open Source
La ventana de mantenimiento pasa de la medianoche
La base de datos de producción se corrompe durante la actualización
El sitio web está abajo
No hay ventas
LA ULTIMA ACTUALIZACIÓN A UNA APLICACIÓN CRÍTICA
#rsgecu2015DevOps: Infraestructura Agil con Open Source
La ventana de mantenimiento pasa de la medianoche
La base de datos de producción se corrompe durante la actualización
El sitio web está abajo
No hay ventas
No se logran las metas del trimestre
LA ULTIMA ACTUALIZACIÓN A UNA APLICACIÓN CRÍTICA
#rsgecu2015DevOps: Infraestructura Agil con Open Source
AGILE SOFTWARE DEVELOPMENT
Conceptos clave:•Cambios pequeños → Menor riesgo•Fallar rápido y recuperarse vs. Nunca fallar•Cambio cultural: Aceptar la falla
#rsgecu2015DevOps: Infraestructura Agil con Open Source
Podemos transformar a Operaciones y Desarrollo en
DevOps?PEOPLE
PROCESS TECHNOLOGY
DEVOPS
“DevOps es una metodología de desarrollo de software que se centra en la comunicación, colaboración e integración entre desarrolladores de software y profesionales en las tecnologías de la información (IT).”
#rsgecu2015DevOps: Infraestructura Agil con Open Source
Cómo habilitar DevOps?
The Three Ways: The Principles Underpinning DevOps(Gene Kim)
http://itrevolution.com/the-three-ways-principles-underpinning-devops/
#rsgecu2015DevOps: Infraestructura Agil con Open Source
Cómo habilitar DevOps?
Entornos operacionales estandarizados Aprovisionamiento automático
#rsgecu2015DevOps: Infraestructura Agil con Open Source
Cómo habilitar DevOps?
Continuous Integration Continuous Delivery
#rsgecu2015DevOps: Infraestructura Agil con Open Source
Self-service Prototipaje rápido
Cómo habilitar DevOps?
#rsgecu2015DevOps: Infraestructura Agil con Open Source
DevOps
Idea ProductoFuncionalidad
SELFPROVISIONING
ENVIRONMENTSTANDARDIZATION
AUTOSCALING
CENTERALIZEDOPS MANAGEMENT
DEV QA UAT PROD
IDE CONFIGURATIONMANAGEMENT
CONTINUOUSINTEGRATION MONITORING
CYCLE TIME
PRODUCTMANAGER
DEVELOPERS TESTENGINEERS
OPERATIONS
CONTINUOUS DELIVERY
#rsgecu2015DevOps: Infraestructura Agil con Open Source
Standard Operation Environment
Sistema Operativo:● Linux:
– CentOS– Fedora– Red Hat Enterprise Linux– Ubuntu
● Mac OS X– Muy popular en desarrollo!
● Windows– No
#rsgecu2015DevOps: Infraestructura Agil con Open Source
Open Source Software
Evite costos excesivos
Siempre se puede hacer un 'fork'
Las cajas negras generan lock-in
#rsgecu2015DevOps: Infraestructura Agil con Open Source
Virtualización o Cloud?
● Las arquitecturas modernas suelen tener cierta parte de su infraestructura en virtualización tradicional y otra en la nube
● Cómo saber cuál usar?– Mascotas vs. Ganado
#rsgecu2015DevOps: Infraestructura Agil con Open Source
Virtualización o Cloud?
MASCOTA:● Le pones un nombre:
mail.soportelibre.com● Es única, amada y cuidada● Cuando se enferma la llevas al veterinario● Nombres? http://namingschemes.com
GANADO:● Le pones nombres como: vm0372-uio.lab.soportelibre.com● Son casi idénticos entre si● Cuando uno se enferma consigues otro!
#rsgecu2015DevOps: Infraestructura Agil con Open Source
Instalación desatendida
● Fedora / CentOS / RHEL:● Instalación desatendida: Kickstart
installurl --url=http://satellite.soportelibre.com/rhel/rhel-server-6.6-x86_64/lang en_US.UTF-8keyboard usnetwork --onboot yes --device eth0 --bootproto dhcp --hostname minimal.soportelibre.comfirewall --service=sshtimezone --utc America/Guayaquilclearpart --allzerombrpart /boot --fstype=ext4 --size=256part swap --size=2048part / --fstype=ext4 --size=1 --grow%packages@basehttpdphp%end
#rsgecu2015DevOps: Infraestructura Agil con Open Source
Instalación desatendida
● Fedora / CentOS / RHEL:● Instalación desatendida: Kickstart
installurl --url=http://satellite.soportelibre.com/rhel/rhel-server-6.6-x86_64/lang en_US.UTF-8keyboard usnetwork --onboot yes --device eth0 --bootproto dhcp --hostname minimal.soportelibre.comfirewall --service=sshtimezone --utc America/Guayaquilclearpart --allzerombrpart /boot --fstype=ext4 --size=256part swap --size=2048part / --fstype=ext4 --size=1 --grow%packages@basehttpdphp%end
Tada!
#rsgecu2015DevOps: Infraestructura Agil con Open Source
Virtualización
● VirtualBox: Virtualización limitada en varias plataformas con emulación de dispositivos.
● KVM: Soportada en Linux, necesita hardware virtualization.
#rsgecu2015DevOps: Infraestructura Agil con Open Source
VirtualBox
● Plataforma de virtualización de Oracle● No es Open Source● Rendimiento menor a KVM● Multiples plataformas soportadas● Muy popular entre usuarios Mac OS X
#rsgecu2015DevOps: Infraestructura Agil con Open Source
Virtualización con KVM
● Fedora + KVM en el desktop es posible, gracias a GNOME Boxes en Fedora
#rsgecu2015DevOps: Infraestructura Agil con Open Source
Sistema Operativo
● Virtualizamos en el Desktop (Linux)● Desplegamos en la nube o en nuestros
servidores (Linux)● La versión utilizada en desarrollo debe ser la
misma que en producción!● DevOps: Estandarizar y automatizar el
despliegue de la plataforma
#rsgecu2015DevOps: Infraestructura Agil con Open Source
Vagrant
● Herramienta para crear y configurar entornos virtuales
Soporta múltiples plataformas:- VirtualBox- KVM- VMWare
Soporta gestores de configuración:- Puppet- Chef- Ansible
http://vagrantup.com
#rsgecu2015DevOps: Infraestructura Agil con Open Source
Vagrant
● Finalmente disponible en Fedora con soporte a KVM!
Fedora 21/22:
$ sudo yum install vagrant-libvirt$ vagrant box add {title} {url}$ vagrant init {title}$ vagrant up
#rsgecu2015DevOps: Infraestructura Agil con Open Source
Infraestructura como código
● Entorno Operativo Estandarizado:– Sistema Operativo
– Lenguaje
– Librerías
– Servidor de aplicaciones
#rsgecu2015DevOps: Infraestructura Agil con Open Source
Puppet
● Herramienta para gestión de configuración.
● Permite manejar la configuración de sistemas operativos Unix/Linux en forma declarativa.
● A información de la configuración se guarda en Manifests.
● Utiliza un DSL para describir la configuración.
http://puppetlabs.com
#rsgecu2015DevOps: Infraestructura Agil con Open Source
Puppet
● Manifests: Archivos de configuración escritos en un DSL.
● Infraestructura como código:– Especificar que un paquete esté instalado:
package { 'openssh-server': ensure => present,}
#rsgecu2015DevOps: Infraestructura Agil con Open Source
Puppet
● Modelo declarativo– Se define el estado, no el proceso
– Para definir que un servicio esté arriba:
service { 'ntp': name => 'ntpd', ensure => running,}
#rsgecu2015DevOps: Infraestructura Agil con Open Source
Puppet
● Arquitectura– Maestro – Agente
– Esquema tipo Pull
– Identificación usando SSL
#rsgecu2015DevOps: Infraestructura Agil con Open Source
Puppet
● manifests/site.pp
class 'dave' { user { 'dave': ensure => present, uid => '507', gid => 'admin', shell => '/bin/zsh', home => '/home/dave', managehome => true, } file {'/tmp/test1': ensure => present, content => "Hi.", }}
#rsgecu2015DevOps: Infraestructura Agil con Open Source
Puppet
● Nodes:
node 'auth.soportelibre.com' { class { 'dave': }}
#rsgecu2015DevOps: Infraestructura Agil con Open Source
Foreman
● Una forma de manejar Puppet en forma escalable:– Provisioning
– Configuration
– Monitoring
Foreman
http://theforeman.org
#rsgecu2015DevOps: Infraestructura Agil con Open Source
Git
● Control de versionamiento● Dado que la configuración es código, este debe
estar versionado
#rsgecu2015DevOps: Infraestructura Agil con Open Source
Git Repository
http://gitlab.com http://gitblit.com
#rsgecu2015DevOps: Infraestructura Agil con Open Source
Ansible
● Simple● Sin agentes● Se ejecuta desde la
maquina del administrador● Usa Python y SSH● Modelo Push
http://ansible.com
#rsgecu2015DevOps: Infraestructura Agil con Open Source
Mejores Prácticas
● No utilizar templates de máquinas virtuales● Separar el aprovisionamiento de la instalación● Usar llaves SSH, no passwords● Usar un SOE● Automatizar todo● Usar control de versionamiento
#rsgecu2015DevOps: Infraestructura Agil con Open Source
Mejores Prácticas
● No utilizar templates de máquinas virtuales● Separar el aprovisionamiento de la instalación● Usar llaves SSH, no passwords● Usar un SOE● Automatizar todo● Usar control de versionamiento
#rsgecu2015DevOps: Infraestructura Agil con Open Source
Docker
Plataforma para construir, desplegar y ejecutar aplicaciones distribuidas utilizando Containers
http://docker.com
#rsgecu2015DevOps: Infraestructura Agil con Open Source
Solución
● Separación de responsabilidades● El usuario empaqueta● El transporte mueve el container
● Interface estándar
#rsgecu2015DevOps: Infraestructura Agil con Open Source
Docker Containers
Preocupación del desarrollador:● Código● Librerias● Servicios● Configuración● Datos
Todos los servidores lucen iguales
Interface estandarizada para un contenedor de software
Preocupación del administrador:● Mover contenedores● Levantar / detener contenedores● Logging● Monitoreo● Configuración de redes
Todos los contenedores lucen iguales
#rsgecu2015DevOps: Infraestructura Agil con Open Source
Docker
Máquinas Virtuales:Cada aplicacion incluye no solo la aplicación sino los binarios y librerias, pero además todo el sistema operativo
Docker:Solo se incluye la aplicación y sus dependencias. Cada sistema está aislado y correm procesos en forma separada. Mucho más eficiente.
#rsgecu2015DevOps: Infraestructura Agil con Open Source
Docker
# docker pull centos# docker run -it centos /bin/bash$ cat /etc/redhat-releaseCentOS Linux release 7.0.1406 (Core)
#rsgecu2015DevOps: Infraestructura Agil con Open Source
Kubernetes
● Orquestación de aplicaciones Docker● Servicios altamente disponibles● Configuración de containers en forma
declarativa
#rsgecu2015DevOps: Infraestructura Agil con Open Source
Project Atomic
● Distribución de Linux pensada para correr contenedores Docker:– Basada en Fedora
– Versión soportada por Red Hat: RHEL Atomic Host
– Seguridad: SELinux
http://projectatomic.io
#rsgecu2015DevOps: Infraestructura Agil con Open Source
Cloud:
Almacenamiento(RHS)
Hardware(x86)
Virtualización(RHEV)
Sistema Operativo(Linux)
Plataforma de aplicaciones(JBoss, PHP, Ruby, etc)
Aplicación
Automatizado y manejado por un Cloud Público o Privado
Manejado y controlado por el cliente (IT, Desarrollo, un usuario)
IaaS PaaS SaaS
Mayor Control
● Mayor Automatización
#rsgecu2015DevOps: Infraestructura Agil con Open Source
OpenShift
origin
Public Cloud Service
Private Cloud Software
Open Source Project
#rsgecu2015DevOps: Infraestructura Agil con Open Source
Multi-lenguaje,Auto-escalable,Auto-servicio,
Elastico,Cloud Application Platform
OpenShift es un
PaaS Open Source
#rsgecu2015DevOps: Infraestructura Agil con Open Source
ALMACENAMIENTO(RHS)
HARDWARE(x86)
VIRTUALIZACIÓN(RHEV)
SISTEMA OPERATIVO(Linux)
PLATAFORMA APP(JBoss, PHP, Ruby, etc)
APLICACION
● Public Cloud Private Cloud
Desarro-llador
controla
Desarro-llador controla
Operado por Openshift
IT provee
OpenShift automatiza, IT controla
#rsgecu2015DevOps: Infraestructura Agil con Open Source
Amazon / OpenStack (IaaS) / RHEV (Virt) / Servidores Físicos
#rsgecu2015DevOps: Infraestructura Agil con Open Source
Linux Linux Linux
OpenShift esta formado por instancias de Linux
Linux
Amazon / OpenStack (IaaS) / RHEV (Virt) / Servidores Físicos
#rsgecu2015DevOps: Infraestructura Agil con Open Source
Nodes: donde las aplicaciones residen.Brokers: mantienen a OpenShift corriendo.
Brokers Node Node Node
Linux Linux LinuxLinux
Amazon / OpenStack (IaaS) / RHEV (Virt) / Servidores Físicos
#rsgecu2015DevOps: Infraestructura Agil con Open Source
Linux Linux
SELinux divide en forma segura cada instancia de un Node
Broker Node Node Node
Linux
Amazon / OpenStack (IaaS) / RHEV (Virt) / Servidores Físicos
#rsgecu2015DevOps: Infraestructura Agil con Open Source
Linux Linux
Un Gear representa un contenedor seguro en Linux
Broker Node Node Node
Linux
Amazon / OpenStack (IaaS) / RHEV (Virt) / Servidores Físicos
#rsgecu2015DevOps: Infraestructura Agil con Open Source
Flujo de trabajode desarrollador
Linux Linux
Un desarrollador crea una nueva aplicación OpenShift crea un Gear
Web ConsoleEclipse IDECmd Line
Broker Node Node Node
Linux
OpenShiftGear
Amazon / OpenStack (IaaS) / RHEV (Virt) / Servidores Físicos
#rsgecu2015DevOps: Infraestructura Agil con Open Source
OpenShift automatiza laconfiguración de un Gearmediante Cartuchos
Linux Linux
Cartridges: Es como OpenShift instala lenguajes y servidores
Web ConsoleEclipse IDECmd Line
Broker Node Node Node
Linux
Amazon / OpenStack (IaaS) / RHEV (Virt) / Servidores Físicos
JBoss MySQL
#rsgecu2015DevOps: Infraestructura Agil con Open Source
OpenShift tiene algunosCartridges incluídos
Se pueden añadir más...
CustomEtc.
Etc.
Ruby
Python
PHP
Java
Postgres
MySQL
OpenShift Default
Cartridges
Amazon / OpenStack (IaaS) / RHEV (Virt) / Servidores Físicos
#rsgecu2015DevOps: Infraestructura Agil con Open Source
Code and Push
Linux Linux
El desarrollador empuja (push) sus cambios mediante Git
Git Protocol / ssh
Broker Node Node Node
Linux
Push
Amazon / OpenStack (IaaS) / RHEV (Virt) / Servidores Físicos
JBoss
Code
GitRepo MySQL
#rsgecu2015DevOps: Infraestructura Agil con Open Source
OpenShift automatiza:compila, prueba,publica
Linux Linux
Broker Node Node Node
Linux
Amazon / OpenStack (IaaS) / RHEV (Virt) / Servidores Físicos
Jenkins(CI)
Maven(Builds) Apache
(HTTP)
CodeJBoss
GitRepo MySQL
#rsgecu2015DevOps: Infraestructura Agil con Open Source
OpenShift automatizael escalamiento dela aplicación
Broker Node Node Node
Linux
HA-Proxy MySQLJava
CodeJava
CodeJava
X
Amazon / OpenStack (IaaS) / RHEV (Virt) / Servidores Físicos
#rsgecu2015DevOps: Infraestructura Agil con Open Source
Los desarrolladores pueden escoger como trabajar con OpenShift
● Integración con IDE
Web BrowserConsole
Command LineTooling
REST APIs
#rsgecu2015DevOps: Infraestructura Agil con Open Source
El desarrollador escoge el lenguaje, framework y plataforma
#rsgecu2015DevOps: Infraestructura Agil con Open Source
Apache 2.0 LicenseDisponible como:
• Source, RPMs• .ISO, LiveCD
IRC, email, forums
Versión Open Source para despliegue en Nube Privada:
https://github.com/openshift
OpenShift Origin
#rsgecu2015DevOps: Infraestructura Agil con Open Source
Como usar OpenShift?
http://www.openshift.com
#rsgecu2015DevOps: Infraestructura Agil con Open Source
Usando Ansible en la vida real
● Cliente financiero, aplicación bancaria altamente disponible
● Arquitectura n-capas, Disaster Recovery, ambientes Intranet e Internet
● Desplegado sobre Linux, servidores de aplicaciones JBoss
● Versionamiento Git
#rsgecu2015DevOps: Infraestructura Agil con Open Source
Usando Ansible en la vida real
● Plataformas:– JBoss EWS (load balancers)
– JBoss EAP 6 (app servers)
– JBoss Fuse Service Works 6 (integration)
#rsgecu2015DevOps: Infraestructura Agil con Open Source
Usando Ansible en la vida real
● 3 ambientes:– Desarrollo
– Pre-producción
– Producción
● Dos escenarios:– Internet
– Intranet
#rsgecu2015DevOps: Infraestructura Agil con Open Source
Usando Ansible en la vida real
● 50+ máquinas virtuales– Red Hat Enterprise Virtualization
– Storage: IBM Storwize v7000
– Disaster Recovery: Guayaquil
#rsgecu2015DevOps: Infraestructura Agil con Open Source
Usando Ansible en la vida real
● Virtualización: Red Hat Enterprise Virtualization● Sistema Operativo: Red Hat Enterprise Linux
#rsgecu2015DevOps: Infraestructura Agil con Open Source
Usando Ansible en la vida real
● Configuration Management:– Ansible:
– Repetible
– Versionamiento (Git)
– 45 minutos para reinstalar toda la infraestructura
#rsgecu2015DevOps: Infraestructura Agil con Open Source
Usando Ansible en la vida real
---
# Despliegue de toda la infraestructura
- name: Aplicar configuracion comun a todos los servidores
hosts: all
roles:
- common
- name: Configurar y desplegar servidores RHEL + Balancer Add-On
hosts: lb
roles:
- lb
#rsgecu2015DevOps: Infraestructura Agil con Open Source
Usando Ansible en la vida real
---
- name: Configurar DNS
copy: src=resolv.conf
dest=/etc/resolv.conf
roles/common/task/main.yml
#rsgecu2015DevOps: Infraestructura Agil con Open Source
Usando Ansible en la vida real
- name: Instalar paquetes comunes
yum: name={{ item }}
state=installed
with_items:
- elinks
- libselinux-python
- nc
- ntp
- openssh-clients
- rsync
- screen
- unzip
- vim-enhanced
- wget
roles/common/task/main.yml
#rsgecu2015DevOps: Infraestructura Agil con Open Source
Usando Ansible en la vida real
- name: Configurar NTP
template: src=ntp.conf.j2
dest=/etc/ntp.conf
owner=root
group=root
mode=0644
notify: restart ntpd
tags: ntp
roles/common/task/main.yml
#rsgecu2015DevOps: Infraestructura Agil con Open Source
Usando Ansible en la vida real
- name: Iniciar servicio ntpd
service: name=ntpd
state=started
enabled=yes
tags: ntp
roles/common/task/main.yml
- name: Crear usuario rarguello user: name=rarguello
#rsgecu2015DevOps: Infraestructura Agil con Open Source
Usando Ansible en la vida real
- name: Crear usuario rarguello
user: name=rarguello
- name: Configurar authorized_key para usuario rarguello
authorized_key: user=rarguello
key="ssh-rsa AAAAB3NzaC1yc2..."
roles/common/task/main.yml
- name: Crear usuario rarguello user: name=rarguello
#rsgecu2015DevOps: Infraestructura Agil con Open Source
Usando Ansible en la vida real
- name: Iniciar servicio ntpd
service: name=ntpd
state=started
enabled=yes
tags: ntp
roles/common/task/main.yml
- name: Crear usuario rarguello user: name=rarguello
#rsgecu2015DevOps: Infraestructura Agil con Open Source
Usando Ansible en la vida real
- name: Configurar NTP
template: src=ntp.conf.j2
dest=/etc/ntp.conf
owner=root
group=root
mode=0644
notify: restart ntpd
tags: ntp
roles/common/task/main.yml
#rsgecu2015DevOps: Infraestructura Agil con Open Source
Usando Ansible en la vida real
- name: Install JBoss Enterprise Web Server
yum: name={{ item }}
state=present
with_items:
- httpd
- mod_ssl
- mod_jk-ap22
- mod_cluster-native
tags: httpd
- name: Create the mod_cluster.conf file
template: src=mod_cluster.conf.j2
dest=/etc/httpd/conf.d/mod_cluster.conf
owner=root
group=root
mode=0644
notify: restart httpd
tags: httpd
roles/common/task/main.yml
#rsgecu2015DevOps: Infraestructura Agil con Open Source
Usando Ansible en la vida real
- name: Configurar NTP
template: src=ntp.conf.j2
dest=/etc/ntp.conf
owner=root
group=root
mode=0644
notify: restart ntpd
tags: ntp
roles/common/task/main.yml
#rsgecu2015DevOps: Infraestructura Agil con Open Source
Usando Ansible en la vida real
- name: Instalar paquetes comunes
yum: name={{ item }}
state=installed
with_items:
- elinks
- libselinux-python
- nc
- ntp
- openssh-clients
- rsync
- screen
- unzip
- vim-enhanced
- wget
roles/common/task/main.yml
#rsgecu2015DevOps: Infraestructura Agil con Open Source
Usando Ansible en la vida real
diff --git a/roles/ews/tasks/main.yml b/roles/ews/tasks/main.yml
index b3edb03..a160b3e 100644
--- a/roles/ews/tasks/main.yml
+++ b/roles/ews/tasks/main.yml
@@ -7,6 +7,7 @@
- mod_ssl
- mod_jk-ap22
- mod_cluster-native
+ - php
tags: httpd
- name: Create the mod_cluster.conf file
$ git diff
#rsgecu2015DevOps: Infraestructura Agil con Open Source
Ricardo Arguello
@ricardoarguello