交互式输入:提示

如果你希望你的剧本提示用户输入某些内容,请添加一个 '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 来使其可见。

注意

对单个 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 加密

  • 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_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: true
    private: true

另请参见

Ansible 剧本

剧本介绍

条件语句

剧本中的条件语句

使用变量

关于变量的一切

沟通

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