vagrant-digitaloceanを利用してDigitalOceanでCentOS7を起動したい

## 概要
スマートフォンのテザリング環境でvagrantを使ってローカルでCentOS7の検証をしていたのですが、新しいVMを作成してyum updateを実行するごとに月の残容量がガリガリ削られて検証することが億劫になっていました。vagrant-digitaloceanを使ってリモートのDigitalOcean上にVMを作りそこで検証すれば、月の通信残量にはほとんど影響がなくなります。

Mac(Mavericks)でvagrant-digitaloceanを利用してDigitalOceanでCentOS7を起動するための手順です。Vagrantfileは[vagrant-docker-digitalocean](https://github.com/glidenote/vagrant-docker-digitalocean)を参考にしています。(2015年1月現在の方法です)

## 事前準備

- Vagrantインストール
  - 最新バージョン推奨。古いとプラグインを入れるときにNokogiriのインストールでコケます。
  - Vagrantインストールまでは[Docker Hello World](http://www.slideshare.net/Ftakao2007/docker-hello-world)を参照してください。
- [DigitalOcean](https://www.digitalocean.com/)にアカウントを作成

## 作業内容

### プラグインのインストール
```
### vagrant-digitaloceanのインストール
$ vagrant plugin install vagrant-digitalocean

### 共有ディレクトリを利用するためのプラグインインストール(任意)
$ vagrant plugin install vagrant-vbguest
```

### SSH鍵の作成と登録
[DigitalOcean](https://www.digitalocean.com/)に公開鍵を登録します。
ここでは「MyMac vagrant-digitalocean.pem.pub」という名前で登録しました。

```
### SSH鍵の作成
$ ssh-keygen -t rsa -b 4096 -f ~/.ssh/vagrant-digitalocean.pem
$ chmod 600 ~/.ssh/vagrant-digitalocean.pem
$ chmod 644 ~/.ssh/vagrant-digitalocean.pem.pub

### catして表示される内容を登録
$ cat ~/.ssh/vagrant-digitalocean.pem.pub
===============================================
ssh-rsa AAAA(中略)4Rw== ftakao2007@ftakao2007mac
===============================================
```


### 証明書の作成
Vagrantfileのprovider.ca_pathに設定します。

```
### 証明書の作成
$ ruby -ropenssl -e "p OpenSSL::X509::DEFAULT_CERT_FILE"
===============================================
"/usr/local/etc/openssl/cert.pem"
===============================================
```

### Vagrantfile作成
```
### 作業ディレクトリを作成して移動。任意の場所でOK。
$ mkdir -p ~/work/vagrant/vagrant-digitalocean
$ cd ~/work/vagrant/vagrant-digitalocean

### Vagrantfileを作成
$ vi Vagrantfile
===========================================
Vagrant.configure('2') do |config|
  config.vm.hostname              = 'ftakao2007.foobar.com'  # 好きなhostnameに変更

  config.vm.provider :digital_ocean do |provider, override|
    provider.client_id            = '90(中略)b3'  # https://cloud.digitalocean.com/api_access で取得したclient_id(Client ID)を指定
    provider.api_key              = '92(中略)84'    # https://cloud.digitalocean.com/api_access で取得したapi_key(API Key)を指定
    provider.ssh_key_name         = 'MyMac vagrant-digitalocean.pem.pub'    # https://cloud.digitalocean.com/ssh_keys   で設定したSSH鍵名を指定
    provider.token                = '4d(中略)bd'      # https://cloud.digitalocean.com/settings/applications  で設定したtoken(Personal Access TokensのGenerate New Tokenで作成したもの)を指定

    override.ssh.private_key_path = '~/.ssh/vagrant-digitalocean.pem'
    override.vm.box               = 'digital_ocean'
    override.vm.box_url           = "https://github.com/smdahlen/vagrant-digitalocean/raw/master/box/digital_ocean.box"

    provider.image                = 'centos-7-0-x64'
    provider.region               = 'sgp1'
    provider.size                 = '512MB'
    provider.ca_path              = '/usr/local/etc/openssl/cert.pem'
  end
end
===========================================
```

### Dropletを起動
```
$ vagrant up --provider=digital_ocean
===========================================
Bringing machine 'default' up with 'digital_ocean' provider...
==> default: Using existing SSH key: MyMac vagrant-digitalocean.pem.pub
==> default: Creating a new droplet...
==> default: Assigned IP address: 128.199.XXX.XXX
==> default: Private IP address: 10.130.XXX.XXX
==> default: Modifying sudoers file to remove tty requirement...
==> default: Rsyncing folder: /Users/ftakao2007/work/vagrant/vagrant-digitalocean/ => /vagrant...
===========================================

$ vagrant status
===========================================
Current machine states:

default                   active (digital_ocean)

active
===========================================

$ vagrant ssh
[root@ftakao2007 ~]# cat /etc/redhat-release
===========================================
CentOS Linux release 7.0.1406 (Core)
===========================================
```

### Webから確認
![スクリーンショット 2015-01-18 19.29.48.png](https://qiita-image-store.s3.amazonaws.com/0/20474/b6f77012-bfb2-40bf-126f-56b6550fc10c.png)

### Droplet削除
```
[root@ftakao2007 ~]# exit
$ vagrant destroy
===========================================
    default: Are you sure you want to destroy the 'default' VM? [y/N] y
==> default: Destroying the droplet...
===========================================

$ vagrant status
===========================================
Current machine states:

default                   not_created (digital_ocean)

not_created
===========================================
```

## リンク
- [MacからVagrantコマンド一発でSSDなVPS(DigitalOcean)上にCentOS6.5+Docker環境を構築する](http://blog.glidenote.com/blog/2013/12/20/vagrant-docker-digitalocean/)
- [vagrantではじめるクラウド開発環境（DigitalOcean編）](http://qiita.com/msykiino/items/d45cab7f520a3288862a)
- [Digital Oceanのvagrant upでSSL errorが出た時の対応](http://iwashi.co/2014/05/06/digital-oceanvagrant-upssl-errorrbenv/)