Este artículo explica cómo definir variables en una tarea de un playbook de Ansible para ser utilizadas luego. Por ejemplo, es posible obtener la fecha actual para ser utilizada en cualquier tarea, siempre dentro de un mismo playbook claro está.



El módulo set_fact de Ansible permite definir variables de texto (de tipo String) o booleanas dentro de una tarea de un host. De esta forma es posible obtener valores dependientes de la ejecución del playbook para ser guardados y utilizados por otra tarea.

Veamos directamente un ejemplo: una tarea obtiene la fecha de un host, la idea es guardar esta fecha en una variable para ser utilizada luego en otra tarea perteneciente a otro host. A tal fin se utiliza el módulo set_fact con el formato clave=valor.

---
- set_fact: fecha="{{ lookup('pipe','date +%Y-%m-%d') }}"

- hosts: www
  tasks
    - shell: touch --date={{ fecha }} /tmp/prueba

Notar que se define la variable "fecha" y se inicializa mediante un un lookup. Los lookups son parte del motor de templating Jinja2 (el cual es utilizado por Ansible para permitir expresiones dinámicas y acceso a variables). Como tal, el valor se obtiene desde el master de Ansible (máquina donde se lanza el playbook), no en el target.

Luego en el ejemplo, se "toca" el archivo /tmp/prueba con la fecha de modificación almacenada en la variable "fecha". Es posible utilizar el módulo set_fact en cualquier parte del playbook, teniendo en cuenta que al utilizar un lookup las variables se inicializan antes de procesar el mismo.

Referencias


Tal vez pueda interesarte


Compartí este artículo