Ansible - SinDominio.Net
Transcripción
Ansible - SinDominio.Net
Cómo evitar tener que hacer todo a mano Índice Automatizando al sysadmin con Ansible 1 De qué estamos hablando 2 Ventajas 4 Por qué Ansible 5 Primer contacto 6 Ejemplo: Pruebas en GISA Elkartea 15 Paranoias 17 Ansible Automatizando al sysadmin con Ansible Ansible: De qué estamos hablando Ansible, Puppet, Cheff, y demás se basan en la idea de que el sysadmin deja por escrito cómo tienen que ser las cosas, y estos programas se aseguran de que sean ciertas. También sirven para ejecutar comandos en muchas máquinas a la vez. Básicamente, nosotros diremos cosas como: • El servidor de bases de datos está en dbserver1 • Todos los servidores del grupo "emailers" envían correos a través de la máquina smtpserver1 • Asegúrate de que el paquete apache2 de todos los servidores web esté actualizado. Estos sistemas se conectarán a las máquinas, comprobarán que lo que decimos es cierto, y de lo contrario ejecutarán los pasos necesarios para que lo sea. GISA Elkartea, Hackmeeting 2013 Ansible De qué estamos hablando Ansible: De qué estamos hablando • Intalaciones • Configuracion de servicios • Tareas frecuentes • Inventario Cómo lo hacen • Centro de mandos • Clientes/Agentes GISA Elkartea, Hackmeeting 2013 Ansible Para qué sirven Ansible: Ventajas • Siempre se siguen los mismos pasos, no nos olvidaremos ninguno. • Los pasos que se siguen están documentados (en código, pero documentados). • Los cambios pueden quedar reflejados en un sistema de control de versiones. • Si nos ponemos enfermos no se acaba el mundo. • Podemos compartir nuestro trabajo igual que se comparte sotfware. • El trabajo repetitivo es aburrido, así convertimos la administración en programación. GISA Elkartea, Hackmeeting 2013 Ansible Ventajas Ansible: Por qué Ansible • Está en Python. Comodidad ante todo. • No necesita instalación de agentes, sólo OpenSSH y Python. • Podemos actuar en servidores de otras personas. • Es relativamente simple. GISA Elkartea, Hackmeeting 2013 Ansible Por qué Ansible Ansible: Primer contacto Veremos un poco por encima cómo instalar Ansible y ejecutar los ejemplos más básicos. No es ni por asomo una introducción completa, para eso está el manual :-) GISA Elkartea, Hackmeeting 2013 Ansible Primer contacto Ansible: Instalación http://www.ansibleworks.com/docs/intro_installation.html $ git clone git://github.com/ansible/ansible.git $ cd ./ansible $ source ./hacking/env-setup A lo facil: pip install ansible GISA Elkartea, Hackmeeting 2013 Ansible Instalación Ansible: Inventario De algún modo hay que decirle a Ansible qué maquinas estamos administrando. Lo más facil es crear un fitxero en formato INI: mail.example.com [webservers] foo.example.com bar.example.com [dbservers] one.example.com two.example.com También se pueden dinámicamente. utilizar otros formatos, o incluso GISA Elkartea, Hackmeeting 2013 generar el inventario Ansible Inventario Ansible: Primer comando Ansible Primer comando Ping a todas las máquinas: ansible all -m ping Comandos arbitrarios: ansible all -a "/bin/echo hello" Golosinas: ansible all -m user -a "name=foo state=absent" GISA Elkartea, Hackmeeting 2013 Ansible: Playbooks Además de definir configuraciones, también sirven para definir los pasos a seguir en un proceso determinado. Un playbook se compone de uno o varios plays. Los plays se componend de tareas que se aplican a determinadas máquinas y de handlers que se ejecutarán cuando se lance un determinado evento. Las tareas se ejecutan en orden, de una en una. Cada tarea indica un módulo y sus parámetros. Los modulos, en su mayoría, son idempotentes: los podemos ejecutar todas las veces que queramos, que sólo realizarán los cambios cuando sea necesario. Los handlers son como las tareas, pero sólo se ejecutan cuando alguna tarea lance el correspondiente evento. Sólo se ejecutan una vez, independientemente de cuantas veces se lance el evento. GISA Elkartea, Hackmeeting 2013 Ansible Playbooks Ansible: Playbooks GISA Elkartea, Hackmeeting 2013 Ansible --- hosts: webservers vars: http_port: 80 max_clients: 200 remote_user: root tasks: - name: ensure apache is at the latest version yum: pkg=httpd state=latest - name: write the apache config file template: src=/srv/httpd.j2 dest=/etc/httpd.conf notify: - restart apache - name: ensure apache is running service: name=httpd state=started handlers: - name: restart apache Ansible: Playbooks GISA Elkartea, Hackmeeting 2013 Ansible service: name=httpd state=restarted Ansible: Reutilización y organización Para poder agrupar todas las tareas de un tipo concreto se utilizan los roles. Los roles pueden agrupar una serie de tareas, variables, handlers etc. Permiten reutilizar tareas en diferentes playbooks y facilitan el intercambio de configuraciones entre disitintos sysadmins. --- hosts: webservers roles: - common - webservers GISA Elkartea, Hackmeeting 2013 Ansible Reutilización y organización Ansible: Reutilización y organización Ansible site.yml webservers.yml fooservers.yml roles/ common/ files/ templates/ tasks/ handlers/ vars/ meta/ webservers/ [...] GISA Elkartea, Hackmeeting 2013 Ansible: Ejemplo: Pruebas en GISA Elkartea En una tarde ya teníamos un playbook funcionando contra los servidores de la asociación. De momento no hemos pasado mas allá de la configuración de un par de servicios básicos. Nos cargamos un par de veces la configuración de los servidores haciendo pruebas, aunque para eso están los backups. Para no tener que hacer pruebas demasiado drásticas, es posible simular la ejecución de un playbook y puede mostrarnos diffs. Configurar un rol es bastante trabajoso, hay que: • Dejar por escrito (decidir) exáctamente cómo queremos que estén configurados • Tener muy claro qué cambios hay que hacer en los ficheros de configuración • Las carpetas *.d ayudan mucho GISA Elkartea, Hackmeeting 2013 Ansible Ejemplo: Pruebas en GISA Elkartea Ansible: Ejemplo: Pruebas en GISA Elkartea Estandarizamos la configuración, a mano no lo habíamos hecho siempre igual. GISA Elkartea, Hackmeeting 2013 Ansible Pudimos añadir una máquina nueva y configurar el nagios y el bacula en 5 minutos. Ansible: Paranoias • Post-install-party • Reparación de salas de uso público • Módulo de inventario de guifi.net • Arreglos típicos de usuarios GISA Elkartea, Hackmeeting 2013 Ansible Paranoias