Chocolatey + VirtualBox + Vagrant の簡単セットアップ （Windows）

## 10分でセットアップできる簡単手順 :smile: 
### Windows8 に Vagrantを入れてみる,そしてGitHubにアクセス
最近は、LAMP環境も使い捨てというかCIツール(Jekinsとか）と組み合わせてテスト駆動型で仮想環境を作成・破棄なんていうのが流行っていたりもしますが、Vagrant 使うとさっくり仮想環境（以下 VM）を作成できるよというので試してみました。また作成した Vagrant 環境から Github にアクセスできるようにしてみます。

## Vagrant の設定
### Chocolatey の導入
[Chocolatey](https://chocolatey.org/)は、Windows版 yum っていう感じのコマンドラインからアプリをインストールできるパッケージ管理システムです。これを導入しておくといちいちアプリをぐぐったりしなくていいのとバージョンアップも簡単ですのでまずはインストールします。

1. [https://chocolatey.org/](https://chocolatey.org/)サイトに行き、dos窓用(C:\> のやつ)をコピーする。
2. dos窓を表示する。
3. ペーストしてコマンドを実行する。

### VirtualBox と Vagrant の導入
導入した[Chocolatey](https://chocolatey.org/)で VirtualBox と Vagrant をインストールします。バージョンについては、特に気になければChocolateyのライブラリにある最新パッケージが適用されます。
dos窓を開いて、下記のコマンドを叩くだけ。

```
C:\> cinst virtualbox
C:\> cinst vagrant
```

### ゲストOSをインストールする
[Vagrant公式サイト](http://www.vagrantbox.es/) からインストール対象のゲストOSを選択しておきます。また Vagrant で作成するVMは、 **Windowsローカルのディレクトリ単位で作成** されるため適当なディレクトリでVagrantでVM作成するとインスタンスが沢山されてしまうので注意（ディスクも沢山あるなら気にしないでいいけどねｗ）。
まずは、VM としてCentOSを起動してみる

* [Chef](http://www.getchef.com/chef/) ,[Puppet](http://puppetlabs.com/) が始めからインストールされていない素の CentOS 6.5 x86_64(2014/5時点で) を入れてみます。※Chef, Puppet は、後記するので「ふーんー」位で流しておいてok
* vagrantの公式ドキュメントをみておく。

 ```
 $ vagrant box add {title} {url}
 $ vagrant init {title}
 $ vagrant up
 ```
* 実際のコマンド（これだけ）

 ```
C:\> cd C:\Users\<user名>
C:\> mkdir vagrant
C:\> cd vagrant
C:\> vagrant box add centos6.5 https://github.com/2creatives/vagrant-centos/releases/download/v6.5.3/centos65-x86_64-20140116.box
C:\> vagrant init centos6.5
C:\> vagrant up
 ```

### ゲストOSにアクセスしてみる
「vagrant up」コマンド実行後、下記のように表示されていることを確認する。

```
Host: 127.0.0.1
Port: 2222
Username: vagrant
Private key: C:/Users/<user名>/.vagrant.d/insecure_private_key
```

ターミナルソフト teraterm, putty などでゲストOSにアクセスしてみます。

```
Host: 127.0.0.1
Port: 2222
id:vagrand ← pw も同じ
```
### 複数のVMを起動してみる
用途に応じたVMを複数起動したい場合は、```Vagrantfile``` に以下のように記述する。Vagrant起動ホスト（ここでは、windows）の、port:2222, 2223 に それぞれ web1, web2 の ssh(22)を forward する定義として記述してみる。

```lang:Vagrantfile
Vagrant.configure("2") do |config|
  config.vm.box = "CentOS6.5"
  config.vm.box_url = "https://github.com/2creatives/vagrant-centos/releases/download/v6.5.3/centos65-x86_64-20140116.box"
 
  config.vm.define :web1 do |web1|
    web1.vm.network :forwarded_port, guest: 22, host: 2222, host_ip: "127.0.0.1", id: "ssh", auto_correct: true
  end
 
  config.vm.define :web2 do |web2|
    web2.vm.network :forwarded_port, guest: 22, host: 2223, host_ip: "127.0.0.1", id: "ssh", auto_correct: true
  end
end
```

web1, web2 を起動してみる。コマンドは ```vargrant up web1``` ```vargrant up web2```

web1, web2 にアクセスしてみる。

```
web1 Host: 127.0.0.1, Port: 2222
web2 Host: 127.0.0.1, Port: 2223
```

明示的にプライベートネットワークアドレスを設定したい場合、プライベートネットワークアドレスの指定を追加

```
web1.vm.network :private_network, ip: "192.168.1.11"
web2.vm.network :private_network, ip: "192.168.1.12"
```

## vagrant コマンド
起動コマンド ```vagrant up```
終了コマンド ```vagrant halt```
仮想環境box ```vagrant box list```
仮想環境の状態 ```vagrant status```
環境を破棄したいとき ```vagrant destroy```

##  ここまで10分…とはいわないけど
Chocolatey の導入とVagrant 10分では無理かもしれないけど、20分あれば簡単に作れると思います。

# 古いChocolateyから最新版にアップデートしたときの不具合

```
The default install location has been changed to 'C:\ProgramData\chocolatey'.
This install will be updated to that location in the next version. It
is strongly suggested you move this installation to the new location
as soon as possible to limit write access from all users. Do not forget
to update PATH & ChocolateyInstall environment variables.
```

のエラーというか間違ってるぜいわれるので、下記を参照にしながら対処する。
https://github.com/chocolatey/chocolatey/wiki/Migrate-Old-Chocolatey-Directory-to-ProgramData