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