ansibleはどこからtemplateを探すのか?
よく j2 を付け忘れては「templateが見つからない!」と言われます。
どこからtemplate fileを探しているのか?と調べてみたけど、ネット上にあまり落ちてないのでメモ。
こんな構成の Playbook だとして
play_dir ├── hosts ├── roles │ └── foo │ ├── defaults │ │ └── main.yml │ ├── tasks │ │ └── main.yml │ └── templates │ └── bar.conf.j2 ├── site.yml └── templates └── bar.conf.j2
foo role の中で template を配置する task があるとする
- template: src: bar.conf.j2 dest: /path/to/bar.conf
# Play $ ansible --version ansible 2.4.3.0 $ cd play_dir $ ansible-playbook -i hosts site.yml
エラーメッセージに search path が載っているのだけど、この場合は以下から探していた。
play_dir/roles/foo/templates/bar.conf.j2 play_dir/roles/foo/bar.conf.j2 play_dir/roles/foo/tasks/templates/bar.conf.j2 play_dir/roles/foo>/tasks/bar.conf.j2 play_dir/templates/bar.conf.j2 play_dir/bar.conf.j2
なお、Document にのせる提案はされているので、公式化を待つのがよさそう github.com