Vagrantのboxを自分で作成する方法 公式ドキュメント”CREATING A BASE BOX”の翻訳

 

Vagrantで使用するboxを自作する方法について記載しています。

この記事はVagrantのドキュメント
CREATING A BASE BOX
を独断と偏見で翻訳したものです。
正確性は保証できませんので予めご了承の上ご利用下さい。

今回はひとまず、
共通のCREATING A BASE BOX だけ翻訳しました。
自作boxについての共通ドキュメントになります。

これと別に、個別のOS仮想化環境(VirtualBoxやVMware)の仮想マシンから
それぞれboxファイルを作成する方法を記載したドキュメントが存在します。
そちらは、この記事の共通事項を理解した上で読まれることをおすすめします。

参考(2014/02/16更新)
VirtualBox上の仮想マシンからBoxを作成する際のドキュメントを翻訳しました。
Creating a Base Box – VirtualBox Provider
Creating a Base Box – VirtualBox Provider の翻訳

以下翻訳 2014/02/15日

BaseBoxの作成

“base box”とされる特殊なBoxがあります。
BaseBoxはVagrantに必要とされる最小限の機能を持ち、
一般に既存のVagrant環境(つまりbase boxのベース)を
再パッケージして作成されるものではありません。

(訳注:base box は既存boxファイルの再パッケージではなく、OSのISOイメージから作成されます)

例えば、Ubuntuの(“precise64″等における)Vagrantプロジェクトによって提供されているのはbase boxです。
これらはISOによるminimal Ubunt installから生成されたものです。

base boxは開発環境の構築を始めるクリーンな基盤として極めて有用です。
Vagrantプロジェクトは将来的により多くのbase boxを提供可能になることを願います。
それまで、このページにどのようにbase boxを作成するか記載しておきます。


base boxの作成は多くの時間を費やし、退屈な作業であるので、Vagrant初心者にはお勧めできません。初心者の方は最初に既存のboxを探すことを勧めます。

Base Boxに入っているのは

base boxには通常、Vagrantが機能するための最小限のソフトウェアだけが入っています。
例えばLinuxのBoxは次のようなものだけが入っているでしょう:
・パッケージマネージャ
・SSH
・Vagrantが接続できるSSHユーザー
・Chef、Puppet等。ただし必須ではない。
これに加えて、各OS仮想化環境のソフトウェアが必要となるでしょう。たとえば、VirtualBoxのBoxを作るなら、共有フォルダを使用するために”VirtualBox guest additions”を含めるでしょう。しかしAWSのBaseBoxなら不要になります。

Base Boxの作成

base boxの作成はOS仮想化環境ごとになります。つまり、VirtualBoxを使うのか、VMware、AWSか、などによります。作成手順はそれぞれ異なります。従って1つのドキュメントではbase boxの作成手順をガイドできません。

このページはbase box作成の一般的なガイドラインを記載しますが、OS仮想化環境毎のbase box作成ガイドへのリンクも張っておきます。
例えば次のように:
VirtualBox Base Boxes
(訳注:上記URLの翻訳記事はこちら

ディスク容量

base box作成にあたって、ユーザがイライラせずに楽しく使えるように十分なディスク容量を確保する必要があります。例えば、VirtualBoxでは、可変サイズのディスクを最大の容量で作成すべきでしょう。それは最初は小さな容量だけ消費し、必要に応じてディスクを最大まで大きくしていくため、最も高い柔軟性をエンドユーザに提供します。
もしAWSのbase boxを作成するなら、ユーザは各々ストレージを確保できるため、AMIでテラバイトものEBS(AWS EC2用ブロックストレージ)を確保しないようにして下さい。そのかわり、無料で多くの容量が提供される”ephemeral drive”をマウントするとよいでしょう。

メモリ

ディスク容量同様、バランスの良いデフォルトのメモリを見つけることは重要です。
多くのOS仮想化環境においては、Vagrantfileでメモリを設定できるので、デフォルトでそう多く設定すべきではないでしょう。もし”vagrant up”で大量のメモリを必要とするなら、ユーザーエクスペリエンスに欠け(またいくらかショックであり)ます。Vagrantマシンと戯れ、快適に使うのに大抵足りる512MBを選べば良いでしょう、必要であればすぐに増やすこともできますし。

周辺機器(音響、USBなど)

base boxにおいて必要のないオーディオやUSBコントローラといったハードは無効化します。これらは一般的にVagrantの使用において不要で、殆どの場合Vagrantfileで簡単に追加することが出来ます。

デフォルトユーザ設定

Vagrantのほぼすべての側面は変更可能です。しかしながら、base boxが動作するためにいくつかのデフォルト設定が必要です。一般に公開するのであれば、これらをデフォルトとしてBoxを作成して下さい。
もしプライベートでboxを作成する場合は、これらに従わないようにして下さい。(ユーザ、パスワード、鍵が知られているといった)セキュリティリスクにさらされることになります。

“vagrant”ユーザ

デフォルトで、VagrantはマシンへのSSH接続に”vagratn”ユーザーを使用します。このユーザーは、VagrantがSSH接続の際に用いるデフォルトのセキュアでないキーペアを使用すべきです。また、Vagrantがデフォルトでkey-basedな認証を使用していたとしても、必要な場合には手動ログインが可能なように”vagrant”ユーザーのパスワードは”vagrant”にしておくのが慣習です。
デフォルトのセキュアでないキーペアを設定するため、公開鍵をvagrantユーザの ~/.ssh/authorized_keys に配置します。OpenSSHはファイルパーミッションに神経質なので、 ~/.ssh ディレクトリをパーミッション 0700 に、 authorized_keys をパーミッション0600に設定して下さい。

Rootパスワードは”vagrant”

Vagrantは事実上rootパスワードを使用したり、あるいは特定の文字列で有ることを求めませんが、一般公開にあたっては、必要に応じてマシンに変更を加える際によく知られたrootパスワードであることは利便性を高めます。
公開のBaseBoxは利便性のため、大抵rootパスワードに”vagrant”を使用します。

パスワードを使用しないsudo

これは重要です。Vagrantの多くの部分で、デフォルトのSSHユーザーがパスワード無しにsudoを利用できることを前提としています。それがVagrantにネットワーク設定、共有フォルダのマウント、ソフトウェアインストールなどを可能にします。
はじめに、いくらかの最小構成のOSインストールにはsudoが含まれていない場合があります。まずは何らかの方法でsudoがインストールされていることを確認して下さい。
sudoがインストールされた状態で、sudoのパスワード無し設定を行います(多くの場合visudoを用います)。設定ファイルの最後に次のように記述することで設定が可能です

vagrant ALL=(ALL) NOPASSWD: ALL

加えて、VagrantはSSH接続の際に pty や tty をデフォルトでは使用しません。requiretty が書かれた行が無いか確認し、もしあった場合、除去してください。これで tty 無しでのsudo実行が許可されます。Vagrantに pty をリクエストするように設定することも出来ます。しかし、Vagrantのデフォルトではそうなっていません。

SSHの調整

マシンがインターネットに接続されていない場合に、SSH接続を高速に行うために、SSHサーバー設定でUseDNS設定をnoにしましょう。
これはSSH接続の際に時間を費やすリバースDNSルックアップを回避します。

その他ソフトウェア

ここまでで、base boxをVagrantで動かすにあたって絶対に必要な共通のソフトウェアは全て用意しました。しかしながら、あといくらか、希望によっては追加でソフトウェアをインストールすることが出来ます。
VagrantでChefやPuppetのプロビジョナを使うであろうにも関わらず、それを実行した時、ChefやPuppetはインストールされません。ユーザはシェルを使ってインストールさせることが出来ますが、
boxのChef/Puppetが動くようにするには、base box にそれらをインストールしましょう。
これらのインストールはこのページのスコープ外ですが、かなり分かりやすいでしょう。
付け加えると、他のどんなソフトウェアのインストールや設定も自由に可能です。

Boxのパッケージング

boxファイルの作成はOS仮想化環境ごとに異なります。OS仮想化環境ごとのBaseBox作成ドキュメントを参照してください。

Boxのテスト

Boxをテストするためには、最初に使うときのように、次のように打ち込みます。

$ vagrant box add my-box /path/to/the/new.box
$ vagrant init my-box
$ vagrant up

デフォルトと異なるOS仮想化環境用のboxを作成した場合、vagrant up コマンドにオプション –provider をつけてください。vagrant up が成功したら、boxの動作が確認できました。(参考:デフォルトのOS仮想化環境)

この記事はお役に立ちましたか?


コメント

コメントする