Vagrant(インストール, ログイン, 共有フォルダ)

Vagrantのインストール、基本的な使い方を解説します。共有フォルダを利用する中でハマりやすいトラブル対応なども取り上げます。

作業環境
OS:Windows8.1
仮想化ソフトウェア:VirtualBoxを利用

Vagrantとは

Vagrantとは、VirtualBoxなどの仮想化ソフトウェア上で仮想マシンを簡単に立ち上げるためのRuby製ツールです。手軽に何度でも同じ構成で仮想マシンを立ち上げる事ができるため、開発環境で利用されます。

インストール

https://www.vagrantup.com/downloads.html にアクセスすると、各OSごとのVagrantをダウンロードできます。

480-tool-vagrant-basic-.png

ダウンロードしたファイルをクリックするとインストールが始まります。

仮想マシンの作成

仮想マシン用にディレクトリを作成

Vagrantでは仮想マシンごとにディレクトリを作成する必要があります。

Vagrantfileを作成

コマンドプロンプトを開き作成したディレクトリ内に移動します。

vagrant init boxイメージ名 とコマンドを実行すると、指定のboxイメージ名が記述された Vagrantfile が作成されます。

boxイメージは、 https://atlas.hashicorp.com/boxes/search で検索することができます。

480-tool-vagrant-basic-2.png

「centos」と検索してみます。

480-tool-vagrant-basic-3.png

今回は bento/centos-6.7 を利用してみます。 bento はプロビジョニングツールを提供しているChef社によってメンテナンスされているプロジェクトです。

下記のようにboxイメージを指定して実行します。

vagrant init bento/centos-6.7

Atlasのサイト(先ほどbento/centos-6.7を見つけたサイト)で公開されているboxイメージであれば上記のように vagrant init の後にboxイメージ名を指定するだけでOKです。 vagrant up を実行時に自動的にboxイメージをダウンロードしてくれます。

480-tool-vagrant-basic-4.png

ディレクトリ内に Vagrantfile が作成されました。

480-tool-vagrant-basic-5.png

仮想マシンの起動

vagrant up コマンドを実行するとboxイメージがダウンロードされ、仮想マシンの作成と起動が実行されます。初回実行時は「boxイメージのダウンロード」と「プロビジョニング」が実行されるため時間がかかります。

プロビジョニングの指定
プロビジョニングは、Vagrantfile内にて「config.vm.provision」メソッドを利用することで指定できます。
SSL関連のエラー
コマンドプロンプトで「vagrant up」コマンドを実行したところ、SSL関連のエラーでboxイメージのダウンロードに失敗しました。そこで、これ以降は「コマンドプロンプト」ではなく「Git Bash」を利用してます。
480-tool-vagrant-basic-7.png

エラー1

下記のようなエラーがでて実行できない場合があります。

An error occurred while downloading the remote file. The error
message, if any, is reproduced below. Please fix this error and try
again.

HTTP server doesn't seem to support byte ranges.

この場合、C:\Users\ユーザ名\.vagrant.d\tmp 配下のファイルを削除してもう一度実行してみてください。

エラー2

作業ディレクトリのパスに日本語が含まれていると Encoding::CompatibilityError というエラーが出る場合があります。

起動状態確認

無事実行できたら vagrant status コマンドを実行して仮想マシンの起動状態を確認します。

480-tool-vagrant-basic-8.png

仮想マシンの停止

vagrant halt コマンドを実行すると、仮想マシンを停止させることができます。

480-tool-vagrant-basic-9.png

仮想マシンにログイン

vagrant ssh コマンドを実行すると仮想マシンにログインできます。

Windowsの場合
「vagrant ssh」は、コマンドプロンプトでは使えません。Windowsの場合、TeraTermやCygwin環境を利用します。ここでは、「Git Bash」を利用してログインしてみます。

vagrant up コマンドで仮想マシンを起動させ vagrant ssh コマンドで仮想マシンにログインします。

480-tool-vagrant-basic-10.png

SSHコマンドでログイン

vagrant ssh ではなく、 sshコマンド でログインしてみます。

まず、秘密鍵を生成します。下記コマンドで生成できます。

vagrant ssh-config

実行結果です。

480-tool-vagrant-basic-_sshconfig.png

IdentityFile に秘密鍵のパスが表示されています。この秘密鍵をsshコマンドを実行する際に指定します。

ssh vagrant@127.0.0.1 -p 2222 -i 秘密鍵のパス

仮想環境の破棄

仮想マシンが必要なくなったら vagrant destroy コマンドで仮想マシンを破棄できます。

480-tool-vagrant-basic-11.png

Vagrantfileの再読み込み

仮想マシンを再起動させることで、Vagrantfileを再読み込みさせることができます。仮想マシンの再起動は、以下のコマンドで実行できます。

vagrant reload

プロビジョニングも再度実行させたい場合、 --provision をつける必要があります。

vagrant reload --provision

Vagantのアップデート

次のようなメッセージが表示された場合、インストールしているVagrantをアップデートします。

This Vagrant environment has specified that it requires the Vagrant
version to satisfy the following version requirements:

  >= 1.8.4

You are running Vagrant 1.8.1, which does not satisfy
these requirements. Please change your Vagrant version or update
the Vagrantfile to allow this Vagrant version. However, be warned
that if the Vagrantfile has specified another version, it probably has
good reason to do so, and changing that may cause the environment to
not function properly.

https://www.vagrantup.com/downloads.html から最新のバージョンをダウンロードして実行することでアップデートできます。

共有フォルダ関連のエラー

ホストマシンとゲストマシンで共有フォルダの設定をした際、下記エラーがでました。

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: No such device

vagrant-vbguest というのをホストマシン上でインストールすると解決できるという情報があります。 vagrant plugin install vagrant-vbguest でインストールします。

480-tool-vagrant-basic-_error1.png 480-tool-vagrant-basic-_error2.png

インストール後、仮想マシンを再起動するとエラーが解消されました。

上記実施後も解決できないときは、下記サイトが参考になるかと思います。
https://qiita.com/wakaba260/items/b5c87b7815b710f303a0

共有フォルダの注意点

共有フォルダ上で生成されたファイルの所有者は、ゲストマシン上では vagrant になります。

ゲストマシンでnginxを利用しており、共有フォルダをWebサーバーのドキュメントルートにしている場合、 nginx の書き込み権限が必要な場合があります。しかし、所有者が vagrant なため書き込めません。

所有者を変更すればいいのですが、vagrantの共有フォルダ上のファイルはchown、chmodを利用して所有者、権限の変更ができません。

対応策として、Vagrantfileで所有者を変更できます。

config.vm.synced_folder "./", "/home/vagrant/Code",
    :owner => "nginx",
    :group => "nginx"

これでVagrantfileで指定していた共有フォルダ配下にできるファイルはnginxになります。

Vagrantfileは修正せずに、nginxやphp-fpmのuserをvagrantにする といった対応でもかまいません。

【エンジニア向け】仕事を見つける方法

転職する

転職エージェントを活用する

転職サイトの場合、自身でサイト上から企業を探す必要があります。 一方「レバテックキャリア」 などの転職エージェントの場合、エージェントが企業を紹介してくれます。エージェントが間に入ることにより、日程調整や、条件交渉などもサポートしてくれます。

転職ドラフトを活用する

転職ドラフト」は、 企業がITエンジニアをドラフトという形で指名するサービスです。年収が最初に提示されるなどのメリットがあります。 ただ、初回登録時にレジュメ作成が必要で、すでにエンジニア経験が豊富にあるエンジニア向けのサービスかと思います。 レジュメ作成が手間ですが、自身のキャリアを見直す機会になり、他の仕事探しにも役立つはずです。

エンジニア転職保証のあるスクールを活用する

ある程度、開発経験のあるかたであれば、独学で必要なスキルを身につけることができるはずです。ただ、別業種からエンジニアに転職したい場合など、1から独学で学ぶのはハードルが高いです。そういった方は、スクールの活用を検討しても良いと思います。 「TechAcademy」は、エンジニア転職保証コースを提供しています。給付金制度の対象講座として認定されているため、金銭面の負担も抑えることができます。

フリーランスとして活動する

レバテックフリーランス」「ITプロパートナーズ」「ギークスジョブ」は、フリーランスエージェントサービスです。 エージェントによって、支払いサイトなど細かい違いはありますが、まずは良い案件を見つけることが重要です。 登録自体は無料なので、複数エージェントに登録して、より多くの案件を紹介してもらうのがおすすめです。

logo
わくわくBank.
技術系の記事を中心に、役に立つと思ったこと、整理したい情報などを掲載しています。