Passwords 以可靠的方式粘贴敏感数据

Passwords 以可靠的方式粘贴敏感数据,passwords,repository,ansible,ansible-playbook,Passwords,Repository,Ansible,Ansible Playbook,假设我在存储库中有一些应用程序。敏感数据(如数据库用户名+密码)不存储在存储库中,而是存储在单独的加密密码数据库中。源代码中只有这样的占位符:%%mysqlpassword%% 我想创建一个ansible playbook来签出代码并替换用户凭据 我有两个想法: 使用模板或 使用更换模块 有没有最佳实践方法来完成这项任务 --- - hosts: test vars_prompt: - name: "mysqlpassword" prompt: "Enter mysql passw

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

我想创建一个ansible playbook来签出代码并替换用户凭据

我有两个想法:

  • 使用模板或
  • 使用更换模块
  • 有没有最佳实践方法来完成这项任务

    ---
    - 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 }}'
    

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

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

    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
    本身并没有连接到我的回购应用程序。@derhelge抱歉,我无法获得。你能解释一下吗,我会给你正确的方向。@derhelge你能不能请你投票,让其他人也能从中获益。