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

Documentos relacionados