Интерактивный ввод: запросы
Если вы хотите, чтобы плейбук запрашивал у пользователя определённые данные, добавьте раздел ‘vars_prompt’. Запрос у пользователя значений переменных позволяет не записывать конфиденциальные данные, например пароли. Помимо повышения безопасности, запросы обеспечивают гибкость. Например, если один плейбук используется для нескольких выпусков программного обеспечения, можно запросить конкретную версию выпуска.
- Хеширование значений, введённых через
vars_prompt - Разрешение специальных символов в значениях
vars_prompt
Вот самый простой пример:
---
- hosts: all
vars_prompt:
- name: username
prompt: What is your username?
private: false
- name: password
prompt: What is your password?
tasks:
- name: Print a message
ansible.builtin.debug:
msg: 'Logging in as {{ username }}'
По умолчанию ввод пользователя скрыт, но его можно сделать видимым, задав private: false.
Примечание
Запросы для отдельных переменных vars_prompt пропускаются, если значение переменной уже задано с помощью параметра командной строки --extra-vars или при запуске из неинтерактивного сеанса (например, cron или Ansible AWX). См. раздел Определение переменных во время выполнения.
Если значение переменной меняется редко, можно задать значение по умолчанию, которое можно переопределить.
vars_prompt:
- name: release_version
prompt: Product release version
default: "1.0"
Хеширование значений, введённых через vars_prompt
Можно хешировать введённое значение, чтобы использовать его, например, с модулем user для задания пароля:
vars_prompt:
- name: my_password2
prompt: Enter password2
private: true
encrypt: sha512_crypt
confirm: true
salt_size: 7
Если у вас установлена библиотека Passlib, можно использовать любые поддерживаемые ею схемы шифрования:
- des_crypt — DES Crypt
- bsdi_crypt — BSDi Crypt
- bigcrypt — BigCrypt
- crypt16 — Crypt16
- md5_crypt — MD5 Crypt
- bcrypt — BCrypt
- sha1_crypt — SHA-1 Crypt
- sun_md5_crypt — Sun MD5 Crypt
- sha256_crypt — SHA-256 Crypt
- sha512_crypt — SHA-512 Crypt
- apr_md5_crypt — вариант Apache MD5-Crypt
- phpass — переносимый хеш PHPass
- pbkdf2_digest — универсальные хеши PBKDF2
- cta_pbkdf2_sha1 — хеш PBKDF2 от Cryptacular
- dlitz_pbkdf2_sha1 — хеш PBKDF2 от Dwayne Litzenberger
- scram — хеш SCRAM
- bsd_nthash — совместимое с MCF кодирование nthash во FreeBSD
Допускаются только параметры ‘salt’ и ‘salt_size’. Можно задать собственную соль с помощью параметра ‘salt’ или автоматически сгенерировать её, используя ‘salt_size’. По умолчанию Ansible генерирует соль размером 8.
Добавлено в версии 2.7.
Если Passlib не установлена, Ansible использует библиотеку crypt в качестве запасного варианта. Ansible поддерживает не более четырёх схем шифрования; в зависимости от вашей платформы поддерживаются следующие схемы:
- bcrypt — BCrypt
- md5_crypt — MD5 Crypt
- sha256_crypt — SHA-256 Crypt
- sha512_crypt — SHA-512 Crypt
Добавлено в версии 2.8.
Разрешение специальных символов в значениях vars_prompt
Некоторые специальные символы, например { и %, могут вызывать ошибки при обработке шаблонов. Если необходимо принимать специальные символы, используйте параметр unsafe:
vars_prompt:
- name: my_password_with_weird_chars
prompt: Enter password
unsafe: true
private: true
См. также
- Плейбуки Ansible
-
Введение в плейбуки
- Условные конструкции
-
Условные операторы в плейбуках
- Использование переменных
-
Всё о переменных
- Общение
-
Есть вопросы? Нужна помощь? Хотите поделиться идеями? Посетите руководство по общению с сообществом Ansible
© 2012–2018 Michael DeHaan
© 2018–2025 Red Hat, Inc.
Licensed under the GNU General Public License version 3.
https://docs.ansible.com/projects/ansible/latest/playbook_guide/playbooks_prompts.html