交互式输入:提示

如果希望您的playbook提示用户输入某些信息,请添加一个“vars_prompt”部分。提示用户输入变量可以避免记录敏感数据,例如密码。除了安全性之外,提示还支持灵活性。例如,如果您在一个playbook中使用多个软件版本,则可以提示输入特定的版本号。

这是一个最基本的示例

---
- 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

另请参阅

Ansible playbook

playbook简介

条件语句

playbook中的条件语句

使用变量

关于变量的一切

沟通

有问题?需要帮助?想分享您的想法?请访问Ansible沟通指南。