交互式输入:提示
如果您希望您的剧本提示用户输入某些信息,请添加一个“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
使其可见。
注意
对于任何已通过命令行--extra-vars
选项定义的变量,或在非交互式会话(例如cron或Ansible AWX)中运行时,将跳过单个vars_prompt
变量的提示。请参阅运行时定义变量。
如果您的变量很少更改,您可以提供一个可以被覆盖的默认值。
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加密
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的MD5-Crypt变体
phpass - PHPass的可移植哈希
pbkdf2_digest - 通用PBKDF2哈希
cta_pbkdf2_sha1 - Cryptacular的PBKDF2哈希
dlitz_pbkdf2_sha1 - Dwayne Litzenberger的PBKDF2哈希
scram - SCRAM哈希
bsd_nthash - FreeBSD的与MCF兼容的nthash编码
唯一接受的参数是“salt”或“salt_size”。您可以通过定义“salt”来使用您自己的salt,或者使用“salt_size”自动生成一个salt。默认情况下,Ansible生成大小为8的salt。
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: true
private: true