目的
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
参考情報
構築手順:概要
- Vagrant インストール
- Vagrant のAWS 用プラグインをインストール = vagrant plugin install [plugin-name]
- AWS EC2 用の Dummy Box を入手 = vagrant box add dummy [URL]
- AWS EC2 用の Dummy Box を初期化 = vagrant init
- Vagrantfile を EC2 用に修正 = vi Vagrantfile
- 仮想サーバ起動 & 作成 = vagrant up
- 仮想サーバへssh 接続 = vagrant ssh
- 仮想サーバ停止 = vagrant halt
- 仮想サーバ削除 = vagrant destroy
構築手順:詳細
Vagrant インストール
※ RubyGems(gem) でインストールすると、古いv.1.0 系しかダウンロードされないため、v.1.1系(他の仮想マシンにも対応するプラグイン構成版)以降は、パッケージ インストールする。
- Vagrant HP にアクセス
- インストーラをダウンロード
- Windows版インストーラ:Vagrant_1.2.3.msi
- Mac版インストーラ:Vagrant-1.2.3.dmg
- ダウンロードした インストーラ(e.g. Vagrant_1.2.3.msi) を起動
- インストール完了後、コマンドプロンプトで、以下のように表示されることを確認
$ 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 される。