将 Ansible 保险库密码存储在 Azure 密钥库中

将 Ansible 保险库密码存储在 Azure 密钥库中

在我的公司,我们使用 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 登录信息。

根据我从文档中读到的内容,只能通过以下方式提供保险库密码:

  1. 迅速的
  2. 文件
  3. 脚本文件(python)。

我的问题如下。我们遗漏了什么吗?是否可以在整体剧本之前设置一个角色/包含来获取密码ansible-vault并解密文件?

任何指示或替代方案都将不胜感激。

相关内容