-
Notifications
You must be signed in to change notification settings - Fork 11
03.09.Vagrant Share
ローカルのAeromockをVagrant Shareを使って一時的に外部公開するための手順です。スマートフォンで即座に実機確認したい場合に便利です。
VagrantとVirtualBoxをインストールしてください。MacOSであれば、homebrewでのインストールを推奨します。
- Vagrant >= 1.5
- VirtualBox >= 4.3
以下のプラグインをインストールします。
sahara はVMの状態を特定の時点にロールバックすることができるので、必要に応じて利用してください。
$ vagrant plugin install sahara
vagrant-hostsupdater はVagrantによるVM起動時に、VMのinternal IPをローカルの/etc/hosts
に追加してくれます。
$ vagrant plugin install vagrant-hostsupdater
Vagrant Shareを利用するには、Vagrant Cloud へのサインアップが必要です。
まず、aeromock-brewのinitVagrant
コマンドを実行します。
$ cd /path-to-path/aeromock-brew
$ ./gradlew initVagrant
~/.aeromock/vagrant
というディレクトリが作成されます。このディレクトリには以下のファイル・ディレクトリが作成されます。
- Vagrantfile
- ansible/
- config.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_dir
、mount_dir
の設定です。
~/path-to-path/aeromock/tutorial
をVMにマウントしたいのでshare_dir
はそれをそのまま設定します。
share_dir: ~/path-to-path/aeromock/tutorial
mount_dir
はshare_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
~/.aeromock/vagrant/config.yaml
は VM上で動作するAeromockが利用するconfig.yaml です。config.yamlのproject_config_path
はenv.yamlのmount_dir
内にあるproject.yamlを指定します。
project_config_path: /tutorial/freemarker/project.yaml
VMを起動するには、~/.aeromock/vagrantでvagrant up
します。初回はAnsibleによるプロビジョニングが実行され、必要なソフトウェアがインストールされます。
vagrant-hostsupdaterによるhostsファイルの編集のため、途中でsudoを求められることがあります。
$ cd ~/.aeromock/vagrant
$ vagrant up
エラー無く終了すればプロビジョニング、起動が完了です。
VMが起動すれば、VM上でAeromockが動作し、ローカルのテンプレートファイルやデータファイルを使ってそのままHTMLを出力できます。
VMの内部IPは192.168.33.30
なので http://192.168.33.30/test でページが表示されるかを確認します。このときBasic認証を求められますが、env.yaml
に定義したユーザー名・パスワードでログインしてください。
次にこの状態をVagrant Shareで外部に公開します。公開はvagrant share
コマンドを実行します。
$ cd ~/.aeromock/vagrant
$ vagrant share
このとき、Vagrant Shareのユーザー名とパスワードを求められるので入力します。緑文字でランダムなvagrantshare.comのサブドメインが表示されますが、これが公開先です。
公開されたURLでアクセスしてみましょう。
公開を終了するには、ターミナルでCtrl+C
シグナルを遅れば終了します。
VMを終了するには以下のコマンドを実行します。
$ vagrant halt
Vagrantの様々な制御については、本家を参照してください。
- env.yamlのBasic認証のパスワードはデフォルトのものを使用せず、自分だけが知りうるものに変更しましょう。途中でパスワードを変更する場合は、再度プロビジョニングが必要なので以下のコマンドでVMを起動します。
$ vagrant up --provision
- Vagrant Shareで公開する内容について、機密情報等が含まれないよう注意をして扱ってください。SSLを扱いたい場合はこちらを参照してください。Aeromockとして、SSLをサポートする予定はありません。
~/.aeromock/vagrant
を初期化したい場合は、再度initVagrant
を実行してください。Vagrantfile等の設定ファイルは、~/.aeromock/vagrant_backup
にタイムスタンプ付きで保存されます。ただし、VMは物理的に削除されます。
aeromock-brewのVagrantfileやAnsibleのPlaybookが修正された場合、このオペレーションが必要になることがあります。