网站搜索

如何在 Playbook 中使用 Ansible Vault 保护敏感数据 - 第 10 部分


当您开始使用 Ansible 时,您可能需要在 playbook 中输入一些机密或秘密信息。其中包括 SSH 私钥和公钥、密码以及 SSL 证书等。众所周知,出于显而易见的原因,以纯文本形式保存这些敏感信息是一种不好的做法。这些信息需要保密,因为我们只能想象如果黑客或未经授权的用户掌握了它会发生什么。

值得庆幸的是,Ansible 为我们提供了一个方便的功能,称为 Ansible Vault。顾名思义,Ansible Vault 有助于保护重要的秘密信息,正如我们之前讨论的那样。 Ansible Vault 可以加密变量,甚至整个文件和 YAML playbook,我们稍后将演示。这是一个非常方便且用户友好的工具,在加密和解密文件时需要相同的密码。

现在让我们深入了解并概述可以使用 AnsibleVault 执行的各种操作。

如何在 Ansible 中创建加密文件

如果您想创建加密的 Playbook 文件,只需使用 ansible-vault create 命令并提供如图所示的文件名。

ansible-vault create filename

例如,要创建加密文件 mysecrets.yml,请执行以下命令。

ansible-vault create mysecrets.yml

此后,系统将提示您输入密码,确认后,将使用 vi 编辑器打开一个新窗口,您可以在其中开始编写剧本。

以下是一些信息的示例。完成后,只需保存并退出剧本即可。这就是创建加密文件时的情况。

要验证文件加密,请使用 cat 命令,如下所示。

cat mysecrets.yml

如何在 Ansible 中查看加密文件

如果您想查看加密文件,只需传递ansible-vault view命令,如下所示。

ansible-vault view mysecrets.yml

系统将再次提示您输入密码。您将再次可以访问您的信息。

如何在 Ansible 中编辑加密文件

要更改加密文件,请使用 ansible-vault edit 命令,如图所示。

ansible-vault edit mysecrets.yml

与往常一样,提供密码,然后继续编辑文件。

编辑完成后,保存并退出vim编辑器。

如何更改 Ansible Vault 密码

如果您觉得需要更改 AnsibleVault 密码,可以使用 ansible-vault rekey 命令轻松完成此操作,如下所示。

ansible-vault rekey mysecrets.yml

这会提示您输入保管库密码,稍后会要求您输入新密码并稍后确认。

如何在 Ansible 中加密未加密的文件

假设您要加密未加密的文件,可以通过运行 ansible-vault 加密 命令来实现,如图所示。

ansible-vault encrypt classified.txt

您稍后可以使用 cat 命令查看该文件,如下所示。

如何解密加密文件

要查看加密文件的内容,只需使用 ansible-vault 加密 解密文件,如下例所示。

ansible-vault decrypt classified.txt

如何在 Ansible 中加密特定变量

此外,AnsibleVault 使您能够加密某些变量。这是使用 ansible-vault encrypt_string 命令完成的,如图所示。

ansible-vault encrypt_string 

AnsibleVault 将提示您输入密码,稍后要求您确认。接下来,键入要加密的字符串值。最后,按ctrl+d。此后,您可以开始在 playbook 中分配加密值。

这可以通过一行来实现,如下所示。

ansible-vault encrypt_string 'string' --name 'variable_name'

如何在运行时解密 Playbook 文件

如果您有一个 playbook 文件并希望在运行时对其进行解密,请使用 --ask-vault-pass 选项,如图所示。

ansible-playbook deploy.yml --ask-vault-pass

这将解密 playbook 中使用的所有文件,前提是它们使用相同的密码进行加密。

密码提示有时可能会很烦人。这些提示使得自动化站不住脚,尤其是当自动化是关键时。为了简化运行时解密 playbook 的过程,建议使用一个包含 AnsibleVault 密码的单独密码文件。然后可以在运行时传递该文件,如图所示。

ansible-playbook deploy.yml --vault-password-file  /home/tecmint/vault_pass.txt

这使我们得出了本主题和 Ansible 自动化系列的结论。我们希望这些教程能够提供一些有用的知识,帮助您了解如何从一个中央系统跨多个服务器自动执行任务。