ラベル CI の投稿を表示しています。 すべての投稿を表示
ラベル CI の投稿を表示しています。 すべての投稿を表示

2014年11月21日金曜日

【Vagrant】Failed to mount folders in Linux guest.


vagrant upしたときにこんなエラーがでることがある。

エラー

Failed to mount folders in Linux guest.

エラー全文

c:\vm\vagrant>vagrant up
Bringing machine 'default' up with 'virtualbox' provider...
==> default: Importing base box 'centos7'...
==> default: Matching MAC address for NAT networking...
==> default: Setting the name of the VM: vagrant_default_1416540764834_66350
==> default: Clearing any previously set network interfaces...
==> default: Preparing network interfaces based on configuration...
    default: Adapter 1: nat
==> default: Forwarding ports...
    default: 22 => 2222 (adapter 1)
==> default: Booting VM...
==> default: Waiting for machine to boot. This may take a few minutes...
    default: SSH address: 127.0.0.1:2222
    default: SSH username: vagrant
    default: SSH auth method: private key
    default: Warning: Connection timeout. Retrying...
    default: Warning: Connection timeout. Retrying...
==> default: Machine booted and ready!
==> default: Checking for guest additions in VM...
==> default: Mounting shared folders...
    default: /vagrant => C:/vm/vagrant
Failed to mount folders in Linux guest. This is usually because
the "vboxsf" file system is not available. Please verify that
the guest additions are properly installed in the guest and
can work properly. The command attempted was:

mount -t vboxsf -o uid=`id -u vagrant`,gid=`getent group vagrant | cut -d: -f3` vagrant /vagrant
mount -t vboxsf -o uid=`id -u vagrant`,gid=`id -g vagrant` vagrant /vagrant

The error output from the last command was:

/sbin/mount.vboxsf: mounting failed with the error: No such device

対応

下記記事を参考に
http://qiita.com/osamu1203/items/10e19c74c912d303ca0b

すでに仮想環境’default’は起動しているようで、
$ vagrant ssh
で起動した仮想マシンへ接続
[vagrant@localhost ~]$ sudo /etc/init.d/vboxadd setup
これがリビルドなのかな?

[vagrant@localhost ~]$ exit
sshを抜けて
Connection to 127.0.0.1 closed.
naichilabmba:vagrant hu$ vagrant halt
==> default: Attempting graceful shutdown of VM...
vagrant haltで仮想マシン停止。もう一度vagrant upで成功した。

2014年11月20日木曜日

【Vagrant】仮想環境構築が超絶簡単になる(らしい)Vagrantを試してみた。

vagrantのロゴ。かっこいい。

はじめに

お久しぶりです。@naichilabです。
最近「けいぞくてきいんてぐれーしょん」ってのに興味を持ったので下記本を買ってみました。
CakePHPで学ぶ継続的インテグレーションCakePHPで学ぶ継続的インテグレーション
渡辺 一宏,吉羽 龍太郎,岸田 健一郎,穴澤 康裕,丸山 弘詩
少しずつ読み進めてたんですが知らん言葉やソフトが出てくる出てくる。

・バージョン管理システム - Git
・デプロイツール - Capistrano
・プロビジョニングツール - Chef
・サーバ仮想化ツール - VirtualBox
・環境構築ツール - Vagrant
・テストツール - PHPUnit
・インスペクションツール - PHP_CodeSniffer
・ドキュメント自動生成ツール - phpDocumentor
・継続的インテグレーションツール - Jenkins
・パッケージ管理ツール - Composer

設定はRubyで書いたり(Ruby触った事ない)仮想環境はUNIXだったり(UNIX触った事ない)と頭パンクしそう。
でもなんとなくVagrantが重要そうだなーと思ったのでさきにそっちで遊んでみました。


参考

ぐぐって見つけた下記本を購入。
Vagrant入門ガイドVagrant入門ガイド
新原雅司
400円!!52ページ!!なんと手頃な。
とても分かりやすかったしオススメ。

Vagrantって?


  • 開発環境を自動で構築するためのツール
  • OSXやWindows、Linuxなど幅広い環境で動く
  • VirtualBoxやVMWareといった仮想化ツールへの環境構築を自動化する
  • ChefやPuppetといったプロビジョニングツールも組み合わせる事で極端な話コマンド1行で環境構築終わり。といったことが可能になる。
っていう夢のようなソフト。らしい。実際まだ良くわかってない。

やってみる

環境

2014/11/19現在
MacBookAir 2013モデル
MacOSX 10.9.4
VirtualBox 4.3.18(最新版)
Vagrant 1.6.5(最新版)

インストール

以下からVirtualBoxをインストール
  https://www.virtualbox.org/wiki/Downloads
以下からVagrantをインストール
  https://www.vagrantup.com/
RubyはVagrantのパッケージに付いてくるらしい。

Vagrantのバージョンの確認

ターミナルで下記を実行。バージョンが出ればOK。
$ vagrant -v
Vagrant 1.6.5

Vagrantのコマンド

Vagrantは
$ vagrant ○○
というコマンドで操作する。
コマンド一覧は
$ vagrant -h
で確認できる。少ないし使ってればすぐに覚えられそう。

Boxファイル

Vagrantでは仮想マシンのベースとなるイメージファイル(Boxファイル)を使う。
やさしい人たちが色んなパターンを用意してくれてるみたい。

http://www.vagrantbox.es/
とりあえずぐぐって見つけたこのサイトからCentOSの一番新しそうなのを使ってみる。
CentOS7.0 x86_64 minimal (VirtualBoxGuestAddtions 4.3.14)ってやつ

Boxファイルの追加

$ vagrant box add [名前] [BOXファイルのURL]
これでvagrantがboxファイルをダウンロードしてくれて付けた名前で記憶してくれる。
こんな感じ
$ vagrant box add centos70 https://f0fff3908f081cb6461b407be80daf97f07ac418.googledrive.com/host/0BwtuV7VyVTSkUG1PM3pCeDJ4dVE/centos7.box
==> box: Adding box 'centos70' (v0) for provider: 
    box: Downloading: https://f0fff3908f081cb6461b407be80daf97f07ac418.googledrive.com/host/0BwtuV7VyVTSkUG1PM3pCeDJ4dVE/centos7.box
==> box: Successfully added box 'centos70' (v0) for 'virtualbox'!

Boxファイルの確認

vagrant box listコマンドで追加されているBOX一覧を確認できる。
$ vagrant box list
centos70             (virtualbox, 0)
ちゃんと出てくる。あら素敵。


基準となるフォルダを決める

適当にフォルダを作る。
適当な場所に"vagrant"ってフォルダを用意した。
ターミナルのカレントフォルダをそこに移動しておく。
naichilabmba:vagrant hu$ 
PC名やユーザー名は適当に読み替えて。

Vagrantfileの作成

VagrantではVagrantfileというファイルに起動する仮想マシンの構成などを記載する。
とりあえずboxだけを指定したシンプルなVagrantfileを生成する。
$ vagrant init [box名]
これでVagrantfileが作られる。
$ vagrant init centos70
A `Vagrantfile` has been placed in this directory. You are now
ready to `vagrant up` your first virtual environment! Please read
the comments in the Vagrantfile as well as documentation on
`vagrantup.com` for more information on using Vagrant.
できたVagrantfileはこんな感じ。(長いrubyファイルなんだけどコメント部分を削除するとこれだけ)
# -*- mode: ruby -*-
# vi: set ft=ruby :

VAGRANTFILE_API_VERSION = "2"

Vagrant.configure(VAGRANTFILE_API_VERSION) do |config|
  config.vm.box = "centos70"
end
boxファイルの名前を指定してるだけですね。

仮想マシンの起動

ではお待ちかね。起動してみます。
$ vagrant up
これだけ。これだけで起動する…はずがエラーした。

エラー対処

別記事にまとめました。
【Vagrant】Failed to mount folders in Linux guest.

これで起動完了。

SSH接続

作成した仮想マシンへのSSH接続するのは
$ vagrant ssh
これだけ。仮想マシン側にsshdが起動している必要があるらしいけどたぶんboxファイルにする前に設定済みなんだろうね。
naichilabmba:vagrant hu$ vagrant ssh
Last login: Wed Nov 19 11:15:42 2014 from 10.0.2.2
[vagrant@localhost ~]$ exit
ログアウト
Connection to 127.0.0.1 closed.
めっちゃ楽。

状態確認

仮想マシンがどういう状態かは
$ vagrant status
で確認可能。
vagrant upした後ならこんな感じ。
$ vagrant status
Current machine states:
default      running (virtualbox)

仮想マシンの停止と破棄

upした仮想マシンを停止したければ
$ vagrant halt
これだけ。またupすれば使える。
もし完全に破棄したければ
$ vagrant destroy
こんな感じ。
破棄してもまたupすればすぐに使えるんだけどね。

まとめ

とりあえずboxの追加とそれを使った仮想マシンの作成・起動・停止・破棄だけやってみた。Vagrantfileさえ用意しておけば数個のコマンドを覚えるだけで仮想マシンの使い捨てができる。すげー楽。ほんと楽。

Vagrantfileを編集すれば複数の仮想マシンを一気に起動したり(webサーバ、dbサーバ、開発サーバとか)、起動後の更新を自動化したり、色々できるらしい。

ぼっちCI(継続的インテグレーション)を回せるように少しずつ覚えよう。

とりあえず今日はここまで。
Related Posts Plugin for WordPress, Blogger...