色んなところに情報散らばるので、vagrantの基本コマンドをまとめてみた。
基本コマンド(起動停止等)
起動前の準備
vagrantはVagrantfileを読み込んで起動するので、boxイメージを指定してinitすることでVagrantファイルを事前に作る
$ cd [vagrantのホームディレクトリにしたいディレクトリ]
$ vagrant init [box名]
$ ls
Vagrantfile
起動
※ --provisonでプロビジョニングも実施
$ vagrant up
停止
$ vagrant halt
削除
$ vagrant destroy
再読込
※ --provisonでプロビジョニングも実施
$ vagrant reload
プロビジョンだけ実施
reloadは仮想マシンの再起動が入り時間がかかるので、ChefやShell Scriptでプロビジョン書いている場合に、設定変更反映したい時とか良く使う
$ vagrant provision
box関連
box追加
$ vagrant box add [box名] [boxの場所](実ディレクトリでもURLでも可)
box追加
$ vagrant box remove [box名]
box一覧の表示(現在登録されているbox一覧が表示される)
$ vagrant box list
cent65 (virtualbox, 0)
cent65-2 (virtualbox, 0)
オリジナルのbox(パッケージ)を作成
自分の作り上げた環境をboxイメージとして他に展開したい時に使う
ここで作ったboxを他環境にコピーし、box追加手順で追加すれば利用可
$ vagrant package --output test.box
==> Attempting graceful shutdown of VM...
==> Clearing any previously set forwarded ports...
==>Exporting VM...
==> Compressing package to: /opt/Vagrant/cent65-base/test.box
その他
vagrantホームディレクトリからのssh接続
$ vagrant ssh
通常のsshで接続
vagrant sshはホームディレクトリからしか使えないので、他の場所からでも通常の環境の様にsshしたい時は下記実施
knife soloとか外部からつつきたい用途は結構あると思うので良く使う。
$ vagrant ssh-config >> ~/.ssh/config
$ cat ~/.ssh/config
Host mweb
HostName 127.0.0.1
User vagrant
Port 2222
UserKnownHostsFile /dev/null
StrictHostKeyChecking no
PasswordAuthentication no
IdentityFile /Users/xxx/.vagrant.d/insecure_private_key
IdentitiesOnly yes
LogLevel FATAL
$ ssh mweb
繋がるー
# 自分の場合は、ホスト名ではなくipで繋げたいので下記のように、ホストをipにしてssh出来るようにしている
$ sed -i -e 's/mweb/192.168.50.*/g' ~/.ssh/config
$ cat ~/.ssh/config
Host 192.168.50.*
HostName 127.0.0.1
User vagrant
Port 2222
UserKnownHostsFile /dev/null
StrictHostKeyChecking no
PasswordAuthentication no
IdentityFile /Users/xxx/.vagrant.d/insecure_private_key
IdentitiesOnly yes
LogLevel FATAL
$ssh 192.168.50.20
繋がるー
同じboxイメージで複数台のマシンを起動
Vagtanfileに書きの様に記載することで同じイメージで複数起動を実現出来る
config.vm.define :mweb do | mweb |
l mweb.vm.hostname = "mweb"
mweb.vm.network :private_network, ip:"192.168.50.20"
end
config.vm.define :mweb2 do | mweb2 |
mweb2.vm.hostname = "mweb2"
mweb2.vm.network :private_network, ip: "192.168.50.21"
end
※vagrant sshでは繋がらないので、引数にホスト名をつける
upやreloadの時もホスト名指定必要で、ない場合は両方に同じコマンドが通る
vagrant ssh [host名]