読者です 読者をやめる 読者になる 読者になる

どせいたんさき。

ナスダヨー

Vagrant + Virtualbox のインストール on Ubuntu 14.04

Linux Ubuntu

目的

Ubuntu 14.04 に VagrantVirtualbox をインストールする.

手順

Virtualbox のダウンロード

Linux 用のパッケージは このページ にインストール情報が書いてある. 今回は Ubuntu 14.04 にインストールするのでそれに合った設定をする.

# 末尾に以下の内容を追加する
# deb http://download.virtualbox.org/virtualbox/debian trusty contrib
sudo nano /etc/apt/sources.list
wget -q https://www.virtualbox.org/download/oracle_vbox.asc -O- | sudo apt-key add -

sudo apt-get update
sudo apt-get install virtualbox-5.0

vboxmanage -v
# -| 5.0.20r106931

デフォルトだと $HOME/Virtualbox VMs というフォルダができてしまう.デフォルトのフォルダを指定する.

vboxmanage setproperty machinefolder /path/to/directory

Vagrant のダウンロード

Debian 用のパッケージを このページ からダウンロードする.

wget https://releases.hashicorp.com/vagrant/1.8.1/vagrant_1.8.1_x86_64.deb
sudo dpkg -i vagrant_1.8.1_x86_64.deb

以上でインストールが完了.

vagrant -v
# -| Vagrant 1.8.1

つかってみる

起動するためのイメージを取得する.今回は CentOS 7.2 を使ってみる.Vagrant で使用可能なイメージは Bento by Chef から取得することができる.

vagrant box add bento/centos-7.2

適当なディレクトリに移動して Vagrant を起動してみる.*1

mkdir -p vagrant/test
cd vagrant/test
vagrant init bento-centos-7.2
vagrant up
# -| Bringing machine 'default' up with 'virtualbox' provider...
# -| ==> default: Importing base box 'bento-centos-7.2'...
# -| ==> default: Matching MAC address for NAT networking...
# -| ==> default: Setting the name of the VM: test_default_xxxxxxxxxxxxx_xxxxx
# -| ==> default: Clearing any previously set network interfaces...
# -| ==> default: Preparing network interfaces based on configuration...
# -|     default: Adapter 1: nat
# -| ==> default: Forwarding ports...
# -|     default: 22 (guest) => 2222 (host) (adapter 1)
# -| ==> default: Booting VM...
# -| ==> default: Waiting for machine to boot. This may take a few minutes...
# -|     default: SSH address: 127.0.0.1:2222
# -|     default: SSH username: vagrant
# -|     default: SSH auth method: private key
# -|     default: Warning: Remote connection disconnect. Retrying...
# -|     default: Warning: Remote connection disconnect. Retrying...
# -|     default: Warning: Remote connection disconnect. Retrying...

Warning: Remote connection disconnect. Retrying...タイムアウトするまで止まらない.もろもろの設定をするときに ssh でアクセスしているのだけど private key での接続に失敗しているとこうなるらしい.vagrant 接続用の private key を作りなおして再登録するとよい.

Vagrantfile があるディレクトリで以下のコマンドを実行すると ssh で接続するための情報が出てくる.

vagrant ssh-config
# -| Host default
# -|   HostName 127.0.0.1
# -|   User vagrant
# -|   Port 2222
# -|   UserKnownHostsFile /dev/null
# -|   StrictHostKeyChecking no
# -|   PasswordAuthentication no
# -|   IdentityFile "/path/to/dir/.vagrant/machines/default/virtualbox/private_key"
# -|   IdentitiesOnly yes
# -|   LogLevel FATAL

Identityfile で指定されているファイルが private key である.これを ssh-keygen で作りなおす.

cd /path/to/dir/.vagrant/machines/default/virtualbox/
mv private_key private_key.bak
ssh-keygen -t rsa -b 1024
## private key 情報を入力 (既存の鍵を上書きしないように注意!)
## ここでは仮に ./private_key に鍵を作成する

ここで作成した private_key.pub/home/vagrant/.ssh/authorized_keys に追記する.

vagrant ssh # パスワードでログインする

## vagrant 内部
cd .ssh
ls -l
# -| -rw-------. 1 vagrant vagrant 0 May 18 10:21 authorized_keys
cat >> authorized_keys  # private_key.pub をペースト

vagrant reload して問題なく立ち上がればよい.

とりあえずこの状態を保存しておきたい.このような用途には vagrant-vbox-snapshot が便利らしい.

vagrant plugin install vagrant-vbox-snapshot
vagrant snapshot take ssh_config
# -| Taking snapshot ssh_config
# -| 0%...10%...20%...30%...40%...50%...60%...70%...80%...90%...100%
# -| Snapshot taken. UUID: 12345678-90abc-def0-1234-567890abcde

vagrant snapshot go [name] でさくっと戻れるらしい.

参考資料

*1:Thinkpad X1 Carbon の場合 BIOS 設定画面から CPU の仮想化ハードウェア拡張を有効にしないと起動しなかった