ansible/docs/docsite/rst/user_guide/playbooks_prompts.rst

108 lines
3.3 KiB
ReStructuredText
Raw Normal View History

2013-09-29 22:44:46 +00:00
Prompts
=======
2012-05-13 15:00:02 +00:00
2013-10-05 17:50:53 +00:00
When running a playbook, you may wish to prompt the user for certain input, and can
do so with the 'vars_prompt' section.
2013-10-05 17:50:53 +00:00
A common use for this might be for asking for sensitive data that you do not want to record.
2012-05-13 15:00:02 +00:00
2013-09-29 22:44:46 +00:00
This has uses beyond security, for instance, you may use the same playbook for all
2012-05-13 15:00:02 +00:00
software releases and would prompt for a particular release version
2013-10-05 17:50:53 +00:00
in a push-script.
Here is a most basic example::
2012-05-13 15:00:02 +00:00
---
- hosts: all
remote_user: root
2012-05-13 15:00:02 +00:00
vars:
from: "camelot"
2012-05-13 15:00:02 +00:00
vars_prompt:
2015-07-27 05:38:39 +00:00
- name: "name"
prompt: "what is your name?"
- name: "quest"
prompt: "what is your quest?"
- name: "favcolor"
prompt: "what is your favorite color?"
2012-05-13 15:00:02 +00:00
.. note::
Prompts for individual ``vars_prompt`` variables will be skipped for any variable that is already defined through the command line ``--extra-vars`` option, or when running from a non-interactive session (such as cron or Ansible Tower). See :ref:`passing_variables_on_the_command_line` in the /Variables/ chapter.
If you have a variable that changes infrequently, it might make sense to
provide a default value that can be overridden. This can be accomplished using
the default argument::
vars_prompt:
- name: "release_version"
prompt: "Product release version"
default: "1.0"
An alternative form of vars_prompt allows for hiding input from the user, and may later support
some other options, but otherwise works equivalently::
vars_prompt:
- name: "some_password"
prompt: "Enter password"
private: yes
- name: "release_version"
prompt: "Product release version"
private: no
2017-10-19 00:50:27 +00:00
If `Passlib <https://passlib.readthedocs.io/en/stable/>`_ is installed, vars_prompt can also encrypt the
entered value so you can use it, for instance, with the user module to define a password::
vars_prompt:
- name: "my_password2"
prompt: "Enter password2"
private: yes
encrypt: "sha512_crypt"
confirm: yes
salt_size: 7
You can use any crypt scheme supported by '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's MD5-Crypt variant
- *phpass* - PHPass' Portable Hash
- *pbkdf2_digest* - Generic PBKDF2 Hashes
- *cta_pbkdf2_sha1* - Cryptacular's PBKDF2 hash
- *dlitz_pbkdf2_sha1* - Dwayne Litzenberger's PBKDF2 hash
- *scram* - SCRAM Hash
- *bsd_nthash* - FreeBSD's MCF-compatible nthash encoding
2014-02-18 13:23:23 +00:00
However, the only parameters accepted are 'salt' or 'salt_size'. You can use your own salt using
'salt', or have one generated automatically using 'salt_size'. If nothing is specified, a salt
of size 8 will be generated.
.. seealso::
:doc:`playbooks`
An introduction to playbooks
:doc:`playbooks_conditionals`
Conditional statements in playbooks
:doc:`playbooks_variables`
All about variables
`User Mailing List <http://groups.google.com/group/ansible-devel>`_
Have a question? Stop by the google group!
`irc.freenode.net <http://irc.freenode.net>`_
#ansible IRC chat channel