2016-05-13 7 views
1

私はリポジトリの中にいくつかのアプリケーションがあるとしましょう。データベースのユーザー名+パスワードのような機密データは、リポジトリ内には格納されず、暗号化された別のパスワードデータベースに格納されます。ソースコード内には、次のようなプレースホルダがあります:%%mysqlpassword%%機密データを貼り付ける方法

私は、コードをチェックアウトし、ユーザーの資格情報を置き換えるために、プレイ可能なプレイブックを作成したいと考えています。

テンプレートと
  1. または交換するモジュールと
  2. は、私はそうするには、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 

:変数{{ mysqlpassword }}

2 -

mysqlconnect.php.j2テンプレート内のあなたの安全なユーザー名とパスワードのすべての値を持つ my_very_secure.ymlのような別のファイルを(あなたが好きな名前)を作成するよう

の1-使用mysqlpasswordその後、ansible-vaultでこのファイルを暗号化することができます。

このファイルは暗号化されているため、ソース管理サーバーに保存することもできますが、マスターサーバーに残しておくこともできますが、一度プレイする準備が整ったら--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

関連する問題