ホーム >

Vagrant

最新のVagrantのインストール

最新のVagrantはgemではインストールできなくなっているので、 Vagrantのダウンロードサイト からパッケージをダウンロードしてインストールするか、 もしくは、Githubからソースコードをダウンロードしてインストールする。

git clone https://github.com/mitchellh/vagrant.git
cd vagrant
git checkout -b work_v1.2.7 v1.2.7
bundle install
rake install

この方法でインストールすると、vagrantコマンドを実行するたびに警告メッセージが出るため、 公式パッケージからインストールしたほうがよさそうだ。

仮想マシンがネットワークにつながらないときの対処方法

Linuxのudevにはネットワークカードのmacアドレスとネットワークデバイスとの対応関係を固定する機能がある。 一方、パッケージングしたボックスで新しい仮想マシンを作成すると、 ネットワークカードのmacアドレスが元の仮想マシンから変更されるのにも関わらず、 元の仮想マシンのMACアドレスの記録がボックス内に残っているため、 不整合が起こってネットワークが起動しないことがある。

この場合、 /etc/udev/rules.d/70-persistent-net.rules を削除してから、 仮想マシンを再起動(vagrant halt → vagrant up)し、 macアドレスとネットワークデバイスの対応関係を設定し直すことで対処できる。

また、udevの設定を変更することで、このファイルを作成しないようにすることも可能である。 /lib/udev/write_net_rules 内のRULES_FILEを /etc/udev/rules.d/70-persistent-net.rules から /dev/null に設定することで、 このファイル自体を作成しないようにできる。

sudo sed -i -e 's|/etc/udev/rules.d/70-persistent-net.rules|/dev/null|g' /lib/udev/write_net_rules

参考URL

仮想マシンとscpでファイルを交換する

Vagrantfileが置いてあるディレクトリで、

vagrant ssh-config > ssh-config

を実行すると、sshの設定ファイルが出力される。 この中身を読むと仮想マシンのホスト名が「default」になっているので、例えば、仮想マシンに対してファイルを送る場合は、以下のコマンドを実行する。

scp -F ./ssh-config ファイル名 default:

スナップショット機能を使用する

vagrant-vbox-snapshotというプラグインをインストールすると、Vagrantにスナップショット機能を追加することができる。

インストール

vagrant plugin install vagrant-vbox-snapshot

使い方

> vagrant help snapshot
Usage: vagrant snapshot <command> [<args>]

Available subcommands:
     back
     delete
     go
     list
     take

For help on any individual command run `vagrant snapshot <command> -h`
  • スナップショットを取得する

    vagrant snapshot take <スナップショット名>
    
  • スナップショットを削除する

    vagrant snapshot delete <スナップショット名>
    
  • 特定のスナップショットの状態に移動する

    vagrant snapshot go <スナップショット名>
    
  • 現在のスナップショットの状態に戻る

    vagrant snapshot back
    
  • スナップショットの一覧を表示する

    vagrant snapshot list
    

Boxを一から作成する手順

  1. 仮想マシンを新規作成し、通常のインストーラを使ってOSをインストールする。

    • rootのパスワードをvagrantに設定
  2. sshサーバがインストールされていなければインストールする。パッケージをアップグレードして再起動する

  3. Virtualbox Guest Additions をインストールする

    ubuntu系の場合

    apt-get install build-essential module-assistant dkms
    mount /dev/cdrom /mnt
    /mnt/VBoxLinuxAdditions.run
    
  4. vagrantユーザを作成する。パスワードをvagrantに設定する。 (ubuntu系の場合はOSインストール時にユーザも作成しているはずなのでこの作業は不要)

    adduser vagrant
    passwd vagrant
    
  5. vagrantユーザの.sshディレクトリにsshの公開鍵をインストールする。

    mkdir -m 700 /home/vagrant/.ssh cd /home/vagrant/.ssh wget https://raw.github.com/mitchellh/vagrant/master/keys/vagrant.pub -O authorized_keys chmod 600 authorized_keys

  6. sudoの設定

    sudo visudo
    
    • requirettyをコメントアウトする
    • vagrantユーザのパスワード入力を不要にする
    vagrant ALL=(ALL) NOPASSWD:ALL
    
  7. MACアドレスからネットワーク名を固定する機能を無効化する。

    sudo rm /etc/udev/rules.d/70-persistent-net.rules
    sudo sed -i -e 's|/etc/udev/rules.d/70-persistent-net.rules|/dev/null|g' /lib/udev/write_net_rules
    
  8. sshログインの高速化のためにUseDNSをnoに設定する。

    /etc/ssh/sshd_config

    UseDNS no
    
  1. Boxのサイズを小さくするために不要なキャッシュなどを削除する。

    RHEL系

    sudo yum clean all
    

    ubuntu

    sudo apt-get clean
    sudo apt-get autoclean
    
  2. 仮想ディスクの空き領域に0を書き込むと、Boxのサイズが小さくなる。

    sudo -i
    dd if=/dev/zero of=/EMPTY bs=1M
    rm /EMPTY
    exit
    
  3. 仮想マシンを停止してパッケージ化。

    vagrant package --base <仮想マシン名>
    

Ubuntu14.04で共有フォルダのマウントに失敗するときの対象方法

  1. ゲスト上で以下のコマンドを実行
sudo ln -s /opt/VBoxGuestAdditions-4.3.10/lib/VBoxGuestAdditions /usr/lib/VBoxGuestAdditions
  1. vagrant reloadを実行する