Gestionando tu Infraestructura con
Ansible
Moisés Maciá@moises_macia
Hoja de ruta
● ¿Qué es la automatización de servidores?● Introducción a Ansible.● Topología y casos de uso.● Recursos.
¿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, ...
Automatización de servidores: ¿Por qué?
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.
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.
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
Otras soluciones
● Chef.● Puppet.● SaltStack.
http://en.wikipedia.org/wiki/Comparison_of_open-source_configuration_management_software
Ansible: instalación
$ sudo pip install ansible [--upgrade]
Se puede instalar via apt, yum, pkg y homebrew
Ansible: estructura
● Inventario: definición de la arquitectura.● Puede ser estático o dinámico.
● Playbooks.● Roles:
● Tasks.● Handlers.● Variables.● Files.● Templates.● Meta.
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)
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.
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.
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
Top Related