tweet:2016:0525_01
目次
Vagrant
今更Vagrantを始めることになったので、メモ。 環境はOS-X
- HomeBrewを入れる
- HomeBrewにCaskも入れる
- brew install caskroom/cask/brew-cask
- VirtualBoxを入れる
- Caskから入れる場合は
brew cask install virtualbox
で - OS-XのPackageとして入れる場合はhttps://www.virtualbox.orgから
- Vagrantを入れる
brew cask install vagrant
brew cask install vagrant-manager
- box fileを追加する
- Ubuntu 16.04 を入れる場合。
vagrant box add https://vagrantcloud.com/ubuntu/boxes/xenial64
- FreeBSD 10.3-RELEASE を入れる場合
vagrant box add https://atlas.hashicorp.com/freebsd/boxes/FreeBSD-10.3-RELEASE
- 要するにVagrantのBoxファイルを探して入れれば良い
- boxファイルなどは、.vagrant.d以下に設置される
- Imageの準備
vagrant box list
でリストを確認vagrant init ubuntu/xenial64
(Ubuntuの場合)
- VMの制御
- 基本は、Vagrant initしたDirで作業すると、VMを意識する必要がなくなる
vagrant up
vagrant ssh
で起動したVMにsshでloginするvagrant ssh-config
で起動したVMに読み込まれている設定が見られる
vagrant halt
でVMを止めるvagrant reload
でVMを再起動するvagrant provision
でVMにProvisioningで記述した操作を適用する- provisioningに記載された内容は、VM作成後初めてVMを起動する時のみ実行される。
ハマリどころ
原因不明だが1.8.1で出た問題
手元のVagrantは1.8.1で、1.7系では出ていないという話を聞いたが、同一のBoxを元にVMを二つ起動しようつするとVMのVirtualBox上での識別子が被ってしまい、起動できないという症状が出た。
- 回避には、以下を記載することでしのいだ。
config.vm.provider "virtualbox" do |vb| vb.name = "nginx" # これがVB上の識別子になるので、重複しないよう機器をつけること。 end
Ubuntu 16.04の問題
Ubuntu 16.04はNICの命名規則が変わっている(15.10以降かららしい) そのため、
config.vm.define "nginx" do |loop| loop.vm.network "private_network", ip: "192.168.1.11", virtualbox__intnet: "intra" loop.vm.network "private_network", ip: "192.168.2.11" loop.vm.provider "virtualbox" do |vb| vb.name = "nginx1" end end
のような記述をすると、eth0が見つからないと言って大騒ぎする 回避するには、
config.vm.define "nginx1" do |loop| loop.vm.network "forwarded_port", guest: 80, host: 2001 loop.vm.network "private_network", ip: "192.168.1.11", virtualbox__intnet: "intra", auto_config: false loop.vm.network "private_network", ip: "192.168.2.11", auto_config: false loop.vm.provider "virtualbox" do |vb| vb.name = "nginx1" end loop.vm.provision 'shell', inline: "/sbin/ifconfig enp0s8 192.168.1.11/24" loop.vm.provision 'shell', inline: "/sbin/ifconfig enp0s9 192.168.2.11/24" end
のように、network設定でauto_configをfalseに設定し、provisioningで取り急ぎのアドレスを割り当てる。 当然、2回目の起動からはアドレスが設定されなくなるので、システムにアドレス設定を記述する必要がある。
無論、旧来のようにDevice nameをeth*にする方法もあるらしいのだが、試していない
その他
書きかけ
tweet/2016/0525_01.txt · 最終更新: 2016/05/31 13:53 by 127.0.0.1