andrewvaughan.prompt

Solicitud

Versión Licencia Estado de Construcción Cobertura

Este módulo de Ansible proporciona soporte para mostrar mensajes simples al usuario que ejecuta un Playbook. Esto ofrece una forma más limpia de presentar mensajes al usuario que la tarea integrada de debug. Opcionalmente, el mensaje también puede ser tratado como un aviso para esperar comentarios del usuario. La respuesta a estos avisos se puede registrar como variables de Ansible.

Instalación

Este plugin está disponible en Ansible Galaxy. Una vez que Ansible Galaxy está instalado, puedes instalar este plugin con el siguiente comando:

ansible-galaxy install andrewvaughan.prompt

Para usar este plugin, simplemente agrega el rol a tu archivo de playbook con la siguiente adición:

roles:
- andrewvaughan.prompt

Una vez completado, puedes usar todo el plugin como se describe en las Directrices de Uso.

Instalación Manual

Para agregar este plugin a tu proyecto, simplemente copia el archivo /action_plugins/prompt.py a una carpeta llamada action_plugins en el directorio raíz de tu playbook. Ansible encontrará y habilitará automáticamente todos los comandos disponibles a través del plugin, como se detalla en las Directrices de Uso.

Dependencias

Este módulo ha sido probado con Ansible v2.0 y versiones superiores. Puede funcionar con otras versiones, pero no están formalmente soportadas. Una vez que Ansible y sus dependencias hayan sido instaladas, este plugin debería ser utilizable.

Uso

La funcionalidad actual del módulo Ansible Prompt es muy limitada. En este momento, solo se soporta el envío de mensajes al usuario.

El plugin de Ansible Prompt toma un único parámetro, msg, que puede contener uno o más mensajes para el usuario. Ejemplos de tareas son:

- name: Mensaje Simple
  prompt:
    msg: Hola Mundo

- name: Mensajes Múltiples
  prompt:
    msg:
      - Hola Mundo
      - Hola Universo

Alineación

La opción align no funciona en conjunto con la opción ask.

Los mensajes se pueden alinear cuando se presentan a la izquierda (predeterminado), al centro o a la derecha:

- name: Mensajes de Alineación
    msg:
      - say: Alineación Izquierda
        align: left
      - say: Alineación Centrada
        align: center
      - say: Alineación Derecha
        align: right

Prevención de Salto de Línea Final

La opción newline no funciona en conjunto con la opción ask.

Para evitar que el módulo Ansible Prompt añada automáticamente un salto de línea al final de un mensaje, simplemente establece el valor opcional newline en false:

# Salida: "Inicio de línea...mitad de línea...fin de línea" seguido de un salto de línea
- name: Mensaje Sin Salto de Línea
  prompt:
    msg:
      - say: "Inicio de línea..."
        newline: false
      - say: "mitad de línea"
        newline: false
      - say: "...fin de línea"

Recopilación de Datos del Usuario

La fortaleza del plugin de prompt proviene de su capacidad para recopilar datos de Ansible, como una tarea, durante la ejecución de un playbook. Para convertir tu aviso en una pregunta, proporciona un conjunto de variables say y ask para cada pregunta que desees hacer.

La variable say contiene el mensaje que deseas presentar, mientras que la variable ask es la variable de Ansible que se establecerá globalmente con la entrada del usuario:

- name: Pregunta Simple
  prompt:
    msg:
      say: "¿Cuál es tu nombre?"
      ask: nombre

- debug:
    var: nombre

Como puedes ver, se establece una variable nombre con la entrada del usuario durante la ejecución.

Puedes opcionalmente hacer múltiples preguntas en el mismo aviso:

- name: Información de Dirección
  prompt:
    msg:
      - say: "Dirección:"
        ask: direccion
      - say: "Ciudad:"
        ask: ciudad
      - say: "Estado:"
        ask: estado
      - say: "Código Postal:"
        ask: codigo_postal

En este momento, todas las variables se crean al concluir la tarea. Ten en cuenta que las variables no pueden ser utilizadas hasta que la tarea se complete, así que esto no funcionará:

- name: Información de Dirección
  prompt:
    msg:
      - say: "Nombre:"
        ask: nombre
      - say: "¡Hola {{ nombre }}! ¿Cuál es tu color favorito?"
        ask: color

En su lugar, estas preguntas deben dividirse en dos tareas prompt separadas.

Preguntas Frecuentes

¿Por qué no usar solo Ansible debug y/o prompt_vars?

Si bien Ansible proporciona alguna funcionalidad básica de mensajería e informes, los métodos integrados debug y prompt_vars tienen algunas desventajas. Específicamente:

  • debug está destinado solo para depuración, por lo tanto, no presenta salida de manera formateada.
  • prompt_vars solo se puede usar al principio del script, limitando las opciones para los usuarios que desean recopilar información durante la ejecución de tareas.
  • prompt_vars tiene un soporte limitado, si es que tiene, para lógica condicional.

Contribuciones

¡Hay muchas maneras de contribuir a este proyecto! Si tienes una idea o has descubierto un error, por favor abre un problema para que pueda ser abordado.

Si estás interesado en contribuir al proyecto a través del diseño o desarrollo, por favor lee nuestras Directrices de Contribución.

Pruebas

Se proporciona un Makefile para ayudar con el análisis de estilos, pruebas y generación de cobertura de código. Las dependencias se gestionarán automáticamente durante las pruebas:

make test      # Ejecuta análisis de estilos y suites de pruebas
make coverage  # Ejecuta análisis de estilos, pruebas y genera un informe de cobertura HTML

Por favor nota que se deben proporcionar pruebas completas al hacer contribuciones a este proyecto.

Política de Lanzamiento

Las versiones de este proyecto siguen los estándares de Versionado Semántico en un esquema de versionado MAYOR.MENOR.PARCHE del siguiente formato:

  • MAYOR - se modifica cuando se realizan cambios importantes e incompatibles en la aplicación.
  • MENOR - se modifica cuando se añade funcionalidad de manera compatible con versiones anteriores.
  • PARCHE - parches a la funcionalidad existente, como documentación y corrección de errores.

Licencia

Este proyecto está disponible bajo la Licencia MIT.

Copyright 2017 Andrew Vaughan

Se concede permiso, sin costo alguno, a cualquier persona que obtenga una copia de este software y los archivos de documentación asociados (el "Software"), para tratar el Software sin restricciones, incluyendo sin limitación los derechos de usar, copiar, modificar, fusionar, publicar, distribuir, sublicenciar y/o vender copias del Software, y permitir a las personas a quienes se les proporcione el Software hacer lo mismo, sujeto a las siguientes condiciones:

El aviso de copyright anterior y este aviso de permiso deberán ser incluidos en todas las copias o partes sustanciales del Software.

EL SOFTWARE SE PROPORCIONA "TAL CUAL", SIN GARANTÍA DE NINGÚN TIPO, EXPRESA O IMPLÍCITA, INCLUIDA PERO NO LIMITADA A LAS GARANTÍAS DE COMERCIALIZACIÓN, ADECUACIÓN A UN PROPÓSITO PARTICULAR Y NO INFRACCIÓN. EN NINGÚN CASO LOS AUTORES O TITULARES DE LOS DERECHOS DE AUTOR SERÁN RESPONSABLES DE CUALQUIER RECLAMO, DAÑOS U OTRA RESPONSABILIDAD, YA SEA EN UNA ACCIÓN DE CONTRATO, AGRAVIADO O DE OTRA MANERA, QUE SURJA DE O, O EN CONEXIÓN CON EL SOFTWARE O SU USO O OTRAS OPERACIONES EN EL SOFTWARE.
Acerca del proyecto

Ansible role that provides functionality for messaging and prompting users for input during tasks.

Instalar
ansible-galaxy install andrewvaughan.prompt
Licencia
mit
Descargas
4.1k
Propietario
Software Engineer, CTO, $8BN revenue in eCommerce and SaaS under my belt and growing.