AWS準備
AWSアカウントを作成
AWSクラウドのご利用開始方法にアクセスしてアカウントを作成する。
以降の作業はAWS Management Consoleで行う。
リージョンを選択
Tokyoリージョンを選択する。
グループを追加する
AWS - IAM Management Console - Groupで vagrant
グループを追加する。
- Create New Groupを選択する
- Group Nameに
vagrant
を設定する - Select Policy Templateは
Power User Access
選択する
ユーザを追加する
AWS - IAM Management Console - Userで vagrant
ユーザを追加する。
- Create New Usersを選択する
- Enter User Namesに
vagrant
を設定する - 追加後
access_key_id
とsecret_access_key
が表示されるので記録する-
secret_access_key
は二度と確認できないので注意!
-
セキュリティグループを追加する
AWS - EC2 Management Console - SecurityGroupで vagrant
セキュリティグループを追加する。
- Create Security Groupを選択する
- 基本情報を設定する
- GroupName - vagrant
- Description - sg-vagrant
- VPC - デフォルトVPC(*がついているもの)
- Security group rulesのInboundに以下を追加する
- SSH, TCP, 22, 0.0.0.0/0
- HTTP, TCP, 80, 0.0.0.0/0
- HTTPS, TCP, 443, 0.0.0.0/0
キーペアを追加する
AWS - EC2 Management Console - Key Pairsで vagrant
キーペアを追加する。
- Create Key Pairを選択する
- Key pair nameに
vagrant
を設定してCreateを押す
生成後、vagrant.pem
がダウンロードできる。
${HOME}/.ssh/vagrant.pem
に配置する。
Vagrant準備
インストール
公式サイトからインストーラをダウンロードしてインストールする。
Pluginをインストール
以下のコマンドを実行する。
$ vagrant plugin install vagrant-aws
$ vagrant plugin install dotenv
VagrantでAWSの仮想マシンを立ち上げる
作業ディレクトリを作成
どこでもいいので適当に作成する。
以下の作業は、作成したディレクトリで行う。
.envファイルを追加する
dotenvプラグインを使って環境変数を設定する。
.env
AWS_SSH_USERNAME="ec2-user"
AWS_SSH_KEY=${HOME}/.ssh/vagrant.pem
AWS_ACCESS_KEY_ID="置き換える"
AWS_SECRET_ACCESS_KEY="置き換える"
AWS_KEYPAIR_NAME="vagrant"
AWS_SECURITY_GROUP="vagrant"
Vagrantfileを追加する
立ち上げる仮想マシンの情報を設定する。
Vagrantfile
# -*- mode: ruby -*-
# vi: set ft=ruby :
Dotenv.load
# change default provider to digital_ocean
ENV['VAGRANT_DEFAULT_PROVIDER'] = "aws"
# Vagrantfile API/syntax version. Don't touch unless you know what you're doing!
VAGRANTFILE_API_VERSION = "2"
Vagrant.configure(VAGRANTFILE_API_VERSION) do |config|
config.vm.provider :aws do |provider, override|
override.vm.hostname = "vagrant-test"
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" # Tokyo
provider.availability_zone = "ap-northeast-1c" # Tokyo
provider.ami = "ami-c9562fc8" # Tokyo Amazon Linux AMI 2014.03 (64-bit)
provider.instance_type = "t1.micro"
provider.instance_ready_timeout = 120
provider.terminate_on_shutdown = false
provider.security_groups = [
ENV['AWS_SECURITY_GROUP'], # sg-vagrant
]
provider.tags = {
"Name" => "vagrant-test",
"Description" => "Boot from vagrant-aws",
}
provider.block_device_mapping = [{
"DeviceName" => "/dev/sda1",
"VirtualName" => "VagrantDisk",
"Ebs.VolumeSize" => "8",
"Ebs.DeleteOnTermination" => true,
"Ebs.VolumeType" => "standard",
#"Ebs.VolumeType" => "io1", # only if you choose PIOPS
#"Ebs.Iops" => 1000, # only if you choose io1
}]
# enable these properties only if you plan not to use Default VPC
#provider.subnet_id = ENV['AWS_SUBNET_ID']
#provider.private_ip_address = "172.31.16.10"
#provider.elastic_ip = true
# enable sudo without tty
# NOTE: setting [ ssh.pty = true ] causes file provisioner fail
provider.user_data = <<-USER_DATA
#!/bin/sh
echo "Defaults !requiretty" > /etc/sudoers.d/vagrant-init
chmod 440 /etc/sudoers.d/vagrant-init
USER_DATA
# disable synced_folder:
override.vm.synced_folder "./", "/vagrant", disabled: true
# provision
override.vm.provision "ansible" do |ansible|
ansible.playbook = "provisioning/playbook.yml"
end
# Do whatever you wanna do !!
end
end
起動する
--provider=aws
は ENV['VAGRANT_DEFAULT_PROVIDER'] = "aws"
を設定してある場合は、省略できる。
$ vagrant up --provider=aws