ただのにっき
2016-10-21(金) [長年日記]
■ Ubuntuで自作のAnsible Playbookが動かなかった
ちょっとゆえあってここのところ日中はLinuxデスクトップ上で生活している。サーバ用途では長年Debianを愛用していたが、デスクトップならUbuntuの方が(稼働実績も情報も多いし)いいだろうということで、16.04LTSを入れてみている。
「なんか何もしてないくてもやたらとCPU食ってるプロセスがあるな。うはっ、これが悪名高きUnityか」なんて洗礼を受けつつも、おおむね日常生活ができるくらいには環境が整ってきたところ。というか、普段の開発環境なんてansible-playbook一発で作れるし、とかなめていたら、そもそもそのplaybookが動かなくて難儀したのだけど。
原因は自作のモジュールが古い仕様に基づいていたため。Python依存にしたくなかったためシェルスクリプトで書いてあるんだけど、返り値の書き方がこんなの:
echo "changed=1" echo "rc=0"
例によってネットでググッて見つけた書き方だけどこれはどうしようもなく古くて、UbuntuのAnsible 2.0ばかりかDebianの1.7ですらJSONでこう返すのだ:
cat <<JSON { changed: true, failed: false } JSON
ネットには古い情報が残り続けていることを肝に銘じているつもりなのにいつも忘れて、公式ドキュメントを参照しなかったおれが全面的に悪い。もういいかげんにしろって感じだ。
なお、sudoディレクティブも廃止になってbecomeに代わっているが、これはAnsible 1.9からなのでDebianが新しくなるまではこのままsudoを使う予定。