php-fpmをAnsibleで入れようとしたらしょーもないことに遭遇した話


はじめに

ちょっとAnsibleでNginx+PHP+MySQLな環境を作ろうとしていたら本当にしょうもないことに出くわしました。php-fpmの設定ファイルを反映するところで何度やっても事故るという。

最終的にただの笑い話でよかったですが。(仕事しろ)

事象

Playbook実行時のエラーがこれ

AnsibleError: file: /Users/.../playbook/roles/php70/templates/php-fpm.d/www.conf.j2, line number: 288, error: Encountered unknown tag 'Y'.

なるほど設定ファイルのテンプレにへんなタグがあるよと。タイポかな?とりあえず該当箇所見てみよう。

まずコメント行だから初期のままなんだけどなぁ...。
あ、とりあえずタイポではないけど、ブラケットがいる...。
でも確かplaybookの変数は二重波括弧({{ hoge }})だったはず...?
Jinjaというテンプレートエンジンを使ってたはずなので見てみよう。

ん...?


▂▅▇█▓▒░(’ω’)░▒▓█▇▅▂うわああああああああああ
Jinjaの文法ちゃんと知っていなかったがために数分無駄にしましたとさ...。
知っててもしょうがなかったけども

顛末

コメントなので消してしまっても良いかと思ったのですが、usage系のコメントは消したくなかったのでJinjaのページを漁って対応方法を探しました。
シンタックスの文字をそのままレンダリングするためのタグがあるので、それを使用するとバッチリ通りました。

(๑•̀ㅂ•́)و✧ヤッタネ

;      e.g. for a ISO8601 formatted timestring, use: %{%Y-%m-%dT%H:%M:%S%z}t
↓↓
{% raw %}
;      e.g. for a ISO8601 formatted timestring, use: %{%Y-%m-%dT%H:%M:%S%z}t
{% endraw %}

おしまい

今回に限らず起きそうなので笑いのネタ程度に残しました。
ここまでお読みいただきありがとうございました!

追記:IWAI Masaharu 様、ひどい誤字にご指摘いただきありがとうございました!