Spec-Zone.ru › Ansible 2.11

Интерактивный ввод: подсказки

Если вы хотите, чтобы ваш плейбук запросил у пользователя определённый ввод, добавьте раздел «vars_prompt». Запрос переменных у пользователя позволяет избежать записи конфиденциальных данных, таких как пароли. Помимо безопасности, подсказки обеспечивают гибкость. Например, если вы используете один плейбук для нескольких релизов программного обеспечения, вы можете запросить конкретную версию релиза.

  • Шифрование значений, предоставленных vars_prompt
  • Разрешение специальных символов в значениях vars_prompt

Вот самый простой пример:

---
- hosts: all
  vars_prompt:

    - name: username
      prompt: What is your username?
      private: no

    - name: password
      prompt: What is your password?

  tasks:

    - name: Print a message
      ansible.builtin.debug:
        msg: 'Logging in as {{ username }}'

Ввод пользователя по умолчанию скрыт, но его можно сделать видимым, установив private: no

Примечание

Подсказки для отдельных vars_prompt переменных будут пропущены для любой переменной, которая уже определена через параметр командной строки --extra-vars, или при запуске из неинтерактивной сессии (например, cron или Ansible Tower). См. Определение переменных во время выполнения.

Если у вас есть переменная, которая меняется нечасто, вы можете указать значение по умолчанию, которое можно переопределить:

vars_prompt:

  - name: release_version
    prompt: Product release version
    default: "1.0"

Шифрование значений, предоставленных vars_prompt

Вы можете зашифровать введённое значение, чтобы использовать его, например, с модулем пользователя для определения пароля:

vars_prompt:

  - name: my_password2
    prompt: Enter password2
    private: yes
    encrypt: sha512_crypt
    confirm: yes
    salt_size: 7

Если у вас установлен Passlib, вы можете использовать любой алгоритм шифрования, поддерживаемый библиотекой:

  • des_crypt - DES шифрование
  • bsdi_crypt - BSDi шифрование
  • bigcrypt - BigCrypt
  • crypt16 - Crypt16
  • md5_crypt - MD5 шифрование
  • bcrypt - BCrypt
  • sha1_crypt - SHA-1 шифрование
  • sun_md5_crypt - Sun MD5 шифрование
  • sha256_crypt - SHA-256 шифрование
  • sha512_crypt - SHA-512 шифрование
  • apr_md5_crypt - Apache’s MD5-Crypt вариант
  • phpass - PHPass’ Portable Hash
  • pbkdf2_digest - Общие PBKDF2 хеширования
  • cta_pbkdf2_sha1 - Cryptacular’s PBKDF2 хеширование
  • dlitz_pbkdf2_sha1 - Dwayne Litzenberger’s PBKDF2 хеширование
  • scram - SCRAM хеширование
  • bsd_nthash - FreeBSD’s MCF-совместимое nthash кодирование

Принимаются только параметры «salt» или «salt_size». Вы можете использовать свой собственный соль, определив «salt», или сгенерировать его автоматически, используя «salt_size». По умолчанию Ansible генерирует соль размером 8.

Новое в версии 2.7.

Если у вас не установлен Passlib, Ansible использует библиотеку crypt в качестве резервного варианта. Ansible поддерживает не более четырёх алгоритмов шифрования, в зависимости от вашей платформы, поддерживаются, как максимум, следующие алгоритмы шифрования:

  • bcrypt - BCrypt
  • md5_crypt - MD5 шифрование
  • sha256_crypt - SHA-256 шифрование
  • sha512_crypt - SHA-512 шифрование

Новое в версии 2.8.

Разрешение специальных символов в vars_prompt значениях

Некоторые специальные символы, такие как { и %, могут создавать ошибки шаблонизации. Если вам необходимо принять специальные символы, используйте опцию unsafe

vars_prompt:
  - name: my_password_with_weird_chars
    prompt: Enter password
    unsafe: yes
    private: yes

См. также

Введение в плейбуки

Введение в плейбуки

Условные операторы

Условные операторы в плейбуках

Использование переменных

Всё о переменных

Список рассылки пользователей

У вас есть вопрос? Зайдите на форум!

irc.freenode.net

Канал IRC-чат #ansible

© 2012–2018 Michael DeHaan
© 2018–2019 Red Hat, Inc.
Licensed under the GNU General Public License version 3.
https://docs.ansible.com/ansible/2.10/user_guide/playbooks_prompts.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API