Vagrantbox.esがあるので良いのかもしれませんがBoxの安全性が気になったり、そもそも使いたいOSのBoxが無かったりした場合は自分でBoxを作ることになります。
veeweeという手段もありますが今回はVirtualboxで作成したVMをBox化していきたいと思います。
Vagrantのインストール
- Macなら、
brew cask install vagrant
でインストールできます
ゲストマシンのセットアップ
ゲストマシンへのsshアクセスが前提ですがsshdがデフォルトでインストールされるとは限らないので、sshdを動かせるようになるまで手動で作業する必要があります。vagrantの場合はsshdが動く状態でbox化するのが無難かと。
プロキシの設定
プロキシを越えないと何もできないところにいるので、プロキシの設定を最初に行います
http_proxy=http://host:port
https_proxy=http://host:port
ログインし直します
sudoersの設定
プロキシを越えないと何もできないところにいるので、sudo実行時にプロキシの環境変数を引き継ぐようにします。sudo visudo
で編集しましょう。
Defaults env_reset
...
Defaults keep_env += http_proxy
Defaults keep_env += https_proxy
パッケージの更新
apt-get update
とかapt-get upgrade
とかyum update
とか。待ち時間が長いです。
sshdのインストール
openssh-serverをapt-getとかyumでインストール
Virtualbox Guest Additionsのインストール
vagrant upでVirtualboxの共有フォルダを作るため、Guest Additionsをインストールしておきます
ssh認証用公開鍵の作成とインストール
vagrantデフォルトの鍵を使っても良いのですが今回は自作の鍵を使用します。ssh-keygenで作ります。
作成した鍵をゲストにコピーし、.ssh/authorized_keysに書きます。
$ ssh-keygen -t rsa
$ cat key.pub >> ~/.ssh/authorized_keys
$ chmod 600 ~/.ssh/authorized_keys
ゲスト側へのコピー方法はいくつかありますが、私の場合は予めポートフォワーディング設定をしておいてゲストへのssh接続を可能にしてからscpコマンドでコピーしています。
boxを作る
- vagrant packageでVMのパッケージング
vagrant package --base vbox-vm-name
- vagrant box addでboxを追加
vagrant box add <vagrant-box-name> package.box
あとはvagrant initしてVagrantfileを編集してvagrant upして起動です。
OS別注意点
Ubuntu8.04
もうサポートの切れたOSなのでsource.list内に記載している内容が尽く使えなくなっています。
old-releases.ubuntu.comに修正しておきましょう。
こんなもう使ってはいけないOSも扱わなければならない。それが保守フェーズというものなのです。
Ubuntu12.04
ちゃんとGuest Additionsをインストールしてもvagrant up時に共有フォルダのマウントで失敗します。
対策はこちらを参照してください。
まあ共有フォルダが使えないだけでVM自体は起動しますが。
CentOS6
Guest Additionsのインストールが出来ないことがあります。
ビルド用の環境が入っていない可能性がありますので、Development toolsをインストールしてから実行しましょう。
$ sudo yum groupinstall "Development tools"
vagrant upしたときにttyをsudo起動しないとアカンと言うような趣旨のメッセージが表示される場合があります。
その際は、sudoersでrequirettyをコメントアウトしましょう。