【vagrant + chef-solo および knife-solo による開発環境構築】(2014/03/15 – )
■概要
○目的
同一構成の複数の仮想マシンを開発環境として構築することで、開発環境構築の効率化と各開発者間の開発環境の統一を図る。
○構成
各ソフトウェアのバージョンは現時点(2014/03/15)での版である。
- ホストOS: Windows7
- ゲストOS: CentOS 6.5 64bit
- 仮想マシン: VitualBox ver4.3.8
- 仮想マシン管理: Vagrant ver1.5.1
- 自動システム管理: chef-solo および Knife-solo
- その他: rsync ver3.1.0
その他:
・chef-solo を動作させるため、windows上にver1.9以降のrubyが必要である。1.8系以前のバージョンは非推奨。
・knife-solo は、chef-solo を補助するためのツールである。
○大まかな手順
— 準備 —
- Vagrant上の仮想マシンテンプレートに対し、chef-solo および knife-solo を利用し開発環境構築を行う。
- 上記開発環境のBoxファイルを作成し、Vagrantfile、レシピと共に各開発者に公開する。
— 必要に応じて各開発者が行う —
- 各開発者はvirtualboxとVagrantを自分のローカル環境にインストールする。
- 各開発者は上記1.で作成したBoxファイルをVagrantコマンドによりダウンロードし、共有されたVagrantfileを利用して仮想マシンを起動する。
以下より構築手順詳細 以下はホストOSであるWindows上で行うこと
■Vagrantの準備
○VirtualBox導入
VirtualBoxはVagrant上のBOXを稼働させるために利用する。 公式サイトからVirtualBoxをダウンロードしインストールする。
https://www.virtualbox.org/wiki/Downloads
○ホストOS(Windows)へVagrant導入
・準備
公式サイトからVagrantをダウンロードしインストールする。
インストール後PCを再帰動し、vagrantが正しくインストールされたか確認するため、DOS窓を開いて以下のようにvagrantのバージョンを表示させる。
1 2 3 |
|
・Vagrant上に仮想マシンを追加する
任意のディレクトリへ移動し、下記サイトの「CentOS 6.5 x86_64」の仮想マシンテンプレートを指定してVagrant上に仮想マシンを追加する。 所要時間は10分から15分程度。
1
|
|
なお下記のVagrant環境のための一連の準備により、ユーザホームディレクトリおよび作業用ディレクトリには以下のファイルが作成される。
Vagrantインストール時にWindowsのユーザホームディレクトリ(C:\Users<ユーザ名>)に作成されるファイル
.vagrant.dvagrant環境初期化(vagrant init)時に作業用ディレクトリに作成されるファイル
Vagrantfilevagrant初回起動時(vagrant up)時に作業用ディレクトリに作成されるファイル
.vagrant
下記の一連の準備を終えたあと上記ファイルが作成されているか確認すること。
・仮想マシン追加完了後、Vagrant環境の初期化を行う
1
|
|
・仮想マシンの起動を行う
1
|
|
上記コマンドを実行し以下の様なエラーが出る場合、これはbox名の解決に失敗しているということなので、Vagrantfileファイルの一部を編集して再度仮想マシンの起動を行うこと。
Bringing machine ‘default’ up with ‘virtualbox’ provider… ==> default: Box ‘base’ could not be found. Attempting to find and install…
Vagrantfileファイル13行目
config.vm.box = “base”
上記の箇所を以下のように編集
config.vm.box = “centos65”
参考サイト:http://www.trapon.jp/log/201307/mac_vagrant_centos.html
仮想マシン起動後、PuTTYやTeraTermなどのSSHクライアントで仮想マシンへアクセス可能である。
Host: 127.0.0.1 Port: 2222 ID: vagrant PW: vagrant
・その他のVagrantコマンド
Vagrantの状況確認を行う
1
|
|
Vagrant Boxの一覧を表示する
1
|
|
Vagrant Boxを削除する
1
|
|
Vagrantを終了させる
1 2 |
|
Vagrantの準備は以上。
■chef solo の準備
○前提 ゲストOS側にはknife-soloは導入の必要無し
ホストOS:Windows7 chef-solo knife-solo
ゲストOS:CentOS 6.5 64bit chef-solo
また、chef-soloのレシピ群は以下の階層構造で管理される
レポジトリ(キッチン)>クックブック>レシピ
○ホストOS(Windows)へruby2.0導入
ruby公式サイトより Ruby 2.0.0-p451 (x64) をダウンロードしインストールする。
http://rubyinstaller.org/downloads/
1
|
|
ruby 2.0.0p451 (2014-02-24) [x64-mingw32]
○ホストOS(Windows)へDevelopment Kit導入
同様にruby公式サイトより DevKit-mingw64-64-4.7.2-20130224-1432-sfx.exe (For use with Ruby 2.0 (x64 64bits only))をダウンロードしインストールする。 次にインストール先ディレクトリにて以下のコマンドを実行すること。
1 2 3 4 5 6 7 8 9 10 11 12 |
|
○ホストOS(Windows)へknife-solo導入
以下のgemをインストールすることで、chef-soloも同時にインストールできる。
1
|
|
Windows版には以下のgemも必要となる。
1 2 |
|
knife-soloのバージョンを表示して正常にインストールできたか確認する。
1 2 3 |
|
○リソース同期ツールrsync導入
下記サイトよりrsyncの無料版をダウンロードし、インストールする。
https://www.itefix.no/i2/cwrsync
任意のパスに配置しパスを通しておくこと
○リポジトリ(キッチン)の作成
以下のようにして chef-solo 基本ディレクトリを作成する
1
|
|
仮にリポジトリ名をchef-repoとすると、下記コマンドにてディレクトリ chef-repo 以下にレシピテンプレートが作成される。
1
|
|
○ゲストOS(Vagrant上のBOXとして起動しているCentOS6.5)へchef-solo導入
次にゲストOSへ chef-solo を導入するため作成したディレクトリ chef-repo に移動し、下記コマンドを実行する。 「2222」はゲストOSが稼働しているBoxのポート番号である。所要時間は30分程度。 この際、.chef/knife.rb が設定ファイルとして出力される
1 2 |
|
○クックブックの作成
クックブック名を仮に mybook として下記コマンドを実行する。
1
|
|
○レシピの作成
レシピファイルを編集しApacheのインストールを行ってみる。 レシピファイル(\chef-repo\site-cookbooks\mybook\recipes\default.rb)を以下のように編集
1 2 3 4 5 6 7 |
|
○実行レシピの指定
JSONファイル \chef-repo\nodes\127.0.0.1.json を編集し、実行レシピを追加する。
1
|
|
○レシピ実行
1
|
|
chef-solo/knife-soloによるレシピ実行まで、以上
■追補
○仮想マシンのメモリ設定(VirtualBoxの場合)
仮想マシン上に例えば2MByteのメモリ領域を設定する場合、Vagrantfileファイルを編集し、以下を追加すること。
1 2 3 4 |
|
○cookしようとしたときなどに以下のワーニングが出力される場合
1 2 3 |
|
以下のファイルを削除する
<ユーザホームディレクトリ>.ssh\known_hosts
○boxへのメモリの追加
規定値ではメモリが足りたいため、vagrant box(virtulabox 上の仮想マシン)のメモリを追加すること。 以下Vagrantfileへ記述を追加する。
1 2 3 4 |
|