Vagrant + Chef ⇒ LAMP環境構築

Vagrant + Chef ⇒ LAMP環境構築

目的

Vagrant と Chef を利用して LAMP 環境をローカルの仮想環境で実現する

経緯

同一サーバ上で作業している場合に
MySQL のバージョンアップしてパフォーマンステストしたりしたいなぁ
でも、他のみんなに迷惑かかっちゃうよ or サーバ買ってもらえないし、
というときなんかに
ローカル環境で試せるね

ってことで導入しました。

環境

  • MacOSX Marvericks
  • Vagrant
  • VirtualBox

前提

以下がインストールされていること

  • Vagrant
  • VirtualBox
  • Chef
  • knife-solo

↑ 最下の「あとがき」にあるドットインストールで導入手順を参考にしました。

1. knife-solo 初期化

1
$ knife configure

色々尋ねられますが、基本、[Enter]連打で問題ありません。

2. BOX 追加

BOX とは、仮想マシン起動の際にベースとなるイメージファイルです。

centos64 という名前で box を追加します。

1
$ vagrant box add centos64 http://developer.nrel.gov/downloads/vagrant-boxes/CentOS-6.4-i386-v20131103.box

※利用しているサーバ環境と合わせたい場合は、
お使いのサーバにログインして以下実行で環境情報を調べるのが良いでしょう。

1
$ uname -a

box は以下から URL を選べます。
http://www.vagrantbox.es/

3. 仮想環境 初期化

1
2
3
$ mkdir [vagrant用ディレクトリ]
$ cd [vagrant用ディレクトリ]
$ vagrant init centos64

成功するとVagrantfileができているのがわかります。

1
2
$ ls
$ Vagrantfile

4. Vagrantfile 修正

private network の設定をして
ローカル環境からアクセス出来る様にします。

MacOS → VirtualBox
へのアクセスです。

以下のようにコメントアウトを外すのみ!

1
2
#config.vm.network :private_network, ip: "192.168.33.10"
config.vm.network :private_network, ip: "192.168.33.10"

5. 仮想環境 起動

Vagrantfile のあるパスで以下実行

1
$ vagrant up

以下実行で「running(virtualbox)」を実行すると、起動中であることを確認できる。

1
$ vagrant status
1
2
3
4
5
6
7
8
Current machine states:

default running (virtualbox)

The VM is running. To stop this VM, you can run `vagrant halt` to
shut it down forcefully, or you can run `vagrant suspend` to simply
suspend the virtual machine. In either case, to restart it again,
simply run `vagrant up`.

以下実行でログイン

1
$ vagrant ssh

ログインした後、ログアウトしたい場合に以下実行

1
$ exit

6. ssh エイリアス作成

1
$ vagrant ssh-config --host [sshエイリアス] >> ~/.ssh/config

以下実行でアクセスできる。

1
$ ssh [sshエイリアス]

また、以下実行で ssh の config に書き込まれていることを確認できる。

1
$ cat ~/.ssh/config

7. Chef リポジトリ作成

以下のような構成が管理しやすいかなと思いますので、
以下のように作ります。

1
2
3
4
|
+--- [vagrant用ディレクトリ]
|
+--- [chef-repo]

[vagrant 用ディレクトリ]の1つ上の階層に移動しておいて
以下実行

1
$ knife solo init [Chefのリポジトリ名]

8. 仮想マシンを chef 対応させる

1
2
$ cd [Chefのリポジトリ名]
$ knife solo prepare [sshエイリアス]

9. cookbook 作成

1
$ knife cookbook create [cookbook名] -o site_cookbooks/

10. cookbook に構築する環境の設定記述

1
$ vim [Chefのリポジトリ名]/[cookbook名]/recipe/default.rb

11. 実行 recipe 指定

1
$ vim [Chefのリポジトリ名]/nodes/[sshエイリアス名].json
1
2
3
{
"run_list": ["recipe[[cookbook名]]"]
}

12. テンプレートを作成

1
$ vim [Chefリポジトリ名]\[cookbookの名前]\template\default\index.html.erb

index.html.erb の中身は自由に編集してください。

例として

1
<h1>Hello, World</h1>

13. cookbook を vagrant 仮想環境へ反映

1
$ knife solo cook [sshエイリアス名]

13. 設定した仮想環境の Web サーバへアクセスする

ブラウザで http://192.168.33.10 へアクセス

ブラウザに以下が表示されることを確認!

1
Hello, World

また、仮想環境にアクセスすると以下ファイルができていることを確認できるので
試してみてください。

1
2
3
4
5
$ vagrant ssh
$ cd /var/www/html/
$ ls

index.html

あとがき

ドットインストールで以下さらっておくととっつきやすいです。