LoginSignup
8
8

More than 5 years have passed since last update.

ansible-vault のメモ

Last updated at Posted at 2017-04-10

はじめに

久しぶりにansibleを使って環境構築をしていて、以前は使っていなかった vault をちゃんと使うようになったのでメモ。

(以前はパスワード等のファイルはgitに乗せないで手動共有していた。。。正確には自分しか触らなかったので自分だけが持っていた)

3行で

  • 暗号化ファイルに秘密鍵ファイルを使用すると便利なんじゃね
  • create または encrypt 時に --vault-password-file=~/.ssh/project_id_rsa って付けるだけ
  • ansible.cfg に vault_password_file = ~/.ssh/project_id_rsa 書いておくと実行時は何も気にしなくていい!

やりたかったこと

  • クレデンシャルを平文でgit管理に含めない
    • そもそもプライベートリポジトリだけど
    • そもそもgit管理に入れてなかったのも、チームの人数が増えるとよくない(暗黙の手渡しとか。。。_no)
    • つまり vault を使う
  • 忘れちゃうようなパスワードを使わない and たくさん暗号化キー(パスワード持ちたくない) and わかる人に伝わる共有の情報を使う
    • secret.txt とか手動管理やめたい
    • vault ファイル毎とかプロジェクト毎にパスワード違うとか。。。
    • チームで共有の秘密鍵(terraform用の鍵とか、実行可能ユーザが持っていていいもの)を使うといいんじゃない?
  • 今までと実行時引数を変えたくない
    • タグだったりホストだったり実行時に渡す引数が多いので --ask-vault-pass とかやりたくない
    • ansible.cfg に書いておけば大丈夫。vaultを使っていない時は無視される

具体的に

  • 鍵は自分のではなく、プロジェクトやチームで共有している鍵を使う
    • プロジェクトが複数あってそれぞれ proja_id_rsa, projb_id_rsa みたいにして管理しているので
  • vars ディレクトリ(ロールでもグローバルでも)に拡張子.vaultでファイルを作る
    • .yml である必要ないし、暗号化された状態で管理されるので、IDE等の影響を受けなくなって便利
    • vault を使わないで書いておいて、うまくいくのを確認してから暗号化
  • 暗号化する際に、ansible-vault encrypt --vault-password-file=~/.ssh/proja_id_rsa secret.vault とする
    • view, edit とかも同じ
  • ansible.cfg に vault_password_file = ~/.ssh/proja_id_rsaとする
  • 暗号化された値を使用する直前のタスクで include_vars: secret.vault とするとわかりやすい?

結果的に

  • チームで共有する際にパスワードテキストの中身なんだっけ?がなくなった
  • 復号化に手間がかからず、暗号化が推進されて、構築のコード化が進んだ
  • export ANSIBLE_VAULT_PASSWORD_FILE=~/.ssh/proja_id_rsa ってしておくといちいち--vault-password-fileをつけなくて済むので楽になった
  • 自分用のプロジェクトは当然自分の id_rsa を使うことでめっちゃ楽になった
8
8
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
8
8