EC2はよく使ってるし、似たようなインスタンスを生成することもしばしばなので、そろそろ自動化を進めたいなーというところでVagrantからEC2インスタンスを生成してみた。
環境
Mac OSX 10.9 Marvericks
Vagrant 1.3.5
AMI: Amazon Linux PV EBS-Backed 64bit
サクっとインスタンス作っちゃう
こちらのエントリなどを参考にさせていただきました。
http://dev.classmethod.jp/cloud/aws/vagrant-aws-configspec/
vagrantのインストールは以前にやっているので飛ばしますね。
http://j-caw.co.jp/blog/?p=945
http://docs.vagrantup.com/v2/installation/index.html
vagrant-awsプラグインをインストールします。
1 |
$ vagrant plugin install vagrant-aws |
作業ディレクトリ、Vagrantfileを作成します。
1 2 3 |
$ mkdir vagrant_aws $ cd vagrant_aws/ $ vagrant init |
Vagrantfile
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 |
Dotenv.load VAGRANTFILE_API_VERSION = "2" Vagrant.configure(VAGRANTFILE_API_VERSION) do |config| config.vm.box = "dummy_for_ec2" # dummyのbox config.vm.box_url = "https://github.com/mitchellh/vagrant-aws/raw/master/dummy.box" # dummyのbox config.vm.synced_folder ".", "/vagrant", disabled: true config.vm.provider :aws do |aws, override| aws.access_key_id = ENV['ACCESS_KEY_ID'] aws.secret_access_key = ENV['SECRET_ACCESS_KEY'] aws.keypair_name = ENV['KEY_PAIR_NAME'] aws.region = "ap-northeast-1" # Tokyoリージョン aws.ami = "ami-c9562fc8" # Amazon Linux PV EBS-Backed 64bit aws.instance_type = "t1.micro" # microインスタンス aws.security_groups = ["https", "ssh"] # 割り当てるセキュリティグループ aws.elastic_ip = true # 自動的にElastic IPを取得して割り当てる override.ssh.username = "ec2-user" # Amazon Linuxの場合はec2-user override.ssh.private_key_path = "~/.ssh/id_rsa" end end |
1 |
$ vagrant up --provider=aws |
こんな感じのエラーが出ても、一応問題なくインスタンスは起動しているっぽい。
1 2 3 4 5 6 |
The following SSH command responded with a non-zero exit status. Vagrant assumes that this means the command failed! mkdir -p '/vagrant' Stdout from the command: |
Vagrantfileに下記を入れたらエラーは消えた。
1 |
config.vm.synced_folder ".", "/vagrant", disabled: true |
ちなみに、AWSのACCESS_KEYなどはバージョン管理から外したいのでdotenvを使っています。Railsではおなじみのgemですが、vagrantのプラグインとしても提供されています。
1 |
$ vagrant plugin install dotenv |
Vagrantfileのあたまの方に追記。
1 |
Dotenv.load |
1 |
$ vim .env |
1 2 3 |
ACCESS_KEY_ID = "<AWS_ACCESS_KEY_ID>" SECRET_ACCESS_KEY = "<AWS_SECRET_ACCESS_KEY>" KEY_PAIR_NAME = "<AWS_KEY_PAIR_NAME>" |
EC2インスタンスにssh出来ればOK。
1 |
vagrant ssh |
サクっといけちゃいましたね!
The following two tabs change content below.

原田 敦
日本CAWのエンジニア。もふもふ部の部長。得意分野はRuby on Railsを使った小規模WEBアプリケーションを高速で開発すること。週末の楽しみは一人お菓子パーティー。三度の飯より小動物をもふもふするのが好きです。

最新記事 by 原田 敦 (全て見る)
- Rails Engineでブログ機能追加するgemを作る - 2015年3月15日
- WEBエンジニア一人だけでサービスを作りきる方法-夫婦のための自動ごはん予定お知らせサービス「GoHaaan」制作でやったこと - 2015年3月7日
- CentOS6でMariaDBのDynamic Columnsを試してみた - 2015年2月28日