2016-05-13 135 views
1

讓我們假設我在倉庫中有一些應用程序。敏感數據(如數據庫用戶名和密碼)不會存儲在存儲庫中,而是存儲在單獨的加密密碼數據庫中。在源代碼中只有這樣的佔位符:%%mysqlpassword%%以敏感的方式粘貼敏感數據

我想創建一個可靠的手冊來檢出代碼並替換用戶憑證。

我有兩個想法,這樣做的:

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

回答

1

你的問題的最佳答案是使用ansible-vault

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

1-使用mysqlpassword可變{{ mysqlpassword }}模板內mysqlconnect.php.j2

2 - 與您的用戶名安全的所有值和密碼創建像my_very_secure.yml單獨的文件(你想要的任何名稱)之後,您可以使用ansible-vault加密此文件:

ansible-vault encrypt my_very_secure.yml 

然後你就可以,因爲它是加密保存此文件到源代碼控制服務器或離開它的ansible主服務器上,但一旦你已經準備好運行的劇本只是包括--ask-vault-pass選項像這樣和路徑文件的安全:

ansible-playbook -i yourhostfile yourplaybook.yml [email protected]/path-to-your-file/my_very_secure.yml --ask-vault-pass 

希望這會幫助你。

+0

但是這個解決方案'mysqlconnect.php.j2'本身並沒有連接到我的應用程序中。 – derhelge

+0

@derhelge對不起,我沒有得到。你能否請解釋一下,所以我會給你正確的方向。 –

+0

對不起,我的錯。你是對的:) – derhelge