Ansible Vaultを使用して、パスワード、証明書の秘密鍵などをAnsible Playbook gitリポジトリに保存しています。既存のプライベートデータはすべてテキスト形式であるため、変数に格納できます。これらは、テンプレートまたはcontent
コピーモジュールのパラメーターで使用されます。
これで、JavaのKeyStoreファイルができましたが、残念ながらバイナリ形式になっています。そのため、それを変数内に格納することはできません-または、少なくともそれを行う方法がわかりません。gitに保存されているファイルを適切に暗号化する最も簡単な方法は何ansible-playbook
ですか?実行時に利用できますか?
私が成功せずにすでに試したこと:
- バイナリファイルをbase64でエンコードし、エンコードされたデータを変数に格納し、テンプレートモジュールをで使用します
{{base64_data | b64decode}}
。EF BF BD
結果ファイルの大量の16進ダンプにつながります。3バイトはUnicode置換文字をUTF-8でエンコードするため、バイナリデータをテキストとして解釈する際に問題があります。 - バイナリファイルをbase64でエンコードし、エンコードされたデータを変数に格納し、でコピーモジュールを使用します
content="{{base64_data | b64decode}}"
。Ansibleは「変数がモジュールの引数に新しいパラメーターを挿入しました」と文句を言います。二重引用符の代わりに単一引用符を使用すると、Ansibleは「引数文字列の解析エラー」と、ターミナルにダンプされたすべてのバイナリデータのコピーを表示します...
groups.google.com/d/topic/ansible-project/IinZK14FyX4での議論から、私はansibleがこれをサポートしておらず、base64のことを自分でやらなければならないが、サードパーティのものがあるかもしれないと結論づけていますそれはそれをより簡単にすることができます。
—
Antonis Christofides、
よろしくお願いします。試して報告します...
—
ダニエル・サザー
いいえ、残念ながら機能しません(編集された質問を参照)。関連する可能性のあるansibleプルリクエストに関するいくつかの議論があります:github.com/ansible/ansible-modules-extras/pull/142
—
ダニエル
これをGPG呼び出しでラップすることを考えましたか?GPG秘密鍵のASCII表現をAnsible Vaultに格納し、それを使用してバイナリファイルを復号化し、問題なくgitに格納できます。
—
クリストファーカレル
ご提案ありがとうございますが、この回避策は私が望んでいるよりも少し複雑です。base64でエンコードされたキーストアをターゲットマシンにコピーし、更新時にファイルをデコードするハンドラーを用意することをすでに考えていましたが、一時ファイルを破棄しないソリューションが望ましいです。
—
ダニエル・