Ansible Vaultのチェックとトラブルシュート

Ansibile Vaultで異なるパスワードを用いたファイル暗号化では
Ansibileで異なるvault-idを使ったAnsible Roleを作成しましたが
更に異なるvault-idの追加方法や検証中に遭遇したトラブルシュートを記載します。

vault-idのチェック

vault-idが正しく聞いているか確認します。問題なく確認できるはずです。

$ ansible-vault view --vault-id test1@/opt/ansible/.ssh/test1_pass vars/main/test1_pass.yml

異なるvault-idで試してみます。エラーになるはずです。

$ ansible-vault view --vault-id op@/opt/ansible/.ssh/test1_pass vars/main/op_pass.yml
ERROR! Decryption failed (no vault secrets were found that could decrypt) on vars/main/op_pass.yml for vars/main/op_pass.yml

新しいvault-idの設定

ansible.cfgを設定した後に新しいvault-idを設定しようとする以下のエラーになります。

$ vi /opt/ansible/.ssh/test2_pass
$ vi vars/main/test2_pass.yml
ansible-vault encrypt --vault-id test2@/opt/ansible/.ssh/test2_pass vars/main/test2_pass.yml
ERROR! The vault-ids op,test1,test2 are available to encrypt. Specify the vault-id to encrypt with --encrypt-vault-id

解決策はansible.cfgを編集して、新しいvault-idを追加します。

$ vi ansible.cfg [defaults] 
vault_identity_list = op@/opt/ansible/.ssh/op_pass,test1@/opt/ansible/.ssh/test1_pass,test2@/opt/ansible/.ssh/test2_pass vault_id_match = True

再度コマンドを実行するとエンコードに成功します。

$ ansible-vault encrypt --vault-id test2@/opt/ansible/.ssh/test2_pass vars/main/test2_pass.yml
Encryption successful