LoginSignup
42
44

More than 5 years have passed since last update.

Berkshelfベースにvagrant, chef(knife-solo)環境を簡単に構築する方法

Last updated at Posted at 2013-10-15

前提

必要なファイルをインストール

今回の環境は以下のとおりです。(MacOSX)
VirtualBox 4.2.18 r88780
Vagrant 1.3.4
Ruby 2.0.0p247
Bundler 1.3.5 (Ruby Gems)

初期ディレクトリ

/tmp以下を今回の作業環境とする。以下のディレクトリ構成を作る。

/tmp
└── vagrant-test
    └── chef-repo

BundlerによるBerkshelfを使ってVagrantのセットアップ

bundleのinitまで
% cd /tmp/vagrant-test/chef-repo
% bundle init
bundle_initで生成されたGemfileを編集
% vi Gemfile
source "https://rubygems.org"
gem "knife-solo", "~> 0.3.0"
gem "foodcritic"
gem "berkshelf"
gem "serverspec"
gem "awesome_print"
bundleを実行
% bundle install --path vendor/bundle --binstubs vendor/bin
berkshelfのイニシャライズ(途中でGemfileのコンフリクトでどうするか求められるが、「n」でスキップして進める)
% bundle exec berks init
      create  Berksfile
      create  Thorfile
      create  .gitignore
         run  git init from "."
    conflict  Gemfile
Overwrite /private/tmp/vagrant-test/chef-repo/Gemfile? (enter "h" for help) [Ynaqdh] n
          skip  Gemfile
      create  Vagrantfile
Successfully initialized
berk_initで生成された不要なファイルを削除
% rm Thorfile  <= とりあえずthorは使うことがないので削除
「Vagrantfile」は以下のとおりにする。(Centosのバージョンなどは適宜合わせて下さい)
% vi Vagrantfile
# -*- mode: ruby -*-
# vi: set ft=ruby :

Vagrant.configure("2") do |config|
  config.vm.hostname = "chef-repo-berkshelf"
  config.vm.box = "centos6.5-x86_64-minimal_20131205"
  config.vm.box_url = "https://github.com/2creatives/vagrant-centos/releases/download/v6.5.1/centos65-x86_64-20131205.box"
  config.vm.network :private_network, ip: "192.168.33.100"
  config.vm.boot_timeout = 120
end

その他、Vagrantfileの設定でデフォルトで有効になっている箇所はvagrant-berkshelfプラグインの設定やvagrantのprovisioningの設定なので、ここでは使用しないため無効化している。適宜必要があれば有効化して下さい。

vagrant起動
vagrant upすると「config.vm.box」に指定したBoxをダウンロードしてVMを起動してくれる
% vagrant up
…
simply run `vagrant up`.   <= 起動完了
vagrant接続確認
vagrantのボックスが追加されていることを確認
% vagrant box list
Berkshelf-CentOS-6.4-x86_64-minimal (virtualbox)

VMのステータスを確認
% vagrant status
Current machine states:

default                   running (virtualbox)

vagrantコマンドでSSH接続
% vagrant ssh

ssh接続用のコンフィグファイルを作成して、sshコマンドでログインしてみる
% vagrant ssh-config --host myapp-test  >> ./myapp_sshconfig
% ssh -F ./myapp_sshconfig myapp-test

以上、SSHコマンドでの接続確認ができれば、Berkshelf init から Vagrantの設定まで完了です。


Chef(knife-solo)のセットアップ

先ほど立ち上げたvagrantのVMをホストにknife-soloのセットアップ
% cd /tmp/vagrant-test/chef-repo/

必要があれば実行する( knife-soloの共通設定「~/.chef/knife.rb」 を作るためのコマンド。すでにファイルがある場合はこの手順はスキップする)
% bundle exec knife solo conifigure

ディレクトリ構成を初期化
% bundle exec knife solo init .

VMホストにchefの設定を初期化する
% bundle exec knife solo prepare -F ./myapp_sshconfig myapp-test
berkshelfでサードパーティのyumクックブックを定義する
% vi Berksfile
site :opscode
cookbook "yum"

サードパーティのクックブックをインストール
% bundle exec berks install --path cookbooks

yum クックブックがダウンロードできていることを確認
% ls -ls ./cookbooks/

以上でknife-soloのセットアップ完了


knife-soloでクックブックを実行する

ここでは先ほどberkshelfでインストールしたyumのサードパーティクックブックの中のepelを入れようと思います。

jsonファイルにyum
% cd /tmp/vagrant-test/chef-repo/
% vi ./node/myapp-test.json
{"run_list":[
    "recipe[yum::epel]"
  ]
}
knife_soloを実行する
% bundle exec knife solo cook -F ./myapp_sshconfig myapp-test 

以上でepelのyumリポジトリがVMのホストにインストールされていると思います。
残りはberkshelfでその他サードパーティのクックブックを入れたり、site-cookbooks以下に独自のクックブックを作ったりしてよしなにvagrantのVMを使い倒せます!

42
44
3

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
42
44