316
392

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

VagrantコマンドとVagrantfileの設定メモ

Last updated at Posted at 2015-03-05

Vagrant のコマンドと Vagrantfile の設定をメモしておきます。

環境

Vagrant の利用には VirtualBox が必要です。ボクは Mac+VirtualBox+Vagrant で実行しています。

ホストは Mac を使用しています。

よく使う言葉

Vagrant を使っていてよく使う単語です。

単語 説明
ホストOS SSH で接続する側の OS。ボクの場合 Mac。
ゲストOS 接続される側の OS。CentOS や Ubuntu など。

Vagrant の起動や停止については、実際には VirtualBox 上で VM が起動したり停止したりしています。

Vagrant を init

vagrant init で Vagrantfileを作成します。

Vagranfileを作成します
vagrant init

vagrant init をしたディレクトリに Vagrantfile という設定ファイルが作成されます。そして、vagrant upなどのコマンドが使えるようになります。

Vagrantを起動

Vagrantfile が作成されたディレクトリで、vagrant up コマンドを実行すると Vagrant が起動します。

Vagrantを起動
vagrant up

Vagrant が起動というのは実際には VirtualBox の VM が起動しています。Vagrant を起動した後に、VirtualBox.app を起動してみてください。

VMの状態を確認

Vagrant を起動したら、Vagrant が起動しているか vagrant status を使ってVMの状態を確認してみましょう。

VMの状態を確認
vagrant status

起動している場合

VMが起動している状態
default                   running (virtualbox)

停止している場合

VMが停止している状態
default                   poweroff (virtualbox)

Vagrant につながらない場合などは、まず vagrant status で状態を確認すると良いです。

Vagrantを停止

haltで停止できます。

Vagrantを停止
vagrant halt

Vagrantを再起動

Vagrantを再起動
vagrant reload

Vagrantへsshログイン

Vagrantへログイン
vagrant ssh

もしパスワードを聞かれる場合は、vagrantと入力します。

Vagrantのユーザーについて

OS 内の vagrant ユーザーのパスワードは vagrant です。
つまり、su コマンドで root になる場合にもパスワードを求められるので上記を利用します。

Vagrantのboxを追加

boxの追加方法
vagrant box add boxの名前 boxのパス

例えばcentos-5.6というboxを追加する場合

CentOSのbox追加例
vagrant box add centos-5.6 http://dl.dropbox.com/u/9227672/centos-5.6-x86_64-netinstall-4.1.6.box

Vagrantのbox一覧を確認

Vagrantのbox一覧を確認するコマンドです。

box一覧の確認
vagrant box list

centos64                       (virtualbox, 0)
centos66                       (virtualbox, 0)
laravel/homestead              (virtualbox, 0.2.2)
miya0001/vccw                  (virtualbox, 1.9.5)

boxが一覧で表示されます。

Vagrantのboxを書き出し

既に存在するboxを書き出す場合です。boxを書き出す前にvagrant haltでvagrantを停止しておきます。

boxの書き出し
vagrant package

==> default: Clearing any previously set forwarded ports...
==> default: Exporting VM...

略

package.boxという名前でboxが書き出されます。
出力されたpackage.boxを利用すれば、dockerやchefなどを使用しなくてもほぼ同様の体験を実現できます。オススメです。

Vagrantのboxを削除

boxを削除
vagrant box remove box名

特定バージョンのboxを削除

box の名前が同じだが、box のバージョンを指定した削除方法です。

vagrant box remove box名 --box-version 1.9.5

--box-versionの後ろにバージョン番号を指定します。

Vagrant の box を update

box を updateする場合はbox updateを実行します。

boxのupdate
vagrant box update

Vagrant の box を物理的に削除したい

box は~/.vagrant.d/boxes/ディレクトリに配置されています。

アクティブなVMを確認

アクティブな Vagrant 環境を確認するコマンドです。

vagrant global-status

アクティブなVagrantを停止

vagrant global-status で表示された Vagrant を destroy したいときに実行します。

destroy
vagrant destroy VagrantのID

Vagrant のバージョンを確認

Vagrant のバージョンを確認します。

バージョンを確認
vagrant -v

Vagrant の ssh-config の設定

Vagrant に ssh で接続できない場合の調査などに使えます。

ssh設定の確認
vagrant ssh-config
Host default
  HostName 127.0.0.1
  User vagrant
  Port 2222
  UserKnownHostsFile /dev/null
  StrictHostKeyChecking no
  PasswordAuthentication no
  IdentityFile /Users/pugiemonn/Documents/workspace/pugiemonn.com/.vagrant/machines/default/virtualbox/private_key
  IdentitiesOnly yes
  LogLevel FATAL

Vagrantfileの設定

boxの設定

boxの設定
config.vm.box = "box名"

ネットワークの設定

ゲストマシンのネットワーク設定にはconfig.vm.networkを使用します。

networkの設定
config.vm.network "private_network", ip: "192.168.33.10"

ネットワークを少しかじるとわかるのですが、ホスト側に存在する ip が被った状態で複数の VagrantBox を立ち上げることはできません。ある box を ip アドレス192.168.33.10で立ち上げいている場合、新たに VagrantBox を立ち上げるには、192.168.33.10以外のipを指定する必要があります。

auto_config̶̶設定

Vagrant は自動でネットワークを設定してくれます。config.vm.networkauto_configが true になっているからです。Vagrant が勝手に設定してくれるネットワーク設定で都合が悪い場合はauto_config の値を変えてみると解消するかもしれません。

config.vm.network "private_network", ip: "192.168.33.10", auto_config:false

auto_config:falseをつけた例です。

synced_folder でフォルダの同期設定

synced_folder を使用すれば、Mac側でコードを書いて、Vagrant 経由で動作検証などのフローが簡単に構築できます。

ホスト PC と Vagrant のディレクトリを同期するには、synced_folder を指定します。

synced_folderの基本
config.vm.synced_folder "ホストPC側のパス", "Vagrant側のパス"

ホスト側の workspace ディレクトリと、ゲスト側・Vagrant側の/var/www/htmlを同期する場合の例です。

synced_folderの基本
config.vm.synced_folder "/Users/pugiemonn/Documents/workspace", "/var/www/html"

ホスト側のパスは"~/Documents/workspace"などと書くこともできます。VagrantfileをGitリポジトリに入れてしまう場合は、"./"のようにしてしまうと作業をシェアする際に、作業環境ごとにパスを書き換える必要がないので楽になります。

nfs で synced_folder を高速化

nfstrueにすると vagrant upが早くなります。ただし Mac 側の root パスワード入力が必要です。

参考

316
392
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
316
392

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?