Ansible Vault

2024 年 8 月 29 日 | 阅读 3 分钟

Ansible Vault 是一项功能,允许用户在 Ansible 项目中加密值和数据结构。这提供了保护运行 Ansible 成功所需的任何秘密或敏感数据的能力,这些数据不应公开可见,例如私钥或密码。当提供密钥时,Ansible 会在运行时自动解密 vault 加密的内容。

为了将这些秘密与常规 Ansible 数据集成,用于执行临时任务和结构化剧本的 Ansible 和 Ansible-playbook 命令都支持在运行时解密 vault 加密内容。

Ansible Vault 是以文件级粒度实现的;这意味着文件要么完全加密,要么未加密。它使用 AES256 算法来提供对称加密,该算法以用户提供的密码为密钥。

这意味着使用相同的密码来加密和解密内容,这从可用性的角度来看是有帮助的。 Ansible 可以在执行任务或剧本时识别并解密它找到的任何 vault 加密文件。

虽然有提议更改此功能,但在撰写本文时,用户只能向 Ansible 传递单个密码。这意味着每个涉及的加密文件都必须共享一个密码。

使用 Ansible Vault

Ansible vault 的简单用法是加密变量文件。 它可以加密任何 YAML 文件,但最常见的加密文件是

  • 角色的 defaults/ main.yml 文件
  • 角色的 vars/main.yml 文件
  • group_vars 目录中的文件
  • 用于存储变量的任何其他文件

加密现有文件

您可以使用 ansible vault 加密常规纯文本变量文件,并定义稍后解密它所需的密码。

ansible-vault 命令将提示您输入两次密码。之后,该文件将被加密。

创建加密文件

要创建加密数据文件,请使用 ansible-vault 的 create 命令,并传递文件名。

系统将提示您创建密码,然后通过重新输入密码进行确认。

确认密码后,将创建一个新文件,并打开一个编辑窗口。 默认情况下,Ansible vault 的编辑器是 VI。 您可以添加数据,保存它,然后退出它。

编辑加密文件

如果要编辑加密文件,可以使用 ansible-vault edit 命令编辑它。 此命令将文件解密到临时文件,并允许您编辑该文件。

系统将提示您插入 vault 密码。 解密后的文件将在 VI 编辑器中打开,然后您可以进行所需的更改。 保存更改并删除临时文件。

重新密钥加密文件

如果要更改 vault 加密文件的密码,可以使用 rekey 命令执行此操作。

上述命令可以一次重新密钥多个数据文件,并询问原始密码和新密码。

加密未加密的文件

如果您有要加密的现有文件,请使用 ansible-vault encrypt 命令。此命令可以一次对多个文件进行操作。

解密加密文件

如果您有不再希望保留加密的现有文件,则可以通过运行 ansible-vault decrypt 命令永久解密它们。 此命令会将它们未加密地保存到磁盘。

查看加密文件

如果要查看加密文件的内容而不编辑它,则可以使用 ansible-vault view 命令。


下一主题Ansible Windows