shnagaiの日記

主にエンジニアリング関連のトピックについて雑多に書いています

Vagrant Chef 環境準備

chef soloのrecipeのテスト環境として、Vagrantを使うのがいいらしいと聞いたので、CentOS6.4の上に、Vagrantをインストールし、Vagrant上のマシンにローカルからIP指定でssh接続するまでの証跡を残しておこうと思う。

通常、 vagrant sshというコマンドを打てばVagrant上のマシンにはつなげるか、後々にknife-solo+chef soloでのテストを行う為、IPベースのsshでつなげるところまでやる。

今回の作業は、vagrantであげたインスタンスssh IPアドレスって形ログイン出来る事をゴールとします。

 

プラットホーム:Cent0S6.4

 

作業するにあたり、下記を非常に参考させていただきました。

■参照
参考URL:http://hirofukami.com/2013/10/11/install-chef-solve-way/
書籍:入門chefsolo

 

■概要

・VirutalBoxインストール

Vagrant+Saharaインストール

Vagrantでイメージの立ち上げからssh接続まで。

 

Web上では、すんなり出来たという情報が結構あったがそこそこハマったので同じエラーで困ってる人の役には立つかもしれません。

 

・VirutalBoxインストール
..VirtualBoxの準備
$ cd /etc/yum.repos.d/
$ wget http://download.virtualbox.org/virtualbox/rpm/rhel/virtualbox.repo
$ sudo yum install -y VirtualBox-4.2

Vagrant+Saharaインストール

$ sudo wget http://files.vagrantup.com/packages/a40522f5fabccb9ddabad03d836e120ff5d14093/vagrant_1.3.5_x86_64.rpm
$ sudo rpm -i vagrant_1.3.5_x86_64.rpm
$ vagrant -v
Vagrant 1.3.5
$ vagrant plugin install sahara
$ vagrant -h
Usage: vagrant [-v] [-h] command [<args>]

    -v, --version                    Print the version and exit.
    -h, --help                       Print this help.

Available subcommands:
     box
     destroy
     halt
     help
     init
     package
     plugin
     provision
     reload
     resume
     sandbox #これが追加されていればOK
     ssh
     ssh-config
     status
     suspend
     up

 

Vagrantでイメージの立ち上げからssh接続まで


#vagrantbox vagrant用のVirtualboximageをダウンロードする
$ vagrant box add cent64 http://developer.nrel.gov/downloads/vagrant-boxes/CentOS-6.4-x86_64-v20130731.box

#任意のディレクトリを作成
$sudo mkdir /opt/vagrantbox/dev1
$cd /opt/vagrantbox/dev1
#vagrant初期化
$ sudo vagrant init
#networkの構成をいじる
$ vim Vagrantfile
  config.vm.box = "cent64"
  #config.vm.network :hostonly, "192.168.50.12" #これは古いバージョンのvagrantの指定方法らしい。。。
  config.vm.network :private_network, ip: "192.168.50.12"

#こけたー
$ vagrant up
Bringing machine 'default' up with 'virtualbox' provider...
[default] Importing base box 'cent64'...
Progress: 90%/opt/vagrant/embedded/gems/gems/vagrant-1.3.5/lib/vagrant/machine.rb:204:in`initialize': Permission denied -
/opt/vagrantbox/dev1/.vagrant/machines/default/virtualbox/id(Errno::EACCES)
        from /opt/vagrant/embedded/gems/gems/vagrant-1.3.5/lib/vagrant/machine.rb:204:in`open'
        from /opt/vagrant/embedded/gems/gems/vagrant-1.3.5/lib/vagrant/machine.rb:204:in`open'
        from /opt/vagrant/embedded/gems/gems/vagrant-1.3.5/lib/vagrant/machine.rb:204:in`id='
        from /opt/vagrant/embedded/gems/gems/vagrant-1.3.5/plugins/providers/virtualbox/action/import.rb:15:in`call'
        from /opt/vagrant/embedded/gems/gems/vagrant-1.3.5/lib/vagrant/action/warden.rb:34:in`call'
        from /opt/vagrant/embedded/gems/gems/vagrant-1.3.5/plugins/providers/virtualbox/action/customize.rb:38:in`call'
        from /opt/vagrant/embedded/gems/gems/vagrant-1.3.5/lib/vagrant/action/warden.rb:34:in`call'
        from /opt/vagrant/embedded/gems/gems/vagrant-1.3.5/plugins/providers/virtualbox/action/check_accessible.rb:18:in`call'
        from /opt/vagrant/embedded/gems/gems/vagrant-1.3.5/lib/vagrant/action/warden.rb:34:in`call'
        from /opt/vagrant/embedded/gems/gems/vagrant-1.3.5/lib/vagrant/action/runner.rb:61:in`block inrun'
        from /opt/vagrant/embedded/gems/gems/vagrant-1.3.5/lib/vagrant/util/busy.rb:19:in`busy'
        from /opt/vagrant/embedded/gems/gems/vagrant-1.3.5/lib/vagrant/action/runner.rb:61:in`run'
        from /opt/vagrant/embedded/gems/gems/vagrant-1.3.5/lib/vagrant/action/builtin/call.rb:51:in`call'
        from /opt/vagrant/embedded/gems/gems/vagrant-1.3.5/lib/vagrant/action/warden.rb:34:in`call'
        from /opt/vagrant/embedded/gems/gems/vagrant-1.3.5/lib/vagrant/action/builtin/config_validate.rb:25:in`call'
        from /opt/vagrant/embedded/gems/gems/vagrant-1.3.5/lib/vagrant/action/warden.rb:34:in`call'
        from /opt/vagrant/embedded/gems/gems/vagrant-1.3.5/lib/vagrant/action/builtin/call.rb:57:in`call'
        from /opt/vagrant/embedded/gems/gems/vagrant-1.3.5/lib/vagrant/action/warden.rb:34:in`call'
        from /opt/vagrant/embedded/gems/gems/vagrant-1.3.5/plugins/providers/virtualbox/action/check_virtualbox.rb:17:in`call'
        from /opt/vagrant/embedded/gems/gems/vagrant-1.3.5/lib/vagrant/action/warden.rb:34:in`call'
        from /opt/vagrant/embedded/gems/gems/vagrant-1.3.5/lib/vagrant/action/builder.rb:116:in`call'
        from /opt/vagrant/embedded/gems/gems/vagrant-1.3.5/lib/vagrant/action/runner.rb:61:in`block in run'
        from /opt/vagrant/embedded/gems/gems/vagrant-1.3.5/lib/vagrant/util/busy.rb:19:in`busy'
        from /opt/vagrant/embedded/gems/gems/vagrant-1.3.5/lib/vagrant/action/runner.rb:61:in`run'
        from /opt/vagrant/embedded/gems/gems/vagrant-1.3.5/lib/vagrant/machine.rb:147:in`action'
        from /opt/vagrant/embedded/gems/gems/vagrant-1.3.5/lib/vagrant/batch_action.rb:63:in`block (2 levels) in run'

#エラーが出ているディレクトリのパーミッションを確認
$ find /opt/vagrantbox/dev1/.vagrant/machines/ -exec ls -al {} \;
#下記ディレクトリがrootのパーミッションになっていたのでファイル作成が出来ずパーミッションでこけていたよう。。
#vagrant initをsudoで行った事で、rootのパーミッションがついてしまったのかもしれない。。
drwxr-xr-x. 2 UserName UserName 4096  2月  5 21:48 2014 virtualbox
drwxr-xr-x. 3 UserName UserName 4096  2月  5 21:17 2014 default

#下記ディレクトリのパーミッションを自分に変える事でOK
$ sudo chown UserName:UserName /opt/vagrantbox/dev1/.vagrant/machines/default
$ sudo chown UserName:UserName
/opt/vagrantbox/dev1/.vagrant/machines/default/virtualbox/

#再度起動 出来たー
$ vagrant up
Bringing machine 'default' up with 'virtualbox' provider...
[default] Importing base box 'cent64'...
[default] Matching MAC address for NAT networking...
[default] Setting the name of the VM...
[default] Clearing any previously set forwarded ports...
[default] Creating shared folders metadata...
[default] Clearing any previously set network interfaces...
[default] Preparing network interfaces based on configuration...
[default] Forwarding ports...
[default] -- 22 => 2222 (adapter 1)
[default] Booting VM...
[default] Waiting for machine to boot. This may take a few minutes...
[default] Machine booted and ready!
[default] Configuring and enabling network interfaces...
[default] Mounting shared folders...
[default] -- /vagrant

#入れたー
$ vagrant ssh
Welcome to your Vagrant-built virtual machine.
$ pwd
/home/vagrant

#ローカルからIP指定のssh接続をする為の設定 knife-soloでchef-soloをつつく試験環境としたいので、
#ssh 192.168.50.12でつつけるようにする
#ローカル環境に戻り実行
$ vim ~/.ssh/config

#中身
# ~/.ssh/config
 Host 192.168.50.*
   IdentityFile ~/.vagrant.d/insecure_private_key
   User vagrant

#さぁ、つなげるか。。またエラー。。
$ ssh 192.168.50.12
Bad owner or permissions on /home/UserName/.ssh/config

#/home/UserName/.ssh/config このファイルのパーミッションが644であるのが原因なのでhomeユーザのみにする
$ chmod 600 /home/UserName/.ssh/config

#再チャレンジ 行けたー
$ ssh 192.168.50.12
Last login: Wed Feb  5 13:10:31 2014 from 192.168.50.1
Welcome to your Vagrant-built virtual machine.

参考までに今回実行したruby環境
$ which ruby
/usr/bin/ruby
$ gem -v
1.3.7
$ /opt/chef/embedded/bin/ruby -v
ruby 1.9.3p448 (2013-06-27 revision 41675) [x86_64-linux]
$ /opt/chef/embedded/bin/gem -v
1.8.24