情報系人間のブログ

プログラミング、開発に関することを書いていきます。

Vagrantで AWS EC2インスタンスを立ち上げる

vagrantAWS EC2を立ち上げるメモ

はじめにvagantのプラグインをインストール

vagrant plugin install vagrant-aws
vagrant plugin install dotenv

.envファイルに以下のようにawsの認証情報を記述する。
AWS_SECURITY_GROUPにはセキュリティグループ名ではなくIDを記述する。

AWS_SSH_USERNAME="ec2-user"
AWS_SSH_KEY=xxxxxxxx.pem
AWS_ACCESS_KEY_ID=""
AWS_SECRET_ACCESS_KEY=""
AWS_KEYPAIR_NAME=""
AWS_SECURITY_GROUP="sg-xxxxxx" 
AWS_SUBNET_ID="subnet-xxxxxx"

Vagrantの内容は以下のとおり

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

Dotenv.load

ENV['VAGRANT_DEFAULT_PROVIDER'] = "aws"

VAGRANTFILE_API_VERSION = "2"

Vagrant.configure(VAGRANTFILE_API_VERSION) do |config|

  config.vm.provider :aws do |provider, override|
    override.vm.hostname          = "vagrant"
    override.vm.box_url           = "https://github.com/mitchellh/vagrant-aws/raw/master/dummy.box"
    override.vm.box               = "aws"
    override.ssh.username         = ENV['AWS_SSH_USERNAME']
    override.ssh.private_key_path = ENV['AWS_SSH_KEY']
    override.ssh.pty              = false

    provider.access_key_id        = ENV['AWS_ACCESS_KEY_ID']
    provider.secret_access_key    = ENV['AWS_SECRET_ACCESS_KEY']
    provider.keypair_name         = ENV['AWS_KEYPAIR_NAME']
    provider.region               = "ap-northeast-1" 
    provider.availability_zone    = "ap-northeast-1a"
    provider.ami                  = "ami-c9562fc8" 
    provider.instance_type        = "t1.micro"
    provider.instance_ready_timeout = 120
    provider.terminate_on_shutdown  = false

    provider.security_groups      = [
                                      ENV['AWS_SECURITY_GROUP'],
                                    ]

    provider.tags                 = {
                                      "Name"        => "vagrant",
                                      "Description" => "vagrant-aws",
                                    }

    provider.block_device_mapping = [{
                                      "DeviceName"              => "/dev/sda1",
                                      "VirtualName"             => "VagrantDisk",
                                      "Ebs.VolumeSize"          => "8",
                                      "Ebs.DeleteOnTermination" => true,
                                      "Ebs.VolumeType"          => "standard",
                                     }]

     provider.associate_public_ip = 'true'

     provider.subnet_id            = ENV['AWS_SUBNET_ID']
     provider.private_ip_address   = "x.x.x.x"
     provider.elastic_ip           = false

    override.vm.synced_folder "./", "/vagrant", disabled: true

  end

end

最後にvagrant upする。

vagrant up --provider=aws