第 3 章 Ansible vault


有时,您的 playbook 需要使用敏感数据,如密码、API 密钥和其他 secret 来配置受管主机。将此信息以纯文本形式存储在变量或其他与 Ansible 兼容的文件中存在安全风险,因为有权访问这些文件的任何用户都可以读取敏感数据。

使用 Ansible vault,您可以加密、解密、查看和编辑敏感信息。它们可以包括:

  • 在 Ansible Playbook 中插入的变量文件
  • 主机和组变量
  • 执行 playbook 时作为参数传递的变量文件
  • Ansible 角色中定义的变量

您可以使用 Ansible vault 安全地管理单个变量、整个文件,甚至像 YAML 文件这样的结构化数据。然后,这些数据可以安全地存储在版本控制系统中,或者与团队成员共享,而无需公开敏感信息。

重要

文件使用高级加密标准(AES256)的对称加密进行了保护,其中单个密码或密码短语用于加密和解密数据。请注意,这一操作方式尚未被第三方正式审核。

要简化管理,设置您的 Ansible 项目,以便敏感变量和所有其他变量都保存在单独的文件或目录中是有意义的。然后,您可以使用 ansible-vault 命令保护包含敏感变量的文件。

创建一个加密的文件

以下命令提示您输入新的 vault 密码。然后,它使用默认编辑器打开一个文件以存储敏感变量。

# ansible-vault create vault.yml
New Vault password: <vault_password>
Confirm New Vault password: <vault_password>
Copy to Clipboard Toggle word wrap
查看一个加密的文件

以下命令提示您输入现有的 vault 密码。然后,它显示已加密的文件的敏感内容。

# ansible-vault view vault.yml
Vault password: <vault_password>
my_secret: "yJJvPqhsiusmmPPZdnjndkdnYNDjdj782meUZcw"
Copy to Clipboard Toggle word wrap
编辑一个加密的文件

以下命令提示您输入现有的 vault 密码。然后,它使用默认编辑器打开已加密的文件,以便您更新敏感变量。

# ansible-vault edit vault.yml
Vault password: <vault_password>
Copy to Clipboard Toggle word wrap
加密一个现有文件

以下命令提示您输入新的 vault 密码。然后,它会加密一个现有的未加密的文件。

# ansible-vault encrypt vault.yml
New Vault password: <vault_password>
Confirm New Vault password: <vault_password>
Encryption successful
Copy to Clipboard Toggle word wrap
解密一个现有文件

以下命令提示您输入现有的 vault 密码。然后,它解密一个现有的加密文件。

# ansible-vault decrypt vault.yml
Vault password: <vault_password>
Decryption successful
Copy to Clipboard Toggle word wrap
更改加密文件的密码

以下命令提示您输入原始 vault 密码,然后提示输入新的 vault 密码。

# ansible-vault rekey vault.yml
Vault password: <vault_password>
New Vault password: <vault_password>
Confirm New Vault password: <vault_password>
Rekey successful
Copy to Clipboard Toggle word wrap
playbook 中 Ansible vault 变量的基本应用
---
- name: Create user accounts for all servers
  hosts: managed-node-01.example.com
  vars_files:
    - ~/vault.yml
  tasks:
    - name: Create user from vault.yml file
      user:
        name: "{{ username }}"
        password: "{{ pwhash }}"
Copy to Clipboard Toggle word wrap

您在 Ansible Playbook 的 vars_files 部分中使用变量(vault.yml)读取文件,并使用与使用普通变量相同的方式使用花括号。然后,您可以使用 ansible-playbook --ask-vault-pass 命令运行 playbook,并手动输入密码。或者,您可以将密码保存到单独的文件中,并使用 ansible-playbook --vault-password-file /path/to/my/vault-password-file 命令运行 playbook。

返回顶部
Red Hat logoGithubredditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

通过我们的产品和服务,以及可以信赖的内容,帮助红帽用户创新并实现他们的目标。 了解我们当前的更新.

让开源更具包容性

红帽致力于替换我们的代码、文档和 Web 属性中存在问题的语言。欲了解更多详情,请参阅红帽博客.

關於紅帽

我们提供强化的解决方案,使企业能够更轻松地跨平台和环境(从核心数据中心到网络边缘)工作。

Theme

© 2025 Red Hat