環境
- MacOSX Mavericks
- Vagrant最新版(現時点では1.7.1)をインストール済み
- Virtual Box最新版をインストール済み
- 下記のディレクトリ構成を想定
project/
chef/
vagrant/
www/
下準備
Rubyのセットアップ
rbenvでインストールしておく。
Berkshelfを使いたい場合はRubyバージョン2.0.0以上でないとGemのバージョンの関係から面倒。
Homebrewのインストールとrbenvのインストール Mac編
Bundlerのセットアップ
Chef-SoloだけではなくGemの管理をするために必須。
gem install bundler
Chef/Knife-soloのセットアップ
Bundlerを使ってインストールを行う。
Gemfileの作成
bundle init
Gemfileの編集
source "https://rubygems.org"
gem "chef"
gem "knife-solo"
インストール
bundle install --path vendor/bundle
--path引数について
--path
引数によりカレントディレクトリの vendor/bundle
ディレクトリにGemをインストールする。
Chefリポジトリのセットアップ
Chefのリポジトリを作成。
project/chef
をリポジトリとして指定。
bundle exec knife solo init ./chef
Vagrantのとりあえずの設定
Vagrantファイルを生成。
ここからは project/vagrant
ディレクトリで実行。
vagrant init
生成されたVagrantfileを下記のように編集。
# -*- mode: ruby -*-
# vi: set ft=ruby :
Vagrant.configure(2) do |config|
config.ssh.insert_key = false
config.vm.box = "chef/centos-6.5"
config.vm.network :private_network, ip: "192.168.33.10"
config.vm.synced_folder "./www", "/var/www"
end
Insecure Private Keyの有効化
Vagrant 1.7.0以上のみ。
これをしないと仮想マシン毎にPrivate Keyが生成されてしまうため、後述するSSHの設定が共通化できない。
config.ssh.insert_key = false
利用するboxの設定
とりあえずCentOS 6.5。
BOXは事前に追加しておくこと。
config.vm.box = "chef/centos-6.5"
ネットワーク
ホストマシンからのみアクセスを許可する。
config.vm.network :private_network, ip: "192.168.33.10"
ホストとの共有ディレクトリ設定
config.vm.synced_folder "./www", "/var/www"
ホスト側のディレクトリ project/vagrant/www
は最初に作成しておかないとエラーが発生。
ゲスト側のディレクトリは再帰的に生成される模様。
Vagrant起動
とりあえず仮想環境を起動。
vagrant up
SSHの設定
vagrant ssh
ではなく通常のsshで仮想環境に接続できるように。
Host 192.168.33.*
User vagrant
IdentityFile ~/.vagrant.d/insecure_private_key
IdentitiesOnly yes
Vagrantfileに config.ssh.insert_key = false
が設定されていないと、IdentityFileが仮想マシン毎に異なるので、上記だけでは接続出来なくなるので注意。
SSHで接続確認
ssh 192.168.33.10
接続かくにん!よかった
Knife-Soloの実行
project/chef
ディレクトリに移動。
bundle exec knife solo prepare 192.168.33.10
これで仮想環境にChef-soloがインストールされ、project/chef/nodes/192.168.33.10.json
が自動生成される。
CookbookやRecipeの制作は次。