Definiciones:
playbook [1]: es el nombre que le da ansible al archivo donde se define la configuración que se desea tener en los servidores. Este está definido con una sintaxis YAML. [2]
plays: un playbook está compuesto por varios "plays". El objetivo de un "play" es mapear un grupo de hosts en roles bien definidos. representado por lo que ansible llama "tasks". A nivel básico, una "task" es nada más que una llamada a un modulo de ansible.
Esta es mi configuración de ejemplo que no es ni siquiera util pero es una forma de empezar a probarlo.
---
- hosts: epas.dev
user: www-data
sudo: yes
tasks:
- name: Apache2 no tiene que estar
apt: pkg=apache2 state=absent
- name: Confirmando funcionamiento de Nginx
service: name=nginx state=started
Lo interesante es ver que cuando defino un servicio no defino el Comando a ejecutarse para dejarlo en el estado necesario como si hacemos en Fabric [3] y sino que solamente Declaramos nuestra intención de como queremos que este funcionando.
En este caso previamente voy a parar nginx solamente para que vean que sucede.
admin@quicuo-kaizen:/home/proyectos/serviquo/plays$ ansible-playbook playbook.yml PLAY [epas.dev] *************************************************************** GATHERING FACTS *************************************************************** ok: [epas.dev] TASK: [Apache2 no tiene que estar] ******************************************** ok: [epas.dev] TASK: [Confirmando funcionamiento de Nginx] *********************************** changed: [epas.dev] PLAY RECAP ******************************************************************** epas.dev : ok=3 changed=1 unreachable=0 failed=0Vemos como cada "task" es ejecutada, e idempotente [4] donde cada tarea si no es necesaria no se vuelve a ejecutar solamente es comprobada. y al final hay un resumen con las tareas que fueron ejecutadas.
Hay muchas cosas más que todavia no pude poner en práctica por cuestión de tiempo pero que son muy poderosas como:
templating
Se puede definir un template armado en el bonito jinja2[5] y después subirlo a al servidor.
handlers
Son eventos en el caso de que se hagan cambios el siguiente "task" es un ejemplo sacado directamente de la web de ansible [6]
- name: template configuration file
template: src=template.j2 dest=/etc/foo.conf
notify:
- restart memcached
- restart apache
handlers:
- name: restart memcached
service: name=memcached state=restarted
- name: restart apache
service: name=apache state=restarted
Los handlers son básicamente otros task que se ejecutan solamente en el caso de un cambio en el task donde fue configurado.En este caso se reinicia el memcached y el apache solamente en el caso de que se copie el template y el archivo sea reemplazado efectivamente.
Los invito a seguir investigando y seguir leyendo!!! más sobre python, sobre ansible, sobre sysadmins!
[0] http://www.ansibleworks.com/docs/intro_adhoc.html
[1] http://www.ansibleworks.com/docs/playbooks.html
[2] http://www.ansibleworks.com/docs/YAMLSyntax.html
[3] http://gonzamartinez.blogspot.com.ar/2013/09/fabric-automatizando-quicuo.html
[4] http://es.wikipedia.org/wiki/Idempotencia
[5] http://jinja.pocoo.org/docs/
[6] http://www.ansibleworks.com/docs/playbooks.html#handlers-running-operations-on-change
No hay comentarios.:
Publicar un comentario