Inicio > Administración, General > Introducción a Ansible – Playbooks I

Introducción a Ansible – Playbooks I

 

Los Playbooks son los ficheros de configuración, despliegue y orquestación. En ellos describimos las políticas que queremos aplicar a nuestros servidores.

La ventaja de utilizar playbooks sobre comandos online como hemos visto previamente, es que las políticas quedan guardadas, y pueden ser mucho más complejas.

A continuación, mostraré como pasar un ejemplo simple como los que hemos visto previamente, a un Playbook.

 

En el siguiente ejemplo, podemos ver como se realiza la instalación del servicio “ntp” en el grupo de servidores “webservers”

 

# ansible webservers -m apt -a "name=ntp state=present"

 

A continuación, mostramos como sería esto en un fichero de playbook.

 

---
- hosts: webservers
  tasks:
    - name: Instalando ntpdate
      apt: name=ntp state=present

Vemos que se define el grupo de servidores con la directiva “hosts”, y tenemos la etiqueta “tasks” dentro de la cual van a ir todas las tareas a realizarse, en este caso, invocaremos el módulo apt, indicando que queremos que el servicio “ntp” se encuentre presente.

Para ejecutar el Playbook, lo haríamos con el siguiente comando

# ansible-playbook ntp.yml

Y veríamos la ejecución del mismo.

Una vez que sabemos hacer un Playbook simple, podemos añadir más complegidad al mismo, como el que se muestra a continuación.


# vi ~/playbooks/ntp.yml
---
- hosts: webservers
remote_user: root
vars:
ntp_server: hora.rediris.es
tasks:
- name: Instalando ntpdate
apt: name=ntp state=present

- name: agregando servidor al fichero de configuracion
shell: echo "server {{ ntp_server }}" >> /etc/ntp.conf

- name: reinicio sel servicio ntp para coger los cambios.
service: name=ntp state=restarted
---

En este Playbook vemos que se indica el usuario remoto a utilizar, también se definen variables que se utilizarán posteriormente en el Playbook.
En el apartado de tareas, se realiza la instalación del servicio “ntp” con el módulo apt, posteriormente se agrega un nuevo servidor de tiempo en el fichero de configuración, y se reinicia el servicio con el módulo “service”.

Este sería el resultado de la ejecución del Playbook.

root@master:~/playbooks# ansible-playbook ntp.yml
PLAY [webservers] *************************************************************

GATHERING FACTS ***************************************************************
ok: [192.168.1.11]

TASK: [Instalando ntpdate] ****************************************************
changed: [192.168.1.11]

TASK: [agregando servidor al fichero de configuracion] ************************
changed: [192.168.1.11]

TASK: [reinicio sel servicio ntp para coger los cambios.] *********************
changed: [192.168.1.11]

PLAY RECAP ********************************************************************
192.168.1.11               : ok=4    changed=3    unreachable=0    failed=0

Con esto ya tenemos el servicio “ntp” configurado en nuestros clientes y funcionando.
Comentar que este Playbook tiene un problema, y es que cada vez que lo ejecutemos, nos creará una nueva linea en el fichero de configuración del servicio “ntp”, por lo que es recomendable, definir un fichero de configuración en el nodo master, y copiarlo posteriormente a los nodos.
Para eso es recomendable tener el fichero de configuración en el servidor local, modificar la linea del módulo “shell” por el módulo “copy” para copiar el fichero de configuración por scp.

copy: src=/root/playbooks/ntp.conf dest=/etc/ntp.conf

Una vez copiado, podríamos agregar otra tarea para modificar los permisos del fichero.

 

file: dest=/etc/ntp.conf mode=644 owner=root group=root

El Playbook final quedaría de la siguiente forma.


---
- hosts: webservers
remote_user: root
vars:
ntp_server: hora.rediris.es
tasks:
- name: Instalando ntpdate
apt: name=ntp state=present

- name: agregando el fichero de configuracion
copy: src=/root/playbooks/ntp.conf dest=/etc/ntp.conf

- name: Modificando permisos del fichero de config
file: dest=/etc/ntp.conf mode=644 owner=root group=root

- name: reinicio sel servicio ntp para coger los cambios.
service: name=ntp state=restarted

  1. Aún no hay comentarios.
  1. No trackbacks yet.

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s

A %d blogueros les gusta esto: