【问题标题】:Paste sensitive data the ansible way以可靠的方式粘贴敏感数据
【发布时间】:2016-05-13 07:24:55
【问题描述】:

假设我在存储库中有一些应用程序。敏感数据,如数据库用户名+密码,不存储在存储库中,而是存储在单独的加密密码数据库中。源代码中只有这样的占位符:%%mysqlpassword%%

我想创建一个 ansible-playbook 来检查代码并替换用户凭据。

我有两个想法:

  1. 使用模板或
  2. 带有替换模块。

有完成这项任务的最佳实践方法吗?

---
- hosts: test

vars_prompt:
  - name: "mysqlpassword"
    prompt: "Enter mysql password for app"
    private: yes

tasks:
  - name: copy code from repo
    subversion: repo=https://repo.url.local/app dest=/srv/www/app

  - name: Replacement of sensitive data by templating
    template: src=mysqlconnect.php.j2 dest=/srv/www/app/inc/mysqlconnect.php

  - name: Replacement of sensitive data by replacement function
    replace: dest=/srv/www/app/inc/mysqlconnect.php regexp='%%mysqlpassword%%' replace='{{ mysqlpassword }}'

【问题讨论】:

    标签: passwords repository ansible ansible-playbook


    【解决方案1】:

    您问题的最佳答案是使用ansible-vault

    1- 在您的模板mysqlconnect.php.j2 中使用mysqlpassword 作为变量{{ mysqlpassword }}

    2- 使用您的安全用户名和密码的所有值创建单独的文件,例如 my_very_secure.yml(您想要的任何名称):

    ---
    mysqlpassword: very-secure-password-value
    anothervariable: another-secure-value
    

    之后你可以用ansible-vault加密这个文件:

    ansible-vault encrypt my_very_secure.yml
    

    然后您可以将此文件存储到源代码控制服务器中,因为它已加密或保留在 ansible 主服务器上,但是一旦您准备好运行 playbook,只需像这样包含 --ask-vault-pass 选项和安全文件的路径:

    ansible-playbook -i yourhostfile yourplaybook.yml -e@/path-to-your-file/my_very_secure.yml --ask-vault-pass
    

    希望这会对你有所帮助。

    【讨论】:

    • 但是使用这个解决方案 mysqlconnect.php.j2 本身并没有连接到我在 repo 中的应用程序。
    • @derhelge 抱歉,我没听懂。你能解释一下,我会给你正确的方向。
    • @derhelge 能否请您投票,以便其他人也可以从中受益。
    猜你喜欢
    • 2012-05-10
    • 2022-07-21
    • 1970-01-01
    • 2020-01-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多