Matthewの備忘録

忘れたときはここを見ろ。何か書いてある。

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ビット数を推測するとよい。また、ダウンロード数なども記載されている。

ubuntu | Atlas by HashiCorp

 RoRなどのプロジェクトで利用されているらしいVagrantfileでは"ubuntu/yakkety64"を指定しており、rbenvやrailsのインストール準備状態まで*2自動で行われるようになっている。

github.com

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

スナップショットをとる

 OS起動中に(停止時には試していない)、"vagrant snapshot save {label}"でコマンドを実行した瞬間のOSイメージのスナップショットを{label}で指定した名前で保存しておける。保存したスナップショットから再開したいときは"vagrant snapshot restore {label}"を実行すればよい。また、スナップショットのリストを表示させるには"vagrant snapshot list"を実行するとよく、指定したスナップショットを削除するには"vagrant snapshot delete {label}"を実行すればよい。

  • 取る:vagrant snapshot save {label}
  • 戻す:vagrant snapshot restore {label}
  • 一覧:vagrant snapshot list
  • 削除:vagrant snapshot delete {label}

ダウンロードしたboxファイルは信用できるか?

 多数の利用者がいるとはいえ、頒布者に悪意がなくても悪意が含まれたものが紛れ込むことはよくあるし、そういうことがなくてもバグが入っていることもよくあることだ。先にも紹介したように、boxファイル(VMフィアル)を次のサイトで頒布していはいるが、どうしても信用しきれないという場合は、自分でOSをインストールする程度には信頼がおける方法がVagrantには用意されている。

 veeweeというISOファイルなどからインストール作業を初めてboxファイル(VMイメージ)が作れるVagrantプラグインのようなものがあるらしい。これは後日扱ってみよう。

参考:



 

*1:詳しくは後ほどしらべることにして

*2:好きなバージョンを入れるために準備状態までにしてあるのだろう。