OpenStackをdeployするのにAnsibleとか使うと便利だったり?します。
便利かどうかはさておき、Vaultをファイル単位で暗号化しgithubで管理し始めると、何をどう変更したのかわからない。
という問題が発生します。そこで変数ごと暗号化していくのが変更を管理するのが一つの解決方法としてわかりやすいと考えています。
ただし、適当にhoge-vault.yml
とかファイルを作り、値だけ書き込んで、
ansible-vault encrypt hoga-vault.yml
とか書いてしまうとなぜかansible実行中に改行コードが入ります。
調べてみると、echo -e 'hoge' > hoge-vault.yml
をやれば良いようなことも書かれてますがやってみたけど、
ダメだったので
#use-encrypt-string-to-create-encrypted-variables-to-embed-in-yaml を参照して以下のようなスクリプトでファイルを作ってくことにしました。
$ cat vault_password_generator.sh #!/usr/local/bin/bash declare -A PASSWORD_LIST; PASSWORD_LIST=( ["vault_password_key1"]="password1" ["vault_password_key2"]="password2" ["vault_password_key3"]="password3" ["vault_password_key4"]="password4" ["vault_password_key5"]="password5" ) for PASSWORD in ${!PASSWORD_LIST[@]}; do `ansible-vault encrypt_string ${PASSWORD_LIST[$PASSWORD]} --name $PASSWORD >> all.yml` done
PASSWORD_LISTはハッシュ形式で、左辺がkeyで右辺がvalueになり、
実行時には${PASSWORD_LIST[$PASSWORD]}
にvalueが入り、$PASSWORD
にkeyが入ります。
変数ごと暗号化すれば、どの変数を追加 or 更新したのかわかるので管理しやすくなります。