首页 文章

如何自动化ansible Vault解密?

提问于
浏览
5

我想自动解密ansible保险库,而不必从命令行指定保险库位置或密码 .

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

如果你不这样做,执行就会有 .

这非常重要,因为我需要能够自动执行这些ansible playbooks,因此提示输入密码显然不是一种选择 .

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

3 回答

  • 4

    与库存非常相似,如果 vault-password-file 设置了可执行位,Ansible will run it and use stdout as the password .

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

  • 0

    您可以在ansible.cfg中定义 vault_password_file .

    但我没有看到太多的 Value . 查看.netrc联机帮助页,我看到凭据位于.netrc文件中,也以明文形式编写 . 此外,它建议:

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

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

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

  • 6

    有几种方法:

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

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

相关问题