如何自动化ansible Vault解密?

时间:2016-02-17 16:47:43

标签: ansible ansible-playbook ansible-vault

我希望自动解密ansible保险库,而不必从命令行指定保管库位置或密码。

主要是,我正在寻找一种解决方案,其工作方式与~/.netrc的工作方式类似。当您在其中放置凭据时,工具(如curl,wget,...)将知道加载它们。

如果你没有执行,那么

这非常重要,因为我需要能够自动执行这些安全的剧本,所以提示密码显然不是一种选择。

另外,我不想在每个剧本中添加--vault-password-file参数。有什么想法吗?

3 个答案:

答案 0 :(得分:6)

与广告资源很相似,如果vault-password-file设置了可执行位,Ansible will run it and use stdout as the password

这允许您编写一个脚本,该脚本在PGP加密中包装密码,位于有限访问的S3存储桶中,使用AWS KMS或任何您喜欢的内容。

答案 1 :(得分:4)

您可以在ansible.cfg中定义vault_password_file

但我没有看到太多的价值。查看.netrc联机帮助页,我看到凭据位于.netrc文件中,也是以纯文本编写的。此外,它暗示:

  

此文件位于启动文件传输的计算机上的用户主目录中。应将其权限设置为禁止组和其他人进行读取访问。

对于.netrc而言,它是有道理的,因为目标是提供对其他系统的访问。但您的目标是提供对文件的访问权。

虽然加密文件没有多大意义,然后只需将用于解密的密钥放在同一主机上的另一个文件中,该主机仅受chmod保护。您可以首先使用chmod在Ansible中保护您的秘密。这具有相同的安全级别并避免一些开销。

答案 2 :(得分:0)

有几种方法:

  1. 根据建议,将密码文件存储在锁中(例如Azure容器或使用ssh密钥可访问的任何其他位置)。在运行时获取它并使用--vault-password-file参数。您可以在此之后立即删除该文件。

  2. 如果您使用的是Jenkins等自动化服务器,则可以将密码存储为Jenkins Credential。快速检索密码并将其放入文本文件中。同样,使用--vault-password-file参数。我在这里写了一篇小帖子Stroing Vault key in jenkins

相关问题