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を作成します。
vagrant init
vagrant init
をしたディレクトリに Vagrantfile という設定ファイルが作成されます。そして、vagrant up
などのコマンドが使えるようになります。
Vagrantを起動
Vagrantfile が作成されたディレクトリで、vagrant up
コマンドを実行すると Vagrant が起動します。
vagrant up
Vagrant が起動というのは実際には VirtualBox の VM が起動しています。Vagrant を起動した後に、VirtualBox.app を起動してみてください。
VMの状態を確認
Vagrant を起動したら、Vagrant が起動しているか vagrant status
を使ってVMの状態を確認してみましょう。
vagrant status
起動している場合
default running (virtualbox)
停止している場合
default poweroff (virtualbox)
Vagrant につながらない場合などは、まず vagrant status
で状態を確認すると良いです。
Vagrantを停止
haltで停止できます。
vagrant halt
Vagrantを再起動
vagrant reload
Vagrantへsshログイン
vagrant ssh
もしパスワードを聞かれる場合は、vagrant
と入力します。
Vagrantのユーザーについて
OS 内の vagrant ユーザーのパスワードは vagrant です。
つまり、su
コマンドで root になる場合にもパスワードを求められるので上記を利用します。
Vagrantのboxを追加
vagrant box add boxの名前 boxのパス
例えばcentos-5.6という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一覧を確認するコマンドです。
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を停止しておきます。
vagrant package
==> default: Clearing any previously set forwarded ports...
==> default: Exporting VM...
略
package.boxという名前でboxが書き出されます。
出力されたpackage.boxを利用すれば、dockerやchefなどを使用しなくてもほぼ同様の体験を実現できます。オススメです。
Vagrantの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
を実行します。
vagrant box update
Vagrant の box を物理的に削除したい
box は~/.vagrant.d/boxes/
ディレクトリに配置されています。
アクティブなVMを確認
アクティブな Vagrant 環境を確認するコマンドです。
vagrant global-status
アクティブなVagrantを停止
vagrant global-status で表示された Vagrant を destroy したいときに実行します。
vagrant destroy VagrantのID
Vagrant のバージョンを確認
Vagrant のバージョンを確認します。
vagrant -v
Vagrant の ssh-config の設定
Vagrant に 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の設定
config.vm.box = "box名"
ネットワークの設定
ゲストマシンのネットワーク設定にはconfig.vm.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.network
のauto_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 を指定します。
config.vm.synced_folder "ホストPC側のパス", "Vagrant側のパス"
ホスト側の workspace ディレクトリと、ゲスト側・Vagrant側の/var/www/htmlを同期する場合の例です。
config.vm.synced_folder "/Users/pugiemonn/Documents/workspace", "/var/www/html"
ホスト側のパスは"~/Documents/workspace"
などと書くこともできます。VagrantfileをGitリポジトリに入れてしまう場合は、"./"
のようにしてしまうと作業をシェアする際に、作業環境ごとにパスを書き換える必要がないので楽になります。
nfs で synced_folder を高速化
nfs
を true
にすると vagrant up
が早くなります。ただし Mac 側の root パスワード入力が必要です。