AnsibleでVaultを使う
Ansibleで変数を扱っていると機密性の高い情報は暗号化する必要があります。例えばAWSの鍵情報やToken情報やsshの秘密鍵など。
では、さっそく!
Ansibleでデータを暗号化する
暗号化を使う理由
- 平文で保存できない情報を暗号化して使う
- (ex) dbのパスワードやAPI-keyなど
- Vaultの設定をしておくとAnsibleが実行時に復号して処理してくれる。
- 平文で保存できない情報を暗号化して使う
公式ドキュメント
Vaultの設定例
ansible.cfg
(ansibleの直下に配置)- vault_password_fileでvaultのファイルパスとファイル名を指定する
[defaults] vault_password_file = ./.vault
.vault
hogehoge
- group/vars配下で
main.yml vault.yml
- main.yml
sample_password: "{{ vault_sample_password }}" include_vars: vault.yml
- vault.yml
vault_sample_password: "fuga"
- vault.yml (平文)
- Vaultで暗号化すると次のようになる。
--- hoge: hoge vault_sample_password: "hoge"
- vault.yml (暗号化)
$ANSIBLE_VAULT;1.1;AES256 34303639323036613466616234363931663530373365346335396135383234663935333765626264 3165353632636435386361393564336230626265323865370a333938383538666562356330336638 35366133326665633630353930623634396564623663353934323537623038623432363232646537 3333356361623936350a633034363535666233323232643339363135386332326463323634636163 36366539363638333733366462333639646435636462396166613531623431613364363366656134 6130336463356564663036303064336136633631626564316666
ansibleでデータを暗号・復号するコマンド
- decrypt( 復号化 )
ansible-vault decrypt --vault-password-file </path/to/vault-pw-file> </path/to/target-file>
- encrypt( 暗号化 )
ansible-vault encrypt --vault-password-file </path/to/vault-pw-file> </path/to/target-file>
参考
- Vimで簡単にansible-vault/decryptする方法
- 本ブログの
リモートサーバ上で効率的にAnsibleを書くためにvimをカスタマイズする ( NERDTreeとvim-ansible-vault導入 )
に記載
- 本ブログの