Gestionando tu infraestructura con Ansible

24
Gestionando tu Infraestructura con Ansible Moisés Maciá @moises_macia

description

PHPMad Junio 2014

Transcript of Gestionando tu infraestructura con Ansible

Page 1: Gestionando tu infraestructura con Ansible

Gestionando tu Infraestructura con

Ansible

Moisés Maciá@moises_macia

Page 2: Gestionando tu infraestructura con Ansible
Page 3: Gestionando tu infraestructura con Ansible

Hoja de ruta

● ¿Qué es la automatización de servidores?● Introducción a Ansible.● Topología y casos de uso.● Recursos.

Page 4: Gestionando tu infraestructura con Ansible

¿Qué es la automatización de servidores?

● Creación de servidores (web, balanceadores, DB, etc.)● Amazon, Rackspace, Digital Ocean, ...

● Aprovisionamiento de servidores.● Nginx, PHP, MySQL, ...

● Automatización de despliegues.● Capistrano, capifony, ansible, ...

Page 5: Gestionando tu infraestructura con Ansible

Automatización de servidores: ¿Por qué?

Page 6: Gestionando tu infraestructura con Ansible

Automatización de servidores: ¿Por qué?

● Servicios cloud cada vez más sencillos y potentes.● Recursos que escalan horizontalmente.

● Menor dependencia con un proveedor de servicios.● Infraestructura en código.

● Consistencia entre entornos.● Casos especiales más controlados.● Mucho más sencillo de desplegar en varios entornos.● Menor dependencia del “sysadmin”.● Mayor automatización, más gente puede desplegar.● Facilidad para los nuevos miembros del equipo.

● Plan de contingencia, recuperación ante desastres.● Como devs en una startup desempeñamos varios roles:

● DevOps: automatizarlo todo.● Simplificar nuestra vida, simplificando la gestión de las máquinas.

Page 7: Gestionando tu infraestructura con Ansible

Ansible

● Open source.● Python.

● Los plugins se escriben en cualquier cosa que devuelva JSON.● YAML para la configuración.● Muchos ficheros, pero fáciles de mantener. ● Sin agente, sobre SSH.

● PowerShell en Windows (>= v1.7)● “Batteries included”

● Muchos módulos disponibles para tareas comunes.● Despliegue con un solo comando.● Cifrado de datos sensibles (ansible vault).● Idempotente.

Page 8: Gestionando tu infraestructura con Ansible

Ansible según sus creadores

● Mínima curva de aprendizaje e instalación.● Rápido y paralelizable por defecto.● Sin servidores ni clientes; reutilizar conexiones SSH.● Lenguaje entendible por maquinas y humanos.● Foco en la seguridad, simple de auditar, revisar, etc.● Gestión de maquinas remotas al instante, sin historias.● Permitir plugins en cualquier lenguaje, no solo Python.● Se puede usar sin ser root.● Ser el sistema de automatización mas simple de todos.

https://github.com/ansible/ansible#design-principles

Page 9: Gestionando tu infraestructura con Ansible

Otras soluciones

● Chef.● Puppet.● SaltStack.

http://en.wikipedia.org/wiki/Comparison_of_open-source_configuration_management_software

Page 10: Gestionando tu infraestructura con Ansible

Ansible: instalación

$ sudo pip install ansible [--upgrade]

Se puede instalar via apt, yum, pkg y homebrew

Page 11: Gestionando tu infraestructura con Ansible

Ansible: estructura

● Inventario: definición de la arquitectura.● Puede ser estático o dinámico.

● Playbooks.● Roles:

● Tasks.● Handlers.● Variables.● Files.● Templates.● Meta.

Page 12: Gestionando tu infraestructura con Ansible
Page 13: Gestionando tu infraestructura con Ansible
Page 14: Gestionando tu infraestructura con Ansible
Page 15: Gestionando tu infraestructura con Ansible
Page 16: Gestionando tu infraestructura con Ansible
Page 17: Gestionando tu infraestructura con Ansible
Page 18: Gestionando tu infraestructura con Ansible

Ansible: ejecución

$ ansible-playbook -i my_inventory my_playbook.yml

● -l webservers (solo se ejecuta para el grupo webservers)● -t my_tag (solo se ejecutan las tareas etiquetadas)

Page 19: Gestionando tu infraestructura con Ansible
Page 20: Gestionando tu infraestructura con Ansible

Ansible: topología

● Máquina de control (servidor de despliegues).● Puerta de entrada a nuestra infraestructura.● Punto de control para las claves SSH.

● Todas las maquinas de nuestra infraestructura son accesibles desde la maquina de control.

Page 21: Gestionando tu infraestructura con Ansible
Page 22: Gestionando tu infraestructura con Ansible

Ansible: recursos

● Ansible Tower:● Front-end gráfico para Ansible.● Gestión de equipos.● API REST.● Auditoría, tareas programadas, etc.● Bastante caro, 5.000$/año para 50 nodos.

● Ansible Galaxy:● Repositorio de roles listos para usar.● Bastante nuevo, calidad irregular.

Page 23: Gestionando tu infraestructura con Ansible

Ansible: recursos

● http://docs.ansible.com/index.html● https://github.com/ansible/ansible● http://www.ansible.com/resources● https://github.com/pjan/the-ansibles● http://blog.servergrove.com/2014/04/01/deployment-symfony2-applications-ansible/● https://www.digitalocean.com/community/tutorials

Page 24: Gestionando tu infraestructura con Ansible

Gestionando tu Infraestructura con

Ansible

Moisés Maciá@moises_macia

[email protected]