新しいプロジェクトの開発環境を作る時にAnsibleを使った。このプロジェクトはモバイルアプリの開発。サーバーはmBassを使う。したがってAnsibleをサーバーのプロビジョニングに使った訳ではなく、ローカル開発の環境作りに使った。
開発環境構築手順書といえば、テキストで実行コマンドをつらつらと書いていくもの。Excelでインストール手順を画面キャプチャを取りながら…なんてものもある。手順書を書くのはなかなかつらい。「あーでもない、こーでもない」と試行錯誤して環境作って、手順書作って、その手順書に誤りがないかまた環境作ってみたりする必要があったりして。
最初から構築をAnsibleのPlaybook作成から始めれば「あーでもない、こーでもない」がプログラムのデバッグ、トライ&エラーと同じになる。プログラムに慣れている人ならそれほど苦行にならない。各メンバーに配布するのはPlaybookになるので、手順書いらない。Playbookに誤りがないかの確認はansible-playbookコマンドを実行するだけ。自動。
AnsibleはYAMLファイル1つから始められるのもとても良い。こちらを見ると、サーバー構成に使うならChefのようなディレクトリ構成にすることが良いらしい。
例えばWebアプリの開発なら、
上の流れでいけそう。(やったことないけど)
AnsibleとChefの関係は、RubyのWebアプリフレームワークでいうところのSinatraとRailsの関係に似ていると思った。Sinatraもファイル1つで始められるけど、規模が大きくなったりMVCやテストを意識すると、結局rails new
した時のディレクトリ構成に近づいていくみたいな。
規模の大きなシステムになると、色々例外ケースなどが生じて「Rubyのコード書けるChef」が重宝されるという情報も聞きますが、サーバー構成もAnsibleでいいんじゃないかと思いました。言い切れるほど試してないはいませんが。