chef実践入門　実機にて実施メモ（4） vagrantでAWSを利用する

[Chef実践入門](http://www.amazon.co.jp/dp/477416500X "Chef実践入門") 第5章のvagrantによるクックブック開発環境の構築　5.6 VagrantでAmazonEC2を利用する　を実機にて検証したメモ
***この部分はchefはあまり関係ない***

#0.環境前提
MacOSX vagrant インストール済み

#1.vagrant-awsプラグインのインストール

```bash:
vagrant plugin install vagrant-aws
vagrant plugin list
```

#2.dummyboxのインストール
Amazon EC2をVagrantで利用する際にはdummyboxという　AMIを利用する為のboxが必要となる。以下コマンドでbox追加する。

```bash:
vagrant box add dummy https://github.com/mitchellh/vagrant-aws/raw/master/dummy.box
#確認
vagrant box list 
```

#3.AWSでセキュリティグループとキーペアの作成

##(1)AWSのマネジメントコンソールで自IPからSSH接続可能なセキュリティグループを作成
 ![Kobito.J7A67M.png](https://qiita-image-store.s3.amazonaws.com/0/72578/46983672-ff72-90a0-ef11-f2aa91834585.png "Kobito.J7A67M.png")
 

##(2)キーペアを作成
　 ![Kobito.K4UVV0.png](https://qiita-image-store.s3.amazonaws.com/0/72578/b57f7b6f-435d-932b-fd60-d910bcb445fc.png "Kobito.K4UVV0.png")
　 ダウンロードされたキーペアを適当な場所に保管する。
　 
#4.zshをこの期にインストール

##(1)HomeBrewでインストールしてデフォルトシェルに設定

	```bash:
	brew install zsh
	vi /etc/shells 
	```
	
	```bash:etc/shells
	#最終行に以下追加
	/usr/local/bin/zsh
	```
	
	デフォルトシェルをbashからzshに変更
	
	```bash:
	chsh -s /usr/local/bin/zsh
	```

    ＊この後ターミナルに入れなくなるトラブル発生。[こちら](http://umegusa.hatenablog.jp/entry/2012/07/21/155637 "こちら")を参考に解決
    
##(2)~/.zprofileに環境変数を設定
	
	```bash:~/.zprofile
	export AWS_ACCESS_KEY_ID=XXX
	export AWS_SECRET_KEY=XXX
	export AWS_KEYPAIR_NAME=chef_practical_guide
	export AWS_PRIVATE_KEY_PATH=XXX
	```
	
	+ sourceコマンドで読み込み
	
	```zsh:
	source ~/.zprofile
	#確認
	echo $AWS_ACCESS_KEY_ID
	```
	
#5.VagrantからEC2インスタンスを起動する設定

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

# All Vagrant configuration is done below. The "2" in Vagrant.configure
# configures the configuration version (we support older styles for
# backwards compatibility). Please don't change it unless you know what
# you're doing.
VAGRANTFILE_API_VERSION = "2"
Vagrant.configure(VAGRANTFILE_API_VERSION) do |config|

config.vm.box = "dummy"
ssh_username = "ec2-user"
region = "ap-northeast-1"
ami = "ami-cbf90ecb"
security_groups = "chef_practical_guide"
instance_type = "t2.micro"

# AWS設定
  config.vm.provider :aws do |provider, override|
    # AWS認証情報
    provider.access_key_id          = ENV['AWS_ACCESS_KEY_ID']
    provider.secret_access_key      = ENV['AWS_SECRET_KEY']
    provider.keypair_name           = ENV['AWS_KEYPAIR_NAME']

    # EC2インスタンスの設定
    provider.region                 = region

    # Amazon LinuxのAMIを指定
    provider.ami                    = ami

    provider.instance_type          = instance_type
    provider.instance_ready_timeout = 120
    provider.terminate_on_shutdown  = false

    # セキュリティグループ
    provider.security_groups        = [security_groups]
    # タグ（任意）。インスタンスに分かりやすい目印を付けたい場合。
    provider.tags                   = {
      "Name"        => "vagrant-aws",
      "Description" => "Boot from vagrant-aws",
    }


    # AWSへの接続ユーザおよび秘密鍵の指定
    override.ssh.username = ssh_username
    override.ssh.private_key_path   = ENV['AWS_PRIVATE_KEY_PATH']
    override.ssh.pty = true
  end 
end

```

#6.EC2インスタンスの起動 (vagrantup.logにlog出力）
VAGRANT_LOG=info vagrant up --provider=aws > &vagrantup.log

#7.確認
AWSのマネジメントコンソールでインスタンス起動確認　＆ssh 接続確認 , vagrant haltでAWSのEC2インスタンスが停止する事も確認