在我的公司,我们使用 Azure 云服务。对于我们的本地部门,我们想设置一组 Linux 服务器。这些服务器用于形成测试设置。
为了设置和维护这些服务器,我们选择使用 Ansible。为了存储登录详细信息等机密信息,我们使用 Azure keyvault。或者,我们可以使用ansible-vault
加密文件,密码存储在 Azure keyvault 中。
这就是问题所在。如果我们执行以下 Ansible 剧本:(根据本文档)
---
- hosts: linux-servers
connection: local
collections:
- azure.azcollection
vars:
vault_name: <key_vault_name>
secret_name: <password_name>
resource_group: <resource_group_name
vault_uri: <vault_uri_>
tasks:
- name: Get decrypt password.
block:
- name: Get secret value
azure_rm_keyvaultsecret_info:
vault_uri: "{{ vault_uri }}"
name: "{{ secret_name }}"
register: kvSecret
- name: set secret fact
set_fact: decrypt_password="{{ kvSecret['secrets'][0]['secret'] }}"
- name: Output key vault secret
debug:
msg="{{ decrypt_password }}"
- name: Perform some management stuff
file:
path: /opt/testfile.ext
owner: test
group: test
mode: '0666'
我们完全可以获取密码或任何其他值。但是,我们想使用获取的密码来解密ansible-vault
包含每个 Linux 服务器登录信息的文件。只要我们不使用ansible-vault
加密文件,这种方法就很有效,但是我们确实想使用加密文件,因为它们包含服务器的 ssh 登录信息。
根据我从文档中读到的内容,只能通过以下方式提供保险库密码:
- 迅速的
- 文件
- 脚本文件(python)。
我的问题如下。我们遗漏了什么吗?是否可以在整体剧本之前设置一个角色/包含来获取密码ansible-vault
并解密文件?
任何指示或替代方案都将不胜感激。