Edited at

Mac OS XでVagrantとChefを使った環境構築のまとめ

More than 3 years have passed since last update.

※ここで説明している方法でのChefのインストールはお勧めしません。

こちらを参考に入れてください。

http://qiita.com/hamichamp/items/d3ca7c365353285a564b


Vagrantで仮想環境を作る準備をしよう


VirtualBoxをインストールしよう

https://www.virtualbox.org/wiki/Downloads

今回はMacOSXで環境を作るので、Mac版をダウンロードします。


Vagrantをイントールしよう

http://downloads.vagrantup.com/

ここから最新のものをダウンロードしましょう。

この記事を書いている段階では、v1.2.7でした。

今回はMacOSXで環境を作るので、Mac版をダウンロードします。


Vagrantで仮想環境を作ってみよう


仮想環境を登録しよう

今回はCentOSをダウンロードします。

$ vagrant box add centos http://developer.nrel.gov/downloads/vagrant-boxes/CentOS-6.4-x86_64-v20130427.box

centosという名前でvagrantにboxが追加されたか確認しましょう。

$ vagrant box list


仮想環境を初期化しよう

初期化するとVagrantfileというファイルが作成されます。

適当なフォルダを生成し、そのフォルダで作業をしましょう

$ mkdir ~/vagrant

$ cd ~/vagrant
$ vagrant init centos

これで、~/vagrant フォルダにVagrantfileというファイルが作成されます。

次にこれを編集しましょう。

どんなエディタでも良いです。

ホストのMacから接続できるIPアドレスを設定します。

次がコメントアウトされているので、コメントを外します。


config.vm.network :private_network, ip: "192.168.33.10"


仮想環境を起動しよう

$ vagrant up

しばらくすると仮想環境でCentOSが起動します。


仮想環境にアクセスしよう

$ vagrant ssh

無事にアクセスできたでしょうか?

これでベースとなる仮想環境ができました。

仮想環境での作業は後で行いますので、再びMaxOSXでの作業を続けましょう。


Chefをインストールしよう

こちらを参考に入れてください。

http://qiita.com/hamichamp/items/d3ca7c365353285a564b

※以下は、元々書いていた方法ですが、この方法でのChefのインストールはお勧めしません。


MacOSXのRuby環境を整備しよう

MaxOSXには最初からRubyが入っているんですが、少し古いです。

いろいろと面倒な事が起きるので、最新版をインストールしましょう。


Xcodeのインストール

App Storeからインストールしておきましょう。


Xcode Command Line Toolsのインストール

Xcodeを起動し、Preferencesを開き、Downloadsタブ「Components」から『Xommand Line Tools』をインストールしましょう。


Homebrewのインストール

コマンドプロンプトから、以下のコマンドを入力します。

ruby -e "$(curl -fsSL https://raw.github.com/mxcl/homebrew/go)"

次に一応、以下のコマンドも入力してみます。

brew doctor

brew update
brew -v

私のバージョンは今のところこんな感じでした。


Homebrew 0.9.4


Ruby2.0をインストールするための準備

Homebrewを使って、Ruby2.0をインストールしますが、その前に必要なものをインストールしましょう。

説明は省きます。


readline、openssl、rbenv、ruby-build をインストール

$ brew install readline openssl rbenv ruby-build

$ brew link readline openssl --force
$ echo 'eval "$(rbenv init -)"' >> ~/.bash_profile
$ . ~/.bash_profile


curl-ca-bundle をインストール

$ brew install curl-ca-bundle

$ brew list curl-ca-bundle
/usr/local/Cellar/curl-ca-bundle/1.87/share/ca-bundle.crt
$ cp /usr/local/Cellar/curl-ca-bundle/1.87/share/ca-bundle.crt /usr/local/etc/openssl/cert.pem


Ruby2.0をインストールしよう

さて、いよいよRuby2.0をインストールしましょう。

$ CONFIGURE_OPTS="--with-openssl-dir=`brew --prefix openssl` --with-readline-dir=`brew --prefix readline`" rbenv install 2.0.0-p247

$ rbenv rehash
$ rbenv global 2.0.0-p247

バージョンを確認しておきます。

$ rbenv version

$ ruby -v

2.0.0-p247が使えるようになったでしょうか?


rbenv rehash を自動化

この後、gemでいろんなものをインストールするんですが、きちんと使えるようにするために、おまじないを唱えておきましょう。

$ gem i rbenv-rehash

これで、ひとまずMacOSXのRuby環境がずいぶんと改善されたと思います。


Chefをインストールしよう

これからの作業がMaxOSXのRuby環境を整えた理由です。

まずは、gemでChefをインストールします。

$ gem i chef --no-ri --no-rdoc

Chefをインストールすると、knifeというChefの便利コマンドもインストールされます。

knifeの設定もしておきましょう。

$ knife configure

実行すると、~/.chef/knife.rbにknifeの設定ファイルが保存されます。

質問事項は全てデフォルトでOKです。


knife-soloをインストールしよう

knife-soloはknifeのプラグインです。

ここでは0.3.0を入れるようにしておきましょう。

$ gem i knife-solo --no-ri --no-rdoc --pre

--preをつけないと0.2.0がインストールされたのですが、以下のような問題に苦しみました。

http://tk0miya.hatenablog.com/entry/2013/04/18/011339



knife-soloでリポジトリを作ってみよう。

現在のフォルダの中にリポジトリを作成してみましょう。

$ knife solo init chef-repo

chef-repoというフォルダが作成されましたか?

中にはいろんなものがありますね。


サードパーティのレシピを使ってみよう。

レシピの作り方なんてとりあえずわからないので、用意されているレシピをダウンロードしてつかってみましょう。

※BerkshelfはChef Developer Kitをインストールすることで既にインストールされています。

以下は元々の記事ですが、この方法でのインストールは不要です。


まずは、Berkshelfというツールをインストールします。

$ gem i berkshelf --no-ri --no-rdoc


先ほど作ったchef-repoフォルダの中にBerksfileを作成します。

$ cd chef-repo

$ vim Berksfile

ダウンロードしてくるレシピを指定します。

どんなレシピがあるかは下記サイトをのぞいてみてください。

https://github.com/opscode-cookbooks

site :opscode

cookbook 'yum'
cookbook 'nginx'

Berksfileを保存したら、レシピをダウンロードしてきましょう。

$ berks install --path cookbooks

berkshelf3になってから、コマンドが変わったようです。

$ berks vendor cookbooks

chef-repoフォルダ内のcookbooksフォルダにレシピがダウンロードされたはずです。


仮想環境へ設定をする前に

久しぶりに仮想環境が登場です。

仮想環境は立ち上がっていますか?

立ち上げ方を忘れちゃった人は、~/vagrantフォルダから下記のコマンドで立ち上がりますよ。

$ vagrant up

前回は下記コマンドで仮想環境にアクセスしたと思います。

$ vagrant ssh

便利になるように設定をしておきましょう。

$ vagrant ssh-config --host centos >> ~/.ssh/config

これで、どのフォルダからでも以下のコマンドで仮想環境にアクセス可能になります。

$ ssh centos

アクセスできることを確認したら、またMaxOSXから設定を行いましょう。


仮想環境へ設定する準備


仮想環境にchefをインストールします

さっき作ったchef-repoフォルダに戻って、下記コマンドを実行しましょう。

$ knife solo prepare centos

これで、仮想環境にchefがインストールされます。

最初に1回だけ実行すればOKです。

成功するとnodesフォルダの中にcentos.jsonというファイルが生成されるはずです。

作成されたcentos.jsonを編集しましょう。

 {

"run_list":[
"yum::epel",
"nginx"
]
}


仮想環境へ設定を反映させる

下記コマンドで、仮想環境に設定が反映されます。

$ knife solo cook centos


Mac OS X側から仮想環境にアクセスしてみよう

192.168.33.10というIPアドレスで仮想環境にアクセスできるんですが、

このままでは、仮想環境がすべてのアクセスを拒否しています。

アクセスを受け付けるように仮想環境の設定を変更します。

#Macのコンソール

$ ssh centos

#以下は仮想環境のコンソール
$ sudo /sbin/iptables -F
$ sudo /etc/init.d/iptables save

この状態でMac OS Xのブラウザからアクセスをしてみましょう。

続く・・・。

と思ったけど、やっぱり続きません!