puppetのfiles, templatesのディレクトリ構成についてのスタイルガイド追記

devチャンネルにて議論しました。

 * 基本的には本番環境に合わせたdir構成にする
 * ただし、ファイル数が少なくて設置箇所が明確であればfiles, templates直下に置いた方が、dir掘る作業が減って楽なのでそうする
 * 「明確」の線引きは各チームの裁量に任せる

といったところに落ち着きました。

```
12:12 okkun: そういえばくろださん
12:12 okkun: http://paperboy-all.github.io/docs/puppet/style-guide.html
12:12 okkun: sourceやcontentで
12:13 okkun: modules/nanika/{files,templates}/ 以下のデータを引っ張ってくるときの
12:13 okkun: ディレクトリのレイアウト
12:13 okkun: これって規約ありましたっけ？
12:14 okkun: たとえば 本番環境の /etc/nanika/doreka.conf にファイルを設置したいなら
12:14 okkun: modules/nanika/files/etc/nanika/doreka.conf にする
12:14 okkun: みたいな
12:14 hsbt: くろださん、まだ出社していないのであった
12:14 hsbt: ストレージの霊が
12:14 okkun: 怨霊…
12:17 okkun: 一応知らない人向けに説明しますと、filesやtemplates以下のレイアウトは本番環境に合わせておくと、どこに何を設置するのかを想像しやすくなるというメリットがあるのです
12:18 okkun: 思えば、どこにも書いていないような気がしたので、この際決めてしまうのも良いかと
12:18 okkun: --ここまでくろださんへの伝言--
12:19 hsbt: files はよさそう
12:19 hsbt: templates はどうかな
12:22 tnmt: 両方同じようにレイアウト合わせるでいいんじゃないでしょうか
12:22 tnmt: files, templates
12:24 hsbt: templates は static 感が薄いんで
12:24 hsbt: 言葉にできない違和感があるというのがイマココ
12:24 hsbt: files は agreed
12:25 tnmt: 違和感わかります
12:25 hsbt: やってみたらなるほど感が出て消えるかもしれないけど、消えないかもしれない
12:25 hsbt: may be くらいのトーンでどうか
12:26 tnmt: template, あまり多用しすぎないほうがいいと思うんですけど
12:27 tnmt: ファイル多くなるとディレクトリ構造合ってると楽だし
12:27 tnmt: だいたいここらにあるだろうなという
12:27 mizzy: 本番と同じパスにするの、モジュール化する前に導入した慣習で、filesやtemplates以下がロール単位になってファイルが多くなりがちだからそうしてたけど、
12:27 tnmt: アタリがついてストレスフリー
12:27 mizzy: モジュール単位になると、ファイルそれほど多くなることはすくなさそう
12:27 tnmt: あー、それはそうですね
12:28 tnmt: rolesだと少し多くなるかもですが
12:28 mizzy: なので、ファイルが多い場合は構造合わせる、そうじゃない場合はfilesとかtemplates直下にぽんとファイル置く、
12:28 mizzy: とかはどうかな
12:28 mizzy: 一個しかファイルないのにディレクトリ掘るのはだるい気がする
12:28 tnmt: 確かに、だるいですｗ
12:29 mizzy: だよねー
12:29 tnmt: 愚直に掘ってる派
12:29 tnmt: modulesだとそのまま
12:29 tnmt: rolesだと構造合わせる
12:29 tnmt: だと俺はだいぶ良い感じです
12:30 hsbt: >ファイルが多い場合は構造合わせる、そうじゃない場合はfilesとかtemplates直下にぽんとファイル置く、
12:30 mizzy: よさそう
12:30 hsbt: これだった
12:30 hsbt: templates, だいたい /etc/foo/foo.conf
12:30 hsbt: だけだから
12:30 hsbt: 謎の違和感はそこだった
12:30 mizzy: nrhd
12:30 udzura: 勉強になります!!1
12:30 hsbt: files はほら... ぐしゃっとドン...みたいな
12:30 hsbt: munin/plugins/* とか
12:31 tnmt: recurse => true,
12:31 tnmt: ....
12:32 udzura: recurse
12:32 okkun: motdとか、
12:33 okkun: 明らかに置く場所ここじゃん！みたいなものに関しては
12:33 okkun: files/etc/motdとかがいいなあと思ってたんですが
12:33 okkun: files/motd
12:33 antipop_: moduleは構造あわせない、roleはあわせる、ぐらいのほうが明確そう
12:33 okkun: でも
12:33 okkun: 分かるような気も
12:34 antipop_: ただ、moduleの場合も、構造あわせておいたほうが、適用時のガイドラインになるというメリットはあります
12:35 tnmt: ですね
12:36 tnmt: moduleもそうするのは無理強いしない
12:36 mizzy: 基本は構造あわせる、ただしファイルが少なくてあわせなくても明確な場合は、無理に合わせなくていい、ぐらいな感じですかねー
12:36 hsbt: あんちぽさんのもなるほど感高かった
12:40 antipop_: で、やはり僕の考えだとfilesでなくtemplateで統一することに、erbが混ざる以上のデメリットがない感じするのだがw(これは前の議論のくりかえし)
12:43 tnmt: 以前、全部templatesでいいじゃん時期があった
12:43 antipop_: それは僕のやってる規模の問題ではあるか
12:44 antipop_: ヘテとかだとだいぶ違ってくるかな
12:44 tnmt: hetemlの場合はheteloyの仕様で
12:44 tnmt: っていうところもありますが
12:44 antipop_: heteloyはまあおいといて、パフォーマンスが問題になりますか。
12:44 tnmt: そこは気になったことはないですね
12:46 antipop_: templateだと files/* ぼーんっておく、ができないっけ…
12:46 tnmt: 出来るんじゃないですかね
12:48 okkun: templates + recurse?
12:48 mizzy: あー、できるのかな、recurse
12:49 tnmt: あ、出来るというのはtemplates以下に置いた静的ファイルのrecurseのつもりでしたが
12:49 antipop_: そういう意味ですです
12:49 okkun: http://docs.puppetlabs.com/references/2.7.latest/type.html#file
12:49 okkun: Unlike content, the source attribute can be used to recursively copy directories if the recurse attribute is set to true or remote.
12:49 okkun: これだけ読むとできなさそうな
12:49 tnmt: erbを含むファイルがあるディレクトリだとどうなんだろう
12:50 mizzy: そもそも、sourceでtemplates以下のファイルとれなさそうな気がする
12:50 antipop_: テンプレートだと、普通はファイル名が不定になるとおもうので、recurseされても困る感じする
12:52 mizzy: そうすね
12:56 tnmt: > そもそも、sourceでtemplates以下のファイルとれなさそうな気がする
12:57 tnmt: これそうですね…
13:00 okkun: 統一しないほうが良さそうな・・・
13:00 tnmt: さっきの落とし所は書いておいてもいいんじゃないかな
13:00 tnmt: こうしてもOKよ的な感じで
13:01 okkun: あ、そうですね。
13:01 okkun: templatesへの統一はしない方が良さそう、という意味でした
13:01 okkun: dirのレイアウトはPRします
13:05 okkun: 12:36 mizzy: 基本は構造あわせる、ただしファイルが少なくてあわせなくても明確な場合は、無理に合わせなくていい、ぐらいな感じですかねー
13:05 okkun: ↑mizzyさんの意見に併せて書いてきます
13:05 mizzy: うす
13:06 mizzy: どこまでが明確でどこからがそうじゃないかは線引きが難しいけど、そこはレビューで補う感じかなー
```