文系エンジニア大学生の技術ブログ

主にエンジニア向けにITやプログラミングなどの技術系と大学生向けに休学、留学、海外生活、トビタテ留学、長期インターンに関する記事を書いています。

vagrantの環境を複製させる方法

<

f:id:daikiyano:20181023193337p:plain

今回は、vagrantの環境を複製させる方法についてご紹介します。

vagrantはローカルに本番同様に環境を構築することが出来ます。 例えば、プログラミング初心者でも、サーバーを借りずともPC内で仮想サーバーを作ることにより開発環境を構築することが出来ます。

ドットインストールでもvagrantを使い、開発環境を構築する手順を紹介する動画がありますので、良かったら視聴してみてください。 前回、書いた記事でもドットインストール vagrantの動画について紹介しています。

www.for-engineer.life

今回、試したかったこと

今回、試したかったことはvagrantフォルダを複製させ、新しいディレクトリでvagrant upすることです。 同じvagrant fileだと新しいブランチを切っても別ブランチのデータベース情報が反映してしまうため、vagrant環境を複製する必要が出てきました。

複製を試した結果表示されたエラーについて

今回、こちら以下のファイルが含まれたvagrantフォルダを複製させ、複製したものをvagrant2フォルダとして別のディレクトリに置きました。 f:id:daikiyano:20181023191127p:plain

$ cd vagrant2
$ vagrant up
Bringing machine 'default' up with 'virtualbox' provider...
==> default: This machine used to live in /Users/vagrant but it's now at /Users/vagrant/.
==> default: Depending on your current provider you may need to change the name of
==> default: the machine to run it as a different machine.
==> default: Clearing any previously set forwarded ports...
==> default: Clearing any previously set network interfaces...
==> default: Preparing network interfaces based on configuration...
    default: Adapter 1: nat
    default: Adapter 2: hostonly
==> default: Forwarding ports...
    default: 22 (guest) => 2222 (host) (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: Authentication failure. Retrying...
    default: Warning: Authentication failure. Retrying...
    default: Warning: Authentication failure. Retrying...
Timed out while waiting for the machine to boot. This means that
Vagrant was unable to communicate with the guest machine within
the configured ("config.vm.boot_timeout" value) time period.

If you look above, you should be able to see the error(s) that
Vagrant had when attempting to connect to the machine. These errors
are usually good hints as to what may be wrong.

If you're using a custom box, make sure that networking is properly
working and you're able to connect to the machine. It is a common
problem that networking isn't setup properly in these boxes.
Verify that authentication configurations are also setup properly,
as well.

If the box appears to be booting properly, you may want to increase
the timeout ("config.vm.boot_timeout") value.

警告が出てしまい、vagrant upに失敗しました。 原因は、新しく作ったvagrant2のディレクトリに移動しvagrant upをしたが、元々存在しているvagrantフォルダが反応し、二つ同時にvagrant upしてしまっていること。 以下の部分がそうですね。

==> default: This machine used to live in /Users/vagrant but it's now at /Users/vagrant/.
==> default: Depending on your current provider you may need to change the name of
==> default: the machine to run it as a different machine.

解決策

vagrant fileの中にconfig.vm.defineを記載します。 今回の名前をtestとします。

VMboxに名前を定義してあげることにより他の複製したボックスと区別することが可能になります。 ちなみにデフォルトの名前はdefaultです笑

Vagrant.configure("2") do |config|
  config.vm.define "test"

再度、vagrant upをするとうまく起動します。

vagrant global-statusで確認してみます。

$vagrant global-status
id       name    provider   state    directory                                        
--------------------------------------------------------------------------------------
        
85b66dd  default virtualbox poweroff /Users/vagrant  
b25e11d  test    virtualbox running  /Users/vagrant2

名前がdefaultからtestになり、vagrant2のみvagrant upに成功しています。

以上です。 こんな感じで毎日エラーな日々を送っています。。。