VirtualBoxとVagrantによる同一仮想環境の提供 その2
先日、とりあえず、VirtualBoxとそのCLIラッパーとも言うべきVagrantによる同一開発環境の構築を試みて備忘録を記してみたが、もう一つの辿り方があったので、記しておく。
matthew.hatenadiary.jp
vagrant upから始められる
いきなりVagrantfileが書けるなら、vagrant upコマンドの実行から始められる。大抵はvagrant initでVagrantfileのスケルトンを出力することが多いだろう。
Vagrantfileに既存のboxファイルを指定
boxファイルの作り方には興味があるが、それは後日行うことにして、既に用意されているboxファイルを"vargrant box add {title} {url}"コマンドを利用せずに、Vargrantfile中のconfig.vm.boxで指定し、自動的にダウンロードさせることが可能になっている。たとえばUbuntu16.10の64ビット版を利用したいとして、次のようにVagrantfileに書いて"vagrant up"コマンドを初めて実行すれば、最初にメタデータが置いてあるhttps://atlas.hashicorp.com/ubuntu/yakkety64にアクセスし、そのメタデータに記述されている最新のboxをダウンロードするシーケンスが始まる。
Vagrant.configure('2') do |config| config.vm.box = 'ubuntu/yakkety64' ・・・ end
boxファイルの提供元のサーバーは、何故だかホームページ(トップページ)は登録会員制のようなのだが*1、box毎に分類されたページは公開されていて、利用したいboxファイルを探すことができるようになっている。Ubuntuの場合は次のURL先のページのリストにアップされた名前"ubuntu/yakkety64"といった名前からディストロのバージョンと対応CPUビット数を推測するとよい。また、ダウンロード数なども記載されている。
RoRなどのプロジェクトで利用されているらしいVagrantfileでは"ubuntu/yakkety64"を指定しており、rbenvやrailsのインストール準備状態まで*2自動で行われるようになっている。
ssh接続のユーザーIDとパスワード
上で例に出したrails-dev-boxを利用すると、Windowsの場合、%homepath%\.vagrant.d\boxes\以下にプロビジョニング前のboxファイルとVagrantfileなどが配置されるが、そのVagrantfile内にssh接続したいときのユーザーIDとパスワードが次のように書かれている。"vagrant ssh"コマンド経由にせずに任意のsshクライアントを立ち上げて接続したい場合は、"vagrant up"を実行したフォルダにあるVagrantfileではなく、%homepath%\.vagrant.d\boxes\以下にあるVagrantfileに書かれているusernameとpasswordでログインできる。
・・・ Vagrant.configure("2") do |config| ・・・ config.ssh.username = "ubuntu" config.ssh.password = "hogehogehogehogehoge" ・・・ end
メモリの調整
例えば、上で例に出したrails-dev-boxを利用すると、Vagrantfileが利用メモリに2GBを指定しているが、何らかの理由で増減させたい場合は、VirtualBoxでOSを終了させて一時的にメモリを調節して起動するのもありだが、永続的に変更したい場合は、"vagrant halt"コマンドでOSを停止させた後、そのコマンドを実行したフォルダ内にあるVagrantfile中のメモリ指定を変更し、"vagrant reload"で再起動すればよい。CPU数も同様に変更すればよい。
config.vm.provider 'virtualbox' do |v| v.memory = 1024 # changes from 2048 v.cpus = 2 end
ダウンロードしたboxファイルは信用できるか?
多数の利用者がいるとはいえ、頒布者に悪意がなくても悪意が含まれたものが紛れ込むことはよくあるし、そういうことがなくてもバグが入っていることもよくあることだ。先にも紹介したように、boxファイル(VMフィアル)を次のサイトで頒布していはいるが、どうしても信用しきれないという場合は、自分でOSをインストールする程度には信頼がおける方法がVagrantには用意されている。
veeweeというISOファイルなどからインストール作業を初めてboxファイル(VMイメージ)が作れるVagrantプラグインのようなものがあるらしい。これは後日扱ってみよう。
参考: