Bitwarden(Vaultwarden) 提供了命令行版本的客户端, 利用 Ansible 的 vault_password_file, 我们可以很方便的在使用 ansible-vault 时调用 Bitwarden 里的密码。
配置 bitwarden-cli
这里仅以 macOS 为例,其他的操作系统直接参考官方文档即可: 安装bitwarden-cli|官方文档
1 | # 安装 |
配置 Ansible
通过上一步的配置,我们已经可以在终端通过 bw 命令创建和获取密码了, 在 Ansible 这边,我们测试使用 ansible-vault 来加密一个文件,并将密码存储到 Bitwarden, 随后使用 Bitwarden 密码来完成对加密文件的解密。
首先我们在当前项目路径或是家目录创建一个 ansible.cfg。(具体在哪里创建取决于你想要的作用域, 优先级参考 Ansible官方文档: config) ,我这里直接以家目录为例。 vim ~/.ansible.cfg 内容如下:
1 | [defaults] |
在配置文件中, 指定 ~/vault-pass.sh 为 vault_password_file, 该脚本如下:
1 | #!/bin/bash |
别忘了赋予它可执行权限: chmod +x ~/vault-pass.sh
使用 Ansible-vault
假设我现在有一个文件需要使用 ansible-vault 加密: alliot-blog.yaml, 我们可以直接使用 ansible-vault 命令行执行:
1 | ansible-vault encrypt alliot-blog.yaml |
这是默认 ansible-vault 配置提示的交互式输入加密用的 Vault password, 在我们配置了上述脚本集成 Bitwarden 后,这个命令交互将变成如下:
1 | ansible-vault encrypt alliot-blog.yaml |
这里交互要求输入的是 Bitwarden 的密码, 完成登录后,将直接调用前面我们在 Bitwarden 中配置的 “Ansible-test-alliot-blog” 作为加密用的 Vault password。
至此, 便实现了 Ansible-vault 调用 Bitwarden 中的密码。
结语
Bitwarden 提供了多平台的客户端, 以及完善的 API, 利用这些开放的接口, 我们可以实现很多集成, 将零散的密码、凭证统一管理。
不过, 享受这种集中化管理带来的便利的同时, 也要防止被 “一锅端”, 别忘了安全加固与备份。