【问题标题】:Using credentials securely in ansible inventory在 ansible 库存中安全地使用凭据
【发布时间】:2021-04-17 03:32:09
【问题描述】:

为了连接到 Windows 主机,我需要在清单文件中传递凭据。这是我的库存文件:

[windows]
100.100.100.100

[windows:vars]
ansible_user=Adminuser
ansible_password="Mypassword"
ansible_port=5986
ansible_connection=winrm
ansible_winrm_server_cert_validation=ignore

Ansible 文档说凭据应该使用 ansible-vault 加密。我可以在我的清单文件中使用使用 ansible-vault 加密的变量文件吗?如果是这样,我如何将我的 ansible-vault 凭据传递到我的库存文件?我还将在我的剧本中使用这样的凭据:

- hosts: windows
  gather_facts: no

  vars_files:
  - vars.yml

  tasks:
  - win_domain_membership:
      dns_domain_name: my.domain.com
      hostname: ansible-host
      domain_admin_user: {{ admin_user }}
      domain_admin_password: {{ passwd }}
      domain_ou_path: "OU=Windows,OU=Servers,DC=ansible,DC=com"
      state: domain
    register: domain_state

然后,我将使用 ansible-vault 为这个剧本加密我的变量文件。

---
admin_user:myusername@my.domain.com
passwd:mypassword

然后在命令行将我的 ansible-vault 凭据传递给我的剧本:

$ ansible-playbook myplaybook.yml --ask-vault-pass

是否可以将我的库存中使用的变量文件和我的剧本中使用的变量文件存储在同一个 ansible-vault 中?这样我就可以在命令行传递两个文件的 ansible-vault 凭据?

【问题讨论】:

    标签: ansible ansible-vault


    【解决方案1】:

    ansible-vault 命令加密单个文件。 Ansible 在运行时对此进行解密并以与文件未加密时相同的方式对其进行解释(因此您不能“将我的库存中使用的变量文件和我的剧本中使用的变量文件存储在同一个 ansible-vault 中”因为这是两个不同的文件)。

    我会从您的库存中删除该变量,并将其保留为:

    [windows]
    100.100.100.100
    

    然后将 group_vars/windows.yml 创建为具有以下内容 (ansible-vault create groups_vars/windows.yml) 的保管文件:

    ansible_user: Adminuser
    ansible_password: "Mypassword"
    ansible_port: 5986
    ansible_connection: winrm
    ansible_winrm_server_cert_validation: ignore
    

    当您有针对 windows 组的游戏时,Ansible 将自动应用 group_vars/windows.yml 中的变量。

    【讨论】:

    • 感谢您的回复。如果我使用 ansible-vault 加密 groups_vars/windows.yml 文件,那么我应该如何处理剧本中的凭据?我是否为这些凭据创建单独的 ansible-vault?如何在命令行中将凭据传递给保管库?
    • 我认为the documenation 有很多关于这个主题的好信息。您可以在命令上或在配置文件中配置保险库密码,或者让 ansible 调用命令来获取保险库密码。 W / r / t“我是否为这些凭据创建单独的ansible-vault?”,没有一个最佳答案。以您认为最好的方式管理事物。我喜欢将需要通过保险库加密的凭据与其他数据分开,但其他人的做法不同。
    • 感谢您为我指明这个方向。该文档确实显示了在从命令行运行剧本时如何将多个密码传递给多个 ansible vault。这正是我想要的。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-10-20
    • 2012-10-05
    • 2012-06-05
    相关资源
    最近更新 更多