Skip to content

03.09.Vagrant Share

stormcat24 edited this page Aug 29, 2014 · 1 revision

ローカルのAeromockをVagrant Shareを使って一時的に外部公開するための手順です。スマートフォンで即座に実機確認したい場合に便利です。

諸準備

インストール

VagrantとVirtualBoxをインストールしてください。MacOSであれば、homebrewでのインストールを推奨します。

Vagrantプラグインのインストール

以下のプラグインをインストールします。

sahara

sahara はVMの状態を特定の時点にロールバックすることができるので、必要に応じて利用してください。

$ vagrant plugin install sahara
vagrant-hostsupdater

vagrant-hostsupdater はVagrantによるVM起動時に、VMのinternal IPをローカルの/etc/hostsに追加してくれます。

$ vagrant plugin install vagrant-hostsupdater

Vagrant Cloudへの登録

Vagrant Shareを利用するには、Vagrant Cloud へのサインアップが必要です。

Vagrantの設定

まず、aeromock-brewのinitVagrantコマンドを実行します。

$ cd /path-to-path/aeromock-brew
$ ./gradlew initVagrant

~/.aeromock/vagrantというディレクトリが作成されます。このディレクトリには以下のファイル・ディレクトリが作成されます。

  • Vagrantfile
  • ansible/
  • config.yaml
  • env.yaml

env.yaml

env.yamlはVagrantに割り当てるシステムリソースや、共有ディレクトリの設定をします。

設定項目 内容
memory VMに割り当てるメモリ(MB)
cpus VMに割り当てるCPUコア数
private_ip VMのプライベートIP
basic_user Basic認証のユーザー名
basic_pass Basic認証のパスワード
share_dir VMにマウントするローカルのディレクトリ(Aeromockで必要なものが含まれている必要がある)
mount_dir share_dirをマウントするVM上のパス

例として、~/path-to-path/aeromock/tutorialをVMで閲覧する設定をしてみましょう。重要なのはshare_dirmount_dirの設定です。

~/path-to-path/aeromock/tutorialをVMにマウントしたいのでshare_dirはそれをそのまま設定します。

share_dir: ~/path-to-path/aeromock/tutorial

mount_dirshare_dirの最後のディレクトリを利用すると良いでしょう。

mount_dir: /tutorial

完成形は以下のようになります。

memory: 1024
cpus: 1
private_ip: 192.168.33.30
basic_user: vagrant
basic_pass: aeromock
share_dir: ~/path-to-path/aeromock/tutorial
mount_dir: /tutorial

config.yaml

~/.aeromock/vagrant/config.yamlVM上で動作するAeromockが利用するconfig.yaml です。config.yamlのproject_config_pathはenv.yamlのmount_dir内にあるproject.yamlを指定します。

project_config_path: /tutorial/freemarker/project.yaml

VMを起動する

VMを起動するには、~/.aeromock/vagrantでvagrant upします。初回はAnsibleによるプロビジョニングが実行され、必要なソフトウェアがインストールされます。 vagrant-hostsupdaterによるhostsファイルの編集のため、途中でsudoを求められることがあります。

$ cd ~/.aeromock/vagrant
$ vagrant up

image

エラー無く終了すればプロビジョニング、起動が完了です。 image

VM上の動作を確認する

VMが起動すれば、VM上でAeromockが動作し、ローカルのテンプレートファイルやデータファイルを使ってそのままHTMLを出力できます。 VMの内部IPは192.168.33.30なので http://192.168.33.30/test でページが表示されるかを確認します。このときBasic認証を求められますが、env.yamlに定義したユーザー名・パスワードでログインしてください。

Vagrant Shareで外部に公開する

次にこの状態をVagrant Shareで外部に公開します。公開はvagrant shareコマンドを実行します。

$ cd ~/.aeromock/vagrant
$ vagrant share

このとき、Vagrant Shareのユーザー名とパスワードを求められるので入力します。緑文字でランダムなvagrantshare.comのサブドメインが表示されますが、これが公開先です。

image

公開されたURLでアクセスしてみましょう。

image

公開を終了するには、ターミナルでCtrl+Cシグナルを遅れば終了します。

VMを終了する

VMを終了するには以下のコマンドを実行します。

$ vagrant halt

Vagrantの様々な制御については、本家を参照してください。

注意点

  • env.yamlのBasic認証のパスワードはデフォルトのものを使用せず、自分だけが知りうるものに変更しましょう。途中でパスワードを変更する場合は、再度プロビジョニングが必要なので以下のコマンドでVMを起動します。
$ vagrant up --provision
  • Vagrant Shareで公開する内容について、機密情報等が含まれないよう注意をして扱ってください。SSLを扱いたい場合はこちらを参照してください。Aeromockとして、SSLをサポートする予定はありません。

~/.aeromock/vagrantの初期化

~/.aeromock/vagrantを初期化したい場合は、再度initVagrantを実行してください。Vagrantfile等の設定ファイルは、~/.aeromock/vagrant_backupにタイムスタンプ付きで保存されます。ただし、VMは物理的に削除されます。

aeromock-brewのVagrantfileやAnsibleのPlaybookが修正された場合、このオペレーションが必要になることがあります。

Clone this wiki locally