双六工場日誌

平凡な日常を淡々と綴ります。

Ansibleを使い出す前に押さえておきたかったディレクトリ構成のベストプラクティス

Ansibleのディレクトリ構成を決める際、プロダクション環境、ステージング環境、開発環境といった環境ごとに異なる設定を変更する方法でしっくり来るものを思いつかず、どうしたものかと悩んでいたのですが、今日見つけたブログ記事でそれもスッキリ解消したのでメモっておきます。

結論

まず結論を。プロダクション環境、ステージング環境、開発環境といった環境ごとに異なる設定する場合は、以下のように対応するのが良さそうです。

  • ディレクトリ構成は、公式ドキュメントに従う。

Best Practices — Ansible Documentation

  • プロダクション、ステージング、開発など、ステージごとの変数切替は以下のブログを参考に、"group_vars"を利用して行う。
    • インベントリファイルの中に、"[production:children]"のようなグループすべてが属するグループを作ってしまい、そのグループに対応するファイル("group_vars/production"など)を作成する。

Multistage environments with Ansible – Ross Tuck

同じ悩みを持っていて、ここまでの内容とリンク先を見て納得した人は以上で、このエントリで伝えたかったことは終わりです。

悩んでいたこと

これだけではあっさりしすぎなので、悩んでいた内容も書いておきます。

Ansible公式のディレクトリ構成のベストプラクティス

Ansibleの公式ドキュメントの「Best Practice」には、以下のようなディレクトリ構成が掲載されています。

ポイントは、以下のような感じ。

  • 役割ごとにPlaybookは1つ。”site.yml"は、サイト全体のPlaybookで、役割ごとのPlaybookをincludeするのみ
  • プロダクション、ステージングなど、環境ごとにインベントリファイルを作成する
  • タスクの中身は、roleに書き、役割ごとに用意したPlaybookで利用する。
  • 変数は、group_vars, host_varsで設定(ただし、host_varsの利用はできるだけ避ける)

Best Practices — Ansible Documentation

続きを読む