Vagrant share を使ってみる

# Vagrant share とは？
* HTTP 経由で Vagrant にアクセスする機能
    * ブラウザから Vagrant の 80 ポートにアクセスできるようになる
* Vagrant 1.5 から使用可能

# 使用条件
* Vagrant は version 1.5 以上であること
* login と share の plugin があること
    * Vagrant が 1.5 以上ならデフォルトで入っているよう
* Vagrant cloud のアカウントを作成しておくこと

## version と plugin の確認
```bash
$ vagrant -v                    
Vagrant 1.6.3
# plugin リストも確認
# login と share があること
$ vagrant plugin list
vagrant-login (1.0.1, system)
vagrant-omnibus (1.4.1)
vagrant-share (1.1.0, system)
```

# Vagrant cloud
## Vagrant cloud とは
* vagrant の Box 共有サイト

## アカウント作成

![スクリーンショット 0026-09-04 21.46.25.png](https://qiita-image-store.s3.amazonaws.com/0/28573/ecfb7bda-af83-a5a2-a9f5-40b9292f1471.png)

* 以下からアカウントを作成しておく
    * https://vagrantcloud.com/account/new

* Box を探す
    * ディストリビューションなどをキーワードに検索

![スクリーンショット 0026-09-04 21.53.12.png](https://qiita-image-store.s3.amazonaws.com/0/28573/bf5a5c8d-8020-5d04-f113-51a176ade22f.png)


# Vagrant box の取得と起動
## Vagrant box の取得
* コマンドのコピー
    * 下記図参照

![スクリーンショット 0026-09-04 22.54.47.png](https://qiita-image-store.s3.amazonaws.com/0/28573/08ad5270-1724-24e9-d1eb-d4a6d512759d.png)

* ターミナルに貼り付け

```bash
$ vagrant init chef/ubuntu-14.04
A `Vagrantfile` has been placed in this directory. You are now
ready to `vagrant up` your first virtual environment! Please read
the comments in the Vagrantfile as well as documentation on
`vagrantup.com` for more information on using Vagrant.
```

## Vagrantfile の修正

```rb:Vagrantfile
# -*- mode: ruby -*-
# vi: set ft=ruby :

# Vagrantfile API/syntax version. Don't touch unless you know what you're doing!
VAGRANTFILE_API_VERSION = "2"

Vagrant.configure(VAGRANTFILE_API_VERSION) do |config|
  # All Vagrant configuration is done here. The most common configuration
  # options are documented and commented below. For a complete reference,
  # please see the online documentation at vagrantup.com.

  # Every Vagrant virtual environment requires a box to build off of.
  config.vm.box = "chef/ubuntu-14.04"

  config.vm.provision "shell", inline: <<-EOT
    apt-get update
    apt-get install -y nginx
    /etc/init.d/nginx start
  EOT

  # Create a forwarded port mapping which allows access to a specific port
  # within the machine from a port on the host machine. In the example below,
  # accessing "localhost:8080" will access port 80 on the guest machine.
  config.vm.network "forwarded_port", guest: 80, host: 8080

  # Create a private network, which allows host-only access to the machine
  # using a specific IP.
  config.vm.network "private_network", ip: "192.168.33.10"
end
```
* provision を追加
    * 起動時に Nginx をインストールするようにする
* Vagrantfile を修正したら Vagrant を起動

```bash
$ vagrant up
```


# Vagrant share

* Vagrant cloud のアカウントでログイン

```bash
$ vagrant login
In a moment we'll ask for your username and password to Vagrant Cloud.
After authenticating, we will store an access token locally. Your
login details will be transmitted over a secure connection, and are
never stored on disk locally.

If you don't have a Vagrant Cloud account, sign up at vagrantcloud.com

Username or Email: <username>
Password (will be hidden): 
You're now logged in!
```

* share コマンド実行

```bash
$ vagrant share
==> default: Detecting network information for machine...
    default: Local machine address: 192.168.33.10
    default: Local HTTP port: 80
    default: Local HTTPS port: disabled
==> default: Checking authentication and authorization...
==> default: Creating Vagrant Share session...
    default: Share will be at: dreadful-crow-4826
==> default: Your Vagrant Share is running! Name: dreadful-crow-4826
==> default: URL: http://dreadful-crow-4826.vagrantshare.com
```

* 一番下の URL にブラウザからアクセスすると "Welcome to nginx!" のページが見れる

![スクリーンショット 0026-09-05 22.38.21.png](https://qiita-image-store.s3.amazonaws.com/0/28573/3462ec27-e2b6-2cca-4b65-d89069c201a0.png)

* Ctrl + c で vagrant share を終了