Chef+BerkshelfでISUCON環境の構築

週末のISUCONに向け,VM上にChef+Berkshelfで過去大会の環境を構築して色々と試してます.
可能な限り楽をして環境を用意がメインテーマです.
折角なので,その環境構築方法を一部紹介.

事前準備

以前の記事で作成したcentos6.4のboxを利用して,ISUCONテスト環境用の環境を構築する.
以下のとおり実行.

1
2
3
$ vagrant init centos-6.4
$ vagrant up
$ vagrant ssh-config --host isucon >> ~/.ssh/config

次に,Chefのレポジトリを作成し,ホストにChefをインストールする.
※コマンドの詳細に関しては,以前の記事を参照.

1
2
3
4
5
6
$ knife solo init chef-repo
$ cd chef-repo
$ git init
$ git add .
$ git commit -m "Initial commit"
$ knife solo prepare vagrant@isucon

Berkshelfの設定

他の人が作ったCookbookを利用するために,Cookbook管理ツールであるBerkshelfを導入する.

1
2
$ gem install berkshelf
$ rbenv rehash

ISUCON2環境の構築

準備ができたところで,実際にISUCONの環境を構築していく. 今回は,例としてISUCON2の環境を構築してみる(使用する言語はruby). 詳細は下記サイトを参照.
サイト:自家製 #isucon2 のつくりかた

まず,利用できる既存のCookbookを導入する.
chef-repo内にBerksfileを作成し,以下の内容で保存する.

1
2
3
4
5
6
site :opscode

cookbook 'git'
cookbook 'nodejs', '>= 0.8'
cookbook 'ruby_build'
cookbook 'rbenv', github: "fnichol/chef-rbenv"

ソースを指定しない場合はopscodeからダウンロードされることになる.
以下のコマンドを用いて指定したcookbookをインストールする.

1
berks install -p cookbooks

MySQLのCookbook Ver.が古かったため,MySQLに関しては以下のサイトからCookbookを利用させて頂いた.
chefで作るmysql
このmysqlフォルダをcookbookフォルダ以下に設置する.

最後に,nodes/isucon.jsonファイルを以下の通り編集する.
rbenvを設定する際に,以下のページを参考にした.
Chefを新しくしてrbenvをberkshellでvagrantのUbuntuにインストール

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
{
  "rbenv": {
    "rubies": ["2.0.0-p195"],
    "global": "2.0.0-p195",
    "gems": {
      "2.0.0-p195": [
        {"name": "bundler"}
      ]
    }
  },
  "run_list": [
    "git",
    "nodejs",
    "ruby_build",
    "rbenv::system",
    "mysql"
  ]
}

ここまで出来たら,以下のコマンドでVMに送る.

1
knife solo cook isucon

こんな感じ.
力尽きたのでここまで(^_^;)

Comments