ansible-vault2.0以降のアップデート2016/06/01yunano1
View Slide
自己紹介• Qiitaでyunanoという名前で書いています直近では「ansible-consoleを使おう」というネタを書きました• http://qiita.com/yunano/items/faba4f3330594e41246b2
ansible-vaultの簡単なおさらい• パスワードなどの機密情報が書かれたファイルを暗号化するツール• Ansibleの各種コマンドに”--ask-vault-pass”オプションか”--vault-password-file”オプションで暗号化した際のパスワードを与えると、処理中使用する暗号化されたファイルが復号される普通は暗号化されたvars系ファイルを読み込ませる暗号化されたplaybookも読むことができる暗号化されたインベントリファイルも2.0から可能3
ansible-vaultの2.0以降のアップデート• ansible-vault editは使ってはいけない!?• copyモジュールのsrcに指定したファイルを復号• cryptographyを使用して高速化4
ansible-vaultの2.0以降のアップデート• ansible-vault editは使ってはいけない!?• copyモジュールのsrcに指定したファイルを復号• cryptographyを使用して高速化5
ansible-vault editは使ってはいけない!?• 「Don't use ansible-vault edit at all.」出展:https://github.com/ansible/ansible/issues/121826
ansible-vault editの動き• ansible-vault editを実行すると/tmp以下に、復号されて平文になった一時ファイルが作られるため、ディスクに平文が書かれることになる対策として2.0.1からedit終了時に一時ファイルがランダムデータで埋められてから削除されるようになった7
ansible-vault encryptの機能追加• 2.0からansible-vault encryptに標準入出力との読み書き機能が追加「echo “password” | ansible-vault encrypt >foo.vault」「ansible-vault encrypt > foo.vault」標準入力に何か書いて、行頭でCtrl+dで終了8
ansible-vaultの2.0以降のアップデート• ansible-vault editは使ってはいけない!?• copyモジュールのsrcに指定したファイルを復号• cryptographyを使用して高速化9
copyモジュールのsrcに指定したファイルを復号• 2.1から「copy: src=bar.vaultdest=/etc/bar」のように、srcに暗号化されたファイルを指定すると自動的に復号されてコピーされるように仕様変更copyモジュール以外には適用されない。例えばtemplateモジュールだとそのままコピーされる将来lookupプラグインのfileでも復号されるようになる予定(2.2から?)10
ansible-vaultの2.0以降のアップデート• ansible-vault editは使ってはいけない!?• copyモジュールのsrcに指定したファイルを復号• cryptographyを使用して高速化11
ansible-vaultの復号は*遅い*• 特に1.7から、例えばhost_vars以下に100個暗号化されたファイルを置いたとして、インベントリファイルにその100ホスト書かれていれば、処理対象が実際には1ホストしかない場合でもすべての暗号化ファイルが復号されるようになった12
ansible-vaultの復号は*遅い*• playbook13- hosts: host00connection: localgather_facts: notasks:- debug: var=key1
ansible-vaultの復号は*遅い*• インベントリファイル• host_vars/host[00:99].yml(暗号化する)• 「time ansible-playbook -i hosts site.yml --vault-password-file password.vault」27.595秒14[test]host[00:99]key1: val1
cryptographyをインストールする• 2.0からcryptographyをインストールすると、それだけで復号が高速化する• 「time ansible-playbook -i hosts site.yml --vault-password-file password.vault」2.918秒15$ sudo yum install libffi-devel openssl-devel$ sudo pip install cryptography