Vagrantで AWS EC2インスタンス(RHEL5.5)を作成する

  • 49
    いいね
  • 1
    コメント
この記事は最終更新日から1年以上が経過しています。

目的

Vagrant のAWS-Provider (プラグイン) を使用して、AWS EC2 インスタンス(RHEL5.5)を作成する。

クライアントは、Windows7 とMacOSXです(本文中のパスはWindowsで記載してありますが、Macでも適宜置き換えれば特に問題ないと思います)。


前提条件

環境

作業前

  • OS: Windows 7 Home Premium、MacOSX 10.8.5
  • Vagrant: 1.2.4

作業後(※差異部のみ記載)

  • vagrant-aws: 0.2.2

参考情報


構築手順:概要

  1. Vagrant インストール
  2. Vagrant のAWS 用プラグインをインストール = vagrant plugin install [plugin-name]
  3. AWS EC2 用の Dummy Box を入手 = vagrant box add dummy [URL]
  4. AWS EC2 用の Dummy Box を初期化 = vagrant init
  5. Vagrantfile を EC2 用に修正 = vi Vagrantfile
  6. 仮想サーバ起動 & 作成 = vagrant up
  7. 仮想サーバへssh 接続 = vagrant ssh
  8. 仮想サーバ停止 = vagrant halt
  9. 仮想サーバ削除 = vagrant destroy

構築手順:詳細

Vagrant インストール

※ RubyGems(gem) でインストールすると、古いv.1.0 系しかダウンロードされないため、v.1.1系(他の仮想マシンにも対応するプラグイン構成版)以降は、パッケージ インストールする。

  1. Vagrant HP にアクセス
  2. インストーラをダウンロード
    • Windows版インストーラ:Vagrant_1.2.3.msi
    • Mac版インストーラ:Vagrant-1.2.3.dmg
  3. ダウンロードした インストーラ(e.g. Vagrant_1.2.3.msi) を起動
  4. インストール完了後、コマンドプロンプトで、以下のように表示されることを確認
$ vagrat --version  
Vagrant version 1.2.3

Vagrant のAWS-Provider インストール

$ vagrant plugin install vagrant-aws
$ vagrant plugin list
vagrant-aws (0.2.2)

AWS EC2 用のDummyBox 取得&初期化

AWS EC2を利用する場合、OS のイメージは必要ないが、Vagrant Box は必要なのでダミーを用意する。

$ vagrant box add dummy https://github.com/mitchellh/vagrant-aws/raw/master/dummy.box
$ vagrant box list
dummy                               (aws)

Vagrant Box 用ディレクトリ作成

$ mkdir -p /c/_/data/vagrant-aws-test/

Vagrant Box 初期化 → Vagrantfile 作成

vagrant init した場所(Vagrantfile がある場所)に対して操作する。

$ cd /c/_/data/vagrant-aws-test/
$ vagrant init

Vagrantfile 修正

$ vi /c/_/data/vagrant-aws-test/Vagrantfile
Vagrantfile
Vagrant.configure("2") do |config|
  config.vm.box = "dummy"

  config.vm.provider :aws do |aws, override|
    aws.access_key_id = 'アクセスキーID'
    aws.secret_access_key = 'シークレットキーID'
    aws.region = 'ap-northeast-1'
    aws.instance_type = 't1.micro'    
    aws.ami = 'ami-3ddd543c'
    aws.security_groups = ['仮想マシンに設定するセキュリティグループ名']
    aws.keypair_name = '仮想マシンに設定するキーペア名'
    aws.tags = { 
      'Name' => 'サーバ名等、EC2インスタンスの名前に相当する名称'
    }
    # aws.use_iam_profile = ''
    # aws.subnet_id = ''
    # aws.private_ip_address = ''
    override.ssh.username = "root"
    override.ssh.private_key_path = 'pvivatekey(*.pem)のフルパス'

  end
end

各属性の調べ方

TODO: 後で書く

  • access_key_id, secret_access_key:
  • region:
  • availability_zone:
  • instance_type:
  • ami:
  • security_groups:
  • keypair_name:
  • tags:
    • Name: サーバ名に該当する名称
    • その他Tag: 任意で定義する
  • ssh.username:
  • ssh.private_key_path:

vagrant 起動(= 仮想サーバ作成)

$ vagrant up --provider=aws

※ もう一回同じコマンドを打ったらどうなるか?

* → 既に作られている。と表示される。
* → 作り直したい場合は、$ vagrant destroy してから、もう一度 vagrant up --provider=aws すればOK

Bringing machine 'default' up with 'aws' provider...
[default] The machine is already created.

作成した仮想サーバにssh 接続

$ vagrant ssh

これで、public DNS を意識せずにssh 接続できる。

作成した仮想サーバを停止

$ vagrant halt

※ただし、まだ対応されていない(2013/08/06時点)。

以下のエラーメッセージが表示される。

なので、停止したい場合は、以下の方法で停止する。
* 対象仮想マシン上で直接、shutdown -h now などOSのシャットダウンコマンドで停止する
* AWS Management Console で停止する

$ vagrant halt
Vagrant attempted to call the action 'halt' on the provider
'AWS (i-78438a7d)', but this provider doesn't support this action. This
is probably a bug in either the provider or the plugin calling this
action, and should be reported.

作成した仮想サーバを削除

$ vagrant destroy

これで、Terminate される。