ansibleで "Encountered unknown tag 'd'." なエラーがでた
どうして今までハマらなかったんだろう的な話で、ansibleでapacheの設定ファイルで表題のエラーがでた。
apacheのLogFormatを追加してprovisionしたときに出たのだけど、原因としては追加したLogFormatの記述がansibleで使っているJinja2テンプレートとして解釈されてエラーとなっていた。
ちなみに追加したフォーマットを一部抜粋
LogFormat "... time:%{%d/%b/%Y:%H:%M:%S %z}t ..." my_format
具体的にはここ→ time:%{%d
/%b/%Y:%H:%M:%S %z}t
ansibleのplaybookは以下のような感じ
- name: apache conf template: src=templates/apache/httpd.conf dest=/etc/httpd/conf/httpd.conf
回避策としては以下2つのどちらか
Jinja2の表記でJinja2の書式として認識させない
rawでそのまま出力
{% raw %} LogFormat "... time:%{%d/%b/%Y:%H:%M:%S %z}t ..." my_format {% endraw %}
Jinja2のテンプレートとして扱わない
playbookで template
を copy
に変えることで、テンプレートとして解釈せずにそのまま単にコピーするだけ。
- name: apache conf copy: src=templates/apache/httpd.conf dest=/etc/httpd/conf/httpd.conf
ということで
どちらでも良いと思うけど、単にコピーしてほしいだけだったので、後者を選択した