chef
vagrant

VagrantとChef-Soloのセットアップ

More than 3 years have passed since last update.


環境


  1. MacOSX Mavericks

  2. Vagrant最新版(現時点では1.7.1)をインストール済み

  3. Virtual Box最新版をインストール済み

  4. 下記のディレクトリ構成を想定

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を下記のように編集。


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で仮想環境に接続できるように。


~/.ssh/config

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の制作は次。