orangeProse別館

orangeProse(本ブログ)の補助

Ubuntu14.04のVagrant Base boxをつくる

f:id:hidex7777:20140419000611p:plain

先月、Ubuntuサーバ12.04 LTSのVagrant Boxをつくる記事を書きましたが14.04 LTSが出たので、あらためてUbuntuサーバーのBoxをつくってみたいと思います。

Chefの記事が書きかけだった気がしますが、次回辺りに続きを書きます。

筆者の環境:

ISOをダウンロード

公式サイトからダウンロードしておきます。

このリリースは64bit版のみですね。

564MBなのでCD-ROMにおさまります。

VirtualBoxGuestAdditionsのISOもダウンロードします。

VirtualBox(4.3.10時点)添付のGuestAdditionsはうまくインストールされません。

https://www.virtualbox.org/download/testcase/VBoxGuestAdditions_4.3.11-93070.iso‌

(Stackoverflowを参照)

VirtualBoxにインストール

VirtualBoxを起動。

「新規作成」>「メモリ・HDD」はデフォルト>ドライブはVMDKの可変サイズ。

設定:

  • 一般:高度:クリップボードの共有「双方向」、ドラッグ&ドロップ「双方向」
  • システム:ポインティングデバイスPS/2マウス」
  • ストレージ:CD/DVDドライブにISOファイル(いまダウンロードしてきたUbuntuのイメージファイル)をマウント
  • オーディオ:オーディオを有効化のチェックをはずす
  • ネットワーク:NAT
  • USB:USBコントローラを有効化のチェックをはずす

「標準インストール」をする(ミニマルインストールではない)。

ユーザ名:vagrant
パスワード:vagrant

コンソール

標準インストールしたUbuntu 14.04のコンソールがVirtualBoxで開いている状態で:

$ sudo su
# export LANG=en_US.UTF-8
# echo $LANG
# aptitude update
# echo $?
# aptitude dist-upgrade
# echo $?

echo $?で返り値が0なら、直前のコマンドは成功しています。

sudoersの編集

vagrantユーザのsudoはパスワードなしにします:

# visudo

%sudo ALL=(ALL:ALL) ALL

と書いてある次の行に追記します:

vagrant ALL=(ALL) NOPASSWD: ALL

Ctrl+Xで編集完了、yで保存。

終わったらsuからexitします:

# exit
$ cd (ホームディレクトリに戻ります)

Guest Additionsのインストール

DKMSをインストールします:

$ export LANG=en_US.UTF-8
$ echo $LANG
$ sudo aptitude install dkms
$ echo $?

VirtualBoxの「デバイス」>「Guest AdditionsのCDイメージを挿入」を選択します。

VirtualBoxの「デバイス」>「CD/DVDデバイス」>「仮想CD/DVDディスクファイル選択」で、さきにダウンロードしておいたVBoxGuestAdditions_4.3.11-93070.iso‌を選択します。

ディレクトリをつくって:

$ mkdir /mnt/cdrom

マウントします:

$ sudo mount /dev/cdrom /mnt/cdrom

または:

$ sudo mount /dev/sr0 /mnt/cdrom

スクリプトを実行します:

$ cd /mnt/cdrom
$ ls (↓で実行するスクリプトファイルが表示されるのを確認)
$ sudo sh ./VBoxLinuxAdditions.run

デスクトップ環境をインストールしていないServerだとWindow Systemのインストールがスキップされますが、無視します。

$ ls /usr/lib

/opt/VBoxGuestAdditions-4.3.11/lib/VBoxGuestAdditionsへのVBoxGuestAdditionsというディレクトリシンボリックリンクがつくられていればOKです(ISOをダウンロードしなくともシンボリックリンクをつくればOKということでもあります)。

openssh-serverのインストール

$ sudo aptitude install openssh-server
$ echo $?
$ sudo service ssh status (runningを確認します)

Vagrantで共通して使われるインセキュア・キーを登録します:

$ mkdir .ssh
$ cd .ssh
$ wget https://raw.github.com/mitchellh/vagrant/master/keys/vagrant.pub
$ mv vagrant.pub authorized_keys
$ chmod 600 authorized_keys
$ cd ..
$ chmod 700 .ssh

ここまでで、たぶん、Vagrant Boxをつくる条件は整っていると思います。

ここ以降は、ホストOS(Windowsとか)のコンソールで作業します。

パッケージング

package --baseに渡す引数は、VMの名称(VirtualBoxGUIに表示されている名称)を与えます(ここでは"Ubuntu1404")。大文字小文字が区別されます。

vagrant package --base Ubuntu1404

package.boxがカレントディレクトリにつくられます。

テスト

box addに渡す引数は、そのBoxに自分が付けたい名前を与えます。ここでは"Trusty"とします:

vagrant box add Trusty package.box
vagrant box list

これで"Trusty"がリストにあればOKです。

ホームの.vagrant.d/boxes/Trusty/0/virtualboxにmetadata.jsonとともに展開されているのを確認します。

新たに新規プロジェクト用ディレクトリをつくり、そこで立ち上げてみます:

> mkdir mytrusty1
> cd mytrusty1
> vagrant init Trusty
> vagrant up

VirtualBoxが立ち上がったままであれば、新たなVMがつくられて「実行中」となっているはずです。

プライベートネットワーク接続を加える

Vagrantfileの次の行のコメントをはずします:

config.vm.network :private_network, ip: "192.168.33.10"

Vagrantfileを再読み込みして、再起動、ログインします:

> vagrant reload
> vagrant ssh