andrewvaughan.prompt
Solicitud
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ónask
.
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ónask
.
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.
Ansible role that provides functionality for messaging and prompting users for input during tasks.
ansible-galaxy install andrewvaughan.prompt