メニュー

Vagrantとchef-soloで開発環境を立ち上げる

開発2部の吉岡です。

前回の記事 rpmを使ったchef-soloのレシピを作成していく
前々回の記事 chef-soloで使うrpmの配信サーバーを立ててみる

今回はVagrantとchef-soloを組み合わせて開発環境を作っていきたいと思います。

git submoduleでクックブックを持ってくる

前回の記事では、作成したクックブックをgitにpushしておきました。

vagrantのディレクトリを「git init」しておき、クックブック(「site-cookbooks」ディレクトリ)をsubmoduleとして追加してやります。

(なので、「cookbooks」に入っているサードパーティ製のレシピは使わない前提です)

vagrant initしたディレクトリで

$ git submodule add レポジトリURL ./site-cookbooks

とすると、site-cookbooksディレクトリが作成され、レシピが取り込まれます。

ディレクトリ構成としては下記のような感じです。
┳Vagrantfile
┗site-cookbooks
┣httpd-rpm
┃┗クックブックのファイル・ディレクトリ
┣php55-rpm
┃┗クックブックのファイル・ディレクトリ
┗mysql–56-rpm
┗ クックブックのファイル・ディレクトリ

Vagrantfileのprovision

Vagrantとchef-soloの連携は、Vagrantfileのprovisionで行います。

具体的には下記のような感じです。

  config.vm.provision :chef_solo do |chef|
    chef.cookbooks_path =  ["./site-cookbooks"]

    chef.add_recipe "mysql-56-rpm"
    chef.add_recipe "httpd-rpm"
    chef.add_recipe "php55-rpm"

    chef.json = {
      "httpd" => {
        "ServerName" => "lamp.local.localnet:80"
      },

      "mysql" => {
        "sync_binlog" => "0",
        "innodb_buffer_pool_size" => "128M"
      }
    }
  end

chef.cookbooks_path でcookbookのファイルパスを指定し、chef.add_recipeで使用するレシピを指定します。

また、chef.jsonでattributesの設定も行うことが出来ます。

環境を作ってみる

あとは

$ vagrant up

すると、chef-soloが頑張って設定してくれるはず!です。

他のスタッフに環境を配布したい時は、このvagrantのディレクトリをリモートに「git push」しておきます。

そして配布先で

$ git clone vagrantのリポジトリのURL
$ cd cloneしたディレクトリ
$ git submodule update --init
$ git submodule foreach 'git pull origin master'

と、cloneした後、「git submodule update –init」でchefのリポジトリを取り込みます。
そして、「git submodule foreach ‘git pull origin master’」でsubmoduleを最新化します。
http://rochefort.hatenablog.com/entry/20110410/p1を参考にさせて頂きました。)

あとは「vagrant up」するだけ。のはずです。

このやり方だと、vagrantを動かす方のPCにchefをインストールする必要はないので楽ちんです。

まとめ

長々と3回に分けて記事を作成してしまいましたが、これで統一した開発環境を楽に社内に展開出来るはずです。

難しいのはrpmでインストールするレシピを作成する部分でしょうか…
依存関係のエラーが結構出てくるので。

まだまだVagrantもchefも使いこなせていませんが、効率的に開発が行えるように環境を整えて行きたいと思います!

ちなみに、アイキャッチ画像は、商売繁盛な飾り付けをする部長です。今年もさらに躍進できる一年でありますように!

この記事をシェアする

  • twitter
  • facebook
  • Google+
  • B!はてブ
  • pocket
トップへ戻る

CONTACT

ゲーム開発、Webサイト制作に関するご相談等ございましたら、お気軽にお問い合わせください。

ゲーム開発に関する
お問い合わせはこちら

Webサイト制作に関する
お問い合わせはこちら