Supongamos que necesitamos recuperar un parámetro por entrada estándar de manera interactiva en un playbook de Ansible. Es posible hacerlo utilizando la sección vars_prompt. Este artículo demuestra un ejemplo de uso.



Un buen ejemplo sería el siguiente. Cierta tarea requiere ingresar una contraseña (ya que el servicio en cuestión no está configurado para soportar autenticación con clave pública). Sin embargo no deseamos pasar la contraseña como parámetro (ya sea en el propio comando o como parámetro del playbook) para que no quede hardcodeada en el código YML del playbook o en el historial de comandos del host.

Lo mejor, entonces, sería obtener la contraseña de forma interactiva, directamente desde teclado. Esto permite obtener información sensible que no se desee divulgar.

Ansible permite recuperar variables de forma interactiva mediante la sección vars_prompt. Simplemente hay que definir el nombre de la variable donde se almacenará el valor recuperado desde teclado, y una frase o texto descriptivo. Veamos un ejemplo:

---
- hosts: all
  vars_prompt:
    - name: pass
      prompt: "Ingrese la contraseña"

Luego es posible utilizar la variable pass al igual que cualquier otra en alguna de las tareas del playbook. Por ejemplo:

- hosts: db.linuxito.com
  become: yes
  tasks:
    - name: Crear un dump de la base mibase
    - shell: mysqldump -R -ubkpusr -p{{ mypass }} mibase > /tmp/mibase.sql

Otro ejemplo ejecutando un playbook de prueba:

---
- hosts: www.linuxito.com
  vars_prompt:
    - name: pass
      prompt: "Ingrese la clave"

  tasks:
    - debug:
        msg: "La clave ingresada es: {{ pass }}"

Al ejecutar con ansible-playbook, el resultado es el siguiente:

ansible@ansible:~$ ansible-playbook test.yml 
Ingrese la clave: 

PLAY [www.linuxito.com] ************************************************

TASK [Gathering Facts] *************************************************
ok: [www.linuxito.com]

TASK [debug] ***********************************************************
ok: [www.linuxito.com] => {
    "msg": "La clave ingresada es: 1234"
}

PLAY RECAP *************************************************************
www.linuxito.com           : ok=2  changed=0  unreachable=0  failed=0   

El texto definido en el parámetro prompt es el que se muestra durante la ejecución del playbook. Por otro lado, notar que no se hace echo de los caracteres ingresados. Este es el comportamiento por defecto. Si no se desea que sean ocultados (es decir, que se haga echo de los caracteres tipeados) especificar el parámetro private: no.

Referencias


Tal vez pueda interesarte


Compartí este artículo