Ubuntu14.04のVagrant Base boxをつくる
先月、Ubuntuサーバ12.04 LTSのVagrant Boxをつくる記事を書きましたが14.04 LTSが出たので、あらためてUbuntuサーバーのBoxをつくってみたいと思います。
Chefの記事が書きかけだった気がしますが、次回辺りに続きを書きます。
筆者の環境:
- Vagrant: 1.5.3
- VirtualBox: 4.3.10
- Windows 7 SP1 64bit
ISOをダウンロード
公式サイトからダウンロードしておきます。
このリリースは64bit版のみですね。
564MBなのでCD-ROMにおさまります。
VirtualBoxGuestAdditionsのISOもダウンロードします。
VirtualBox(4.3.10時点)添付のGuestAdditionsはうまくインストールされません。
https://www.virtualbox.org/download/testcase/VBoxGuestAdditions_4.3.11-93070.iso
VirtualBoxにインストール
VirtualBoxを起動。
「新規作成」>「メモリ・HDD」はデフォルト>ドライブはVMDKの可変サイズ。
設定:
- 一般:高度:クリップボードの共有「双方向」、ドラッグ&ドロップ「双方向」
- システム:ポインティングデバイス「PS/2マウス」
- ストレージ:CD/DVDドライブにISOファイル(いまダウンロードしてきたUbuntuのイメージファイル)をマウント
- オーディオ:オーディオを有効化のチェックをはずす
- ネットワーク:NAT
- USB:USBコントローラを有効化のチェックをはずす
「標準インストール」をする(ミニマルインストールではない)。
コンソール
標準インストールした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の名称(VirtualBoxのGUIに表示されている名称)を与えます(ここでは"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