thirose’s blog

openstackやpythonなどなど

ansible-vaultで作ったpasswordに改行が入るときの対応

ansible-vaultでパスワードを暗号化してセットしたつもりで展開されたら改行が入ってしまっていて、
以下のようなことになっていることがあります。

mysql_endpoint = mysql+pymysql://USER:PASSWORD
@HOSTNAME:3306/database

@から改行されてしまって、確認しようとしたらmysqlへの接続エラーみたいな...

そう言った時大体、

echo 'password' | ansible-vault encrypt

とやってしまっていますが、

echo -n 'password' | ansible-vault encrypt

を入れると改行を取り除いてくれますね。

echo の -n オプションは、man echo を読んでいただけるとわかると思いますが、 -n do not output the trailing newline
と書かれてて、改行を出力しないようにしてくれます。

よく忘れて、ansible実行すると大体これにハマるので注意したいです。