
zip ファイルをパスワードで保護することを目的とした Ansible プレイブックを受け取りました。プレイブック (の一部) は次のようになります。
- name: Create and encrypt zipfile
vars:
zipPW: !vault |
$ANSIBLE_VAULT;1.1;AES256
64656637643264313764633665363234393239346230643936393864313337313030613461326639
3538303634303365373637633761306133333266393331630a336436383534323264376537653564
32393162353730373335303733663463333764616438643762653330616431353162326238663564
3163306336313931660a313530343935643366663433346231386638353932313936366538643664
shell: "zip -jr /tmp/pit/{{hostvars[inventory_hostname]['gzipoutfile']['stdout']}}.zip /tmp/pit/{{hostvars[inventory_hostname]['gzipoutfile']['stdout']}} -P {{zipPW}}"
register: zipped
- debug:
msg: "{{zipped}}
つまり、-P オプションの zip コマンドに Vault パスワードを渡そうとしているのです。
これはうまくいかないようです。プレイブックを実行すると、次のようになります:
"Attempting to decrypt but no vault secrets found"}
私が Ansible vault について理解している限りでは、これは vault パスワードを使用するためにパスワードを提供する必要があることを意味しますが、間違っている可能性があります。自動化を行う場合、パスワードを提供する必要は無意味に思えます。ファイルにパスワードを入れると、zip ファイルをパスワードで暗号化しなかった場合と同様に脆弱になります。
ボールトパスワードを使用するこの方法は可能でしょうか?
答え1
Ansibleはさまざまな方法金庫のパスワードを入力します。
- ファイル - ファイルシステムの権限によって保護される
- スクリプト - 他の金庫にアクセスし、他の場所に保存されている金庫のパスワードをデコード/復号化できます
しかし、結局はすべて同じ問題に行き着きます。ある時点で、パスワードを復号化するための何かを提供する必要があり、自動化プロセスが困難になります。ボールト パスワードを復号化するためのプレーン テキスト シークレットをどこに保存するかは、ユーザーが決定する必要があります。