Skip to content

Vagrant 起動時の共有フォルダ周りで Protocol error

Vagrant 起動時の共有フォルダ周りで Protocol error published on Vagrant 起動時の共有フォルダ周りで Protocol error へのコメントはまだありません

症状

vagrant up で起動時に、共有フォルダを設定するところで、以下のようなエラーとなる。

==> default: Mounting shared folders...
default: /vagrant => /Users/kazu/Documents/workspace/foo
Vagrant was unable to mount VirtualBox shared folders. This is usually
because the filesystem "vboxsf" is not available. This filesystem is
made available via the VirtualBox Guest Additions and kernel module.
Please verify that these guest additions are properly installed in the
guest. This is not a bug in Vagrant and is usually caused by a faulty
Vagrant box. For context, the command attempted was:

mount -t vboxsf -o uid=1000,gid=1000 vagrant /vagrant

The error output from the command was:

/sbin/mount.vboxsf: mounting failed with the error: Protocol error

環境

  • Host: Mac
  • Guest: Linux (Ubuntu 14.4)
  • Vagrant 2.2.2

原因と解決方法

エラーメッセージでググると、色々な原因でこのエラーが発生しうるが、自分の場合、`/home/vagrant` 以下に `vagrant` という名前で `/vagrant` へのシンボリックエラーがあったのが原因。

vagrant@vagrant-ubuntu-trusty-64:~$ ls -l /home/vagrant/vagrant
lrwxrwxrwx 1 vagrant vagrant 8 Dec 28 15:18 /home/vagrant/vagrant -> /vagrant

このシンボリックリンクを削除して `vagrant reload` で問題は解消した。

Vagrant のこの issue が参考になった。

このエラーがでるその他の可能性

  • VirtualBox Guest Addition が正しくインストールされていない、壊れている
  • 共有フォルダの設定が間違っている
  • などなど

Vagrant + Ansible で簡単に開発環境を provision する

Vagrant + Ansible で簡単に開発環境を provision する published on Vagrant + Ansible で簡単に開発環境を provision する へのコメントはまだありません

開発環境構築自動化の動機

ちっちゃなwebシステムを受託でやることもちょこちょこあるんだけど、以下のような理由から、開発環境の自動化をすることにした。

  • 使うフレームワークは大体同じ(CakePHP, Ruby on Rails, Play! framework のいずれか)なのに、毎回同じような環境構築をやるのも面倒くさい
  • 経験の浅いメンバーは、環境構築で詰まりがちなので、その辺は飛ばしていきなり実装に入れるようにしたい

使う技術

最近、メインでやっているプロジェクトで Ansible を使ってデプロイとかをするようにして、ある程度慣れてきたので、今回は Ansible を使うことにした。

開発環境用の仮想環境(VM)作成は、みんな大好き vagrant を使う。

Continue reading Vagrant + Ansible で簡単に開発環境を provision する

Vagrant + Chef Solo + Berkshelfで開発環境作成

Vagrant + Chef Solo + Berkshelfで開発環境作成 published on Vagrant + Chef Solo + Berkshelfで開発環境作成 へのコメントはまだありません

Vagrant + Chef (Solo)って流行ってるんで、使ってみることにしたよ。

概要

やりたいこと

まずは今回目指すことを書いておく。

とあるWeb系のシステムの開発環境を、数名の開発者で共有したい。具体的には、VirtualBox上のVMにCentOS、JDK、nginx, Play! framework、PostgreSQLとかを自動でインストールして環境を作りたい。

Chef Serverは使わず、ChefのレシピはGitHub上に登録する。コミュニティが作成したcookbookも使えるものは使う。

あと、knife-soloを使用。伊藤直也さんの入門Chef Solo – Infrastructure as Codeで紹介されていて初めて知ったんだけど、Chef Soloを使う場合には、knife soloを使うと色々便利。

本記事で扱わないこと

  • Chefのレシピの書き方。これはサイトなり書籍で色々情報があるので、わざわざ書く必要はないと判断。
  • Vagrantの使い方。理由は上に同じ。

基本情報

知ってると思うけど簡単に説明。

Vagrant → VirtualBoxとかVMware上のVMを簡単に作れるツール。

Chef → 構成管理ツール、みたいなもん。事前に定義した設定ファイルに従って、サーバーの環境を構築してくれる。

上の2つに比べると、Berkshelf は比較的知名度が低いかもしれない。という自分も、今回はじめて知ったんだけど・・・

Berkshelf が何をするものかというと、Chefのcookbookを管理してくれるもの。まぁそれだけだと分かりづらいと思うので、追々実例を見ながら説明、と。

環境情報

MacBook Pro上で作業してます。

  • Vagrant 1.6.2
  • VirtualBox 4.3.12
  • Chef と Berkshelf は Chef DK (Chef Development Kit)を使って入れた。バージョンはChef 11.14.0.alpha.1とBerkshelf 3.0
  • knife-solo 0.4.2
  • VMではCentOSを動かす。

世の中のBerkshelf関連の情報は2.0以前のものが多いみたいだけど、Berkshelf 3.0だといろいろ変わっている事が多いので注意。移行ガイドみたいなのはこちら

Continue reading Vagrant + Chef Solo + Berkshelfで開発環境作成