一体、何の話か。
以前 RhodecodeにPushしたら自動的にPelicanをmake htmlするためのhook を書いた。
Ansibleを使うのにも慣れた感じがあるので、pelicanそのもののインストールとタグを分けたplaybookを書いたら良いんじゃないかと思った。
まぁ、とりあえず書いたのね。大して長くもないし。
で。
ansible-playbookを非対話バッチとして実行する際にsudoで別ユーザ権限実行とかを使う必要に迫られたのだけど、hookで実行するからパスワード聞かれるタイミングとか無いわけ。ログインは公開鍵だし。
サーバごとにsudoersを設定するとか受け入れられないし、ask-pass使いたいけどRhodecodeのhookバッチで非対話だゲロゲロー。
ってわけ。
とりあえず方法はある。
Ansibleには、ansible_sudo_passと言うそのものズバリな設定項目がある。
|
|
See: http://docs.ansible.com/intro_inventory.html#list-of-behavioral-inventory-parameters
こいつを hosts とかに書いておけば問題なく実行できる。
つまりこうだ
|
|
ヒュー、オッケー片付いた。
でもそれリポジトリに入れるの?
「忘れると面倒だし、hostsファイルはリポジトリに入れておこうかな、うん、それがいい」
「そうだね、やめようね」
パスワード文字列だけ他のファイルに書いておく。
そこで、lookupを使ってファイルの中身をテキストとして読み込ませる。
See: http://docs.ansible.com/playbooks_lookups.html
要所要所で使っていけば微妙にグレーな部分を切り離すのに一役買ってくれる気がする。
と言うわけでこうなる。
|
|
で、secretはリポジトリに入れなければいい。
仮にこの仕組みを忘れてもhostsの設定があからさまだから、分かるだろう。分かれ、未来の僕。
そういうわけさ。