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

orangeProse別館

orangeProse(本ブログ)の補助

Vagrant > Boxes > Creating A Base Box[雑訳]

Programming Vagrant Server

VagrantのドキュメントページBoxesCreating A Base Boxをざっくばらんに訳してみました。

かなり雑なので間違いがあればご指摘下さい。


Base Boxをつくる

”Base Box”という特殊な種類のBoxがあります。このBoxにはVagrantが機能するための最小構成が含まれ、通常、既存のVagrant環境を再パッキングすることによってつくられるものではありません(だから"Base Box"は"Base"というわけです)。

たとえば、Vagrantプロジェクトによって提供されているUbuntuのBox("precise64"のようなもの)はBase Boxです。それらはISOからインストールした最小構成のUbuntuからつくられたもので、既存の環境の再パッケージではありません。

Base Boxは、開発環境を構築していくクリーンなスタート地点を得るのにきわめて便利なものです。Vagrantプロジェクトは将来、より多くのOSのBase Boxを提供できるといいなと思っています。それまでは、このページがあなたが自分自身のBase Boxをつくる方法を示すことになります。

高度なテーマ! Base Boxをつくることは、時間がかかり、退屈なプロセスでありうるため、ビギナーのVagrantユーザにはおすすめしません。もしあなたがVagrantを使いはじめたばかりなら、まず既存のBase Boxを探して使ってみることをおすすめします。

Base Boxにはなにが含まれるか?

Base Boxには典型的にはVagrantが機能するための最小構成のソフトウェア群のみが含まれています。たとえば、LinuxのBoxは次のものだけを含んでいるでしょう:

  • パッケージマネージャ
  • SSH
  • Vagrantが接続できるSSHユーザ
  • ChefやPuppetなどなどが含まれるかもしれないが、必ずしも必要というわけではない

これに加え、プロバイダによっては追加のソフトウェアを必要とするかもしれません。たとえば、もしVirtualBox用のBase Boxをつくるなら、共有フォルダが適切に働くようにVirtualBox Guest Additionsを含めたくなるかもしれません。しかし、もしAWSのBase Boxをつくるのであれば、これは必要ありません。

Base Boxをつくる

Base Boxはプロバイダ固有につくります。これは、あなたがVirtualBoxを使っているのか、VMwareなのか、AWSなのか、などなどに依存して、Base Boxを作成するプロセスが異なるということを意味しています。このため、この文書だけでは、Base Boxをつくる完全なガイドにはなりえません。

このページは、Base Boxをつくるためのいくつかの一般的なガイドラインを示すものですが、プロバイダ固有の作成のためのガイドにもつながります。

プロバイダ固有のガイドは以下にリンクがあります:

ディスク容量

Base Boxをつくるとき、ユーザがやりたい作業に困らないように、十分なディスク容量をもたせるように注意して下さい。たとえば、VirtualBoxでは、最大サイズの可変サイズドライブをつくるべきでしょう。これによって、実際のドライブの使用範囲がはじめは小さくなり、必要となるディスク容量に応じて最大サイズまで動的に大きくなっていくでしょうし、エンドユーザーにとって最大の柔軟性を提供することになります。

もしAWSのBase Boxをつくるのであれば、たとえば、AMIを何テラバイトものEBSストレージに強制的に割り当てないでください。ユーザは自分でそうできるからです。ですが、デフォルトでエフェメラルドライブをマウントすべきです。無料で大きなディスク容量を提供するからです。

メモリ

ディスク容量のように、デフォルトのメモリ容量の適切なバランスを見つけ出すことは重要です。ほとんどのプロバイダで、ユーザはVagrantfileでメモリを変更することができます。ですからデフォルトではあまり大きすぎないようにしてください。もしBase Boxから'vagrant up'したときに、すぐに何ギガバイトものRAMが要求されたら、ユーザエクスペリエンスはひどいものに(そして少しショッキングなものに)なるでしょう。そのかわりに、たとえば512MBぐらいの値を選択することで、たいていは、Vagrantマシンでいろいろ遊んだり面白いことをしたりするのに十分でしょうし、必要になったときには容易に増加させることもできます。

周辺機器(オーディオ、USB、その他)

オーディオやUSBコントローラのようなBase Boxには不必要なハードウェアは無効化してください。これらは一般的にはVagrantの使用には不必要なものですし、また、ほとんどの場合、Vagrantfileで容易に追加できるものです。

デフォルトユーザ設定

Vagrantのほぼすべての面が、修正可能です。しかしながら、VagrantはBoxを拠点としてあなたのBase Boxが「ちゃんと動く」ようにするいくつかのデフォルト設定を求めています。あなたのBoxをパブリックに配布しようとするなら、こうしたデフォルト設定をしておくべきです。

もしプライベートな利用のためにBase Boxをつくるのであれば、これに従おうとしないかもしれないけれど、そのことはあなたのBase Boxをセキュリティ・リスクにさらすことになるでしょう(ユーザ、パスワード、秘密鍵などが知られることになるかもしれません)。

"VAGRANT"ユーザー

デフォルトで、Vagrantは"vagrant"ユーザがマシンにSSHログインすることを求めます。このユーザは、VagrantがデフォルトとしてSSHログインしようとするのに使用するインセキュア・キーペアでセットアップされます。また、たとえVagrantがデフォルトでキー認証を使うとしても、"vagrant"ユーザに"vagrant"パスワードを設定するのが一般規約です。このことで、ログインが必要なときには、手動でそのユーザとしてログインすることをうながします。

SSHアクセスをインセキュア・キーペアで設定するためには、公開鍵を"vagrant"ユーザの~/.ssh/authorized_keysファイルに追加して下さい。OpenSSHはファイル・パーミッションにうるさいということに注意して下さい。そのため、~/.ssh0700パーミッションを持ち、認証キーファイルが0600パーミッションを持つように気をつけて下さい。

Rootパスワード:"vagrant"

Vagrantはrootパスワードを実際には使いませんし、要求もしません。しかし、一般によく知られたrootパスワードを持つことは、必要なときにマシンを修正するのを容易にします。

パブリックに利用できるBase Boxは、簡便のために、"vagrant"というrootパスワードをたいてい使います。

パスワードなしSudo

これは 重要です!Vagrantの多くの面が、デフォルトのSSHユーザがパスワードなしでsudoできるように設定されていることを求めます。このことが、Vagrantがネットワークを設定したり、共有フォルダをマウントしたり、ソフトウェアをインストールしたりすることを可能にします。

まず、OSの最小構成はデフォルトではsudoを含んでさえいません。sudoのインストールを確認して下さい。

sudoをインストールしたら、それを設定し(たいていvisudoを使います)、"vagrant"ユーザにパスワードなしのsudoを許可して下さい。これは設定ファイルの末尾に次の行を加える事で可能です:

vagrant ALL=(ALL) NOPASSWD: ALL

さらに、VagrantSSHで接続するのに、デフォルトではptyやttyは使用しません。requirettyがある行を含めないように気をつける必要があります。もしあれば、削除して下さい。これでttyなしでもsudoが適切に動くようになります。あなたは、Vagrantがptyを必要とするように設定できる、ということに留意して下さい。そうすることで、あなたはこの設定を維持できるのです。ですが、デフォルトではVagrantはそうはしないのです

SSH調整

あなたのマシンやVagrantマシンがインターネットに接続されていないときでも、SSHをすばやくするために、SSHサーバにあるUseDNS設定をnoに設定して下さい。

これによって、時間がかかりうるSSHクライアントの接続にさいして逆引きのDNS問い合わせを避けることができます。

他のソフトウェア

この時点で、Vagrantで動くBase Boxに必要な一般的なソフトウェアをすべて備えたことになります。ですが、お望みであればインストールしてもよい、いくつかのソフトウェアがあります。

私たちは、計画はしているのですが、ChefやPuppetといったプロビジョニング・ツールを使うときに、Vagrantはまだそれらを自動的にはインストールしません。ユーザはシェル・プロビジョニングを使えますが、あなたがChefやPuppetをBoxで使えるようにしたいならば、それらをBase Boxにインストールしなければならなくなるでしょう。

このインストールはこのページの範囲外のことですが、とても簡単なことです。

これに加え、Base Boxにデフォルトで使用したい他のソフトウェアをご自由にインストールし、設定して下さい。

Boxのパッケージ化

Boxをパッケージ化してboxファイルにすることは、プロバイダ固有なものです。Base Box作成のための、プロバイダ固有のドキュメントを参照して下さい。プロバイダ固有のガイドは、このページのトップへリンクされています。

Boxをテストする

Boxをテストするには、Vagrantのビギナーのふりをして、試しにやってみてください:

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

もしなんらかの他のプロバイダのためのBoxをつくったのなら、vagrant up--providerオプションをつけて下さい。もしうまく立ち上がったら、あなたのBoxは成功です!


文中に出てくる「固有のプロバイダのガイド」にはいまのところVirutalBoxのページしかないようですが、近々雑訳をアップしたいと思います