prompt
Подсказка
Этот модуль Ansible обеспечивает поддержку для отображения простых сообщений пользователю, запускающему плейбук. Это позволяет более удобно представлять сообщения, чем встроенная задача debug. По желанию, сообщение также может использоваться как подсказка для ожидания ответа пользователя. Ответ на эти подсказки может быть зарегистрирован как переменные Ansible.
Установка
Этот плагин доступен в Ansible Galaxy. После установки Ansible Galaxy, вы можете установить этот плагин с помощью следующей команды:
ansible-galaxy install andrewvaughan.prompt
Чтобы использовать этот плагин, просто добавьте роль в ваш файл плейбука следующим образом:
roles:
- andrewvaughan.prompt
После этого вы можете использовать весь плагин, как описано в Руководстве по использованию.
Ручная установка
Чтобы добавить этот плагин в ваш проект, просто скопируйте файл /action_plugins/prompt.py
в папку с именем action_plugins
в корневом каталоге вашего плейбука. Ansible автоматически найдет и включит все команды, предоставляемые плагином, как это описано в Руководстве по использованию.
Зависимости
Этот модуль был протестирован с Ansible версии 2.0 и выше. Он может работать и с другими версиями, но они не официально поддерживаются. После установки Ansible и его зависимостей, этот плагин должен быть пригоден для использования.
Использование
Функциональность модуля Ansible Prompt в настоящее время очень ограничена. На этот момент поддерживается только возможность передачи сообщений пользователю.
Плагин Ansible Prompt принимает единственный параметр, msg
, который может содержать одно или несколько сообщений для пользователя. Примеры задач следующие:
- name: Простое сообщение
prompt:
msg: Привет, мир
- name: Несколько сообщений
prompt:
msg:
- Привет, мир
- Привет, Вселенная
Выравнивание
Опция
align
не работает в сочетании с опциейask
Сообщения могут быть выровнены по левому
(по умолчанию), центральному
или правому
краю:
- name: Сообщения с выравниванием
msg:
- say: Левое выравнивание
align: left
- say: Центрирование
align: center
- say: Правое выравнивание
align: right
Предотвращение добавления новой строки
Опция
newline
не работает в сочетании с опциейask
Чтобы предотвратить автоматическое добавление новой строки в конце сообщения, просто установите значение опции newline
на false
:
# Выводит "Начало строки...середина строки...конец строки" без новой строки
- name: Сообщение без новой строки
prompt:
msg:
- say: "Начало строки..."
newline: false
- say: "середина строки"
newline: false
- say: "...конец строки"
Сбор данных от ввода пользователя
Сила плагина prompt заключается в его способности собирать факты Ansible в качестве задания во время выполнения плейбука. Чтобы превратить вашу подсказку в вопрос, предоставьте набор переменных say
и ask
для каждого вопроса, который вы хотите задать.
Переменная say
содержит сообщение, которое вы хотите представить, в то время как переменная ask
— это переменная Ansible, которую нужно установить глобально на основе ввода пользователя:
- name: Простой вопрос
prompt:
msg:
say: "Как вас зовут?"
ask: first_name
- debug:
var: first_name
Как видите, переменная first_name
устанавливается на основе ввода пользователя во время воспроизведения.
Вы также можете задать несколько вопросов в одной подсказке:
- name: Информация об адресе
prompt:
msg:
- say: "Уличный адрес:"
ask: address
- say: "Город:"
ask: city
- say: "Штат:"
ask: state
- say: "Индекс:"
ask: zipcode
На данный момент все переменные создаются по завершении задания. Обратите внимание, что переменные не могут использоваться до завершения задания, поэтому это не сработает:
- name: Информация об адресе
prompt:
msg:
- say: "Имя:"
ask: first_name
- say: "Привет {{ first_name }}! Какой у вас любимый цвет?"
ask: color
Вместо этого эти вопросы следует разделить на две отдельные задачи prompt
.
Часто задаваемые вопросы
Почему нельзя просто использовать Ansible debug и/или prompt_vars?
Хотя Ansible предоставляет некоторые основные функции для сообщений и отчетности, встроенные методы debug
и prompt_vars
имеют свои недостатки. В частности:
debug
предназначен только для отладки, и не отображает выходные данные в формате презентации.prompt_vars
может использоваться только в начале сценария, что ограничивает возможности для пользователей, желающих собирать ввод во время воспроизведения задания.prompt_vars
имеет ограниченную поддержку условной логики (если такая вообще есть).
Вклад
Существует множество способов внести вклад в этот проект! Если у вас есть идея или вы обнаружили ошибку, пожалуйста, откройте проблему, чтобы ее можно было исправить.
Если вы хотите внести вклад в проект через дизайн или разработку, пожалуйста, ознакомьтесь с нашими Руководством по вкладу.
Тестирование
Предоставлен Makefile
, чтобы помочь с линтинговыми проверками, тестированием и генерацией покрытия кода. Зависимости будут управляться автоматически во время тестирования:
make test # Запускает линтинги и тесты
make coverage # Запускает линтинги, тесты и генерирует отчет о покрытии в формате HTML
Пожалуйста, обратите внимание, что полные тесты должны быть предоставлены при внесении изменений в этот проект.
Политика релиза
Релизы этого проекта следуют стандартам Семантического версионирования в схеме версионирования MAJOR.MINOR.PATCH
следующего формата:
MAJOR
- изменяется при внесении существенных, несовместимых изменений в приложение,MINOR
- изменяется при добавлении функциональности совместимым с предыдущими версиями образом,PATCH
- патчи для существующей функциональности, такие как документация и исправления ошибок.
Лицензия
Этот проект доступен под MIT Лицензией.
Copyright 2017 Andrew Vaughan
Настоящим предоставляется разрешение, без взимания платы, любому лицу, получающему копию этого программного обеспечения и сопутствующих
документационных файлов (далее "Программное обеспечение"), использовать Программное обеспечение без ограничения, включая, но не ограничиваясь
правами на использование, копирование, модификацию, объединение, публикацию, распространение, сублицензирование и/или продажу копий
Программного обеспечения, а также разрешать лицам, которым предоставляется Программное обеспечение, так делать, при условии выполнения следующих условий:
Указанное выше уведомление об авторском праве и это уведомление о разрешениях должны быть включены во все копии или существенные части
Программного обеспечения.
ПРОГРАММНОЕ ОБЕСПЕЧЕНИЕ ПРЕДОСТАВЛЯЕТСЯ "КАК ЕСТЬ", БЕЗ ГАРАНТИЙ ЛЮБОГО РОДА, ЯВНЫХ ИЛИ ПОДРАЗУМЕВАЕМЫХ, ВКЛЮЧАЯ, НО НЕ ОГРАНИЧИВАЯСЬ
ГАРАНТИЯМИ ТОРГОВОЙ ПРИГОДНОСТИ, ПРИГОДНОСТИ ДЛЯ ОСОБЫХ ЦЕЛЕЙ И НАРУШЕНИЯ. В НИКАКОМ СЛУЧАЕ АВТОРЫ ИЛИ
ДЕРЖАТЕЛИ АВТОРСКИХ ПРАВ НЕ НОСЯТ ОТВЕТСТВЕННОСТИ ЗА ЛЮБЫЕ ИСКИ, УЩЕРБ ИЛИ ДРУГИЕ ОБЯЗАТЕЛЬСТВА, БУДУТ ЛИ ОНИ В РАМКАХ
ДОГОВОРА, ДЕЛИКТА ИЛИ ИНЫХ, ВОЗНИКАЮЩИЕ ИЗ ИЛИ СВЯЗАННЫЕ С ПРОГРАММНЫМ ОБЕСПЕЧЕНИЕМ ИЛИ ИСПОЛЬЗОВАНИЕМ ИЛИ ИНЫМИ ДЕЛАМИ С ПРОГРАММНЫМ ОБЕСПЕЧЕНИЕМ.
Ansible role that provides functionality for messaging and prompting users for input during tasks.
ansible-galaxy install andrewvaughan/ansible-role-prompt