概要
今更ながらVagrantを使ってAmazonEC2のインスタンスを管理できるようにしてみた
流行はすでに終わっているし、情報もすぐに出てくるが、自分の備忘録として残しておく
環境
- OS: Windows 10
- コンソール: Bash on Ubuntu on Windows
- Vagrant: 1.9.1
- vagrant-aws: 0.7.2
実施内容
- Vagrantのインストール
- vagrant-awsの導入
- アクセスキーの発行
- キーペアの設定
- セキュリティグループの作成
- Vagrantの認証設定
- Vagrantfileの作成
Vagrantのインストール
このサイトからDebian 64bitのDEBファイルを取得し、Bash on Ubuntu on Windowsでインストール
$ dpkg -i vagrant_1.9.1_x86_64.deb
$ vagrant -v
Vagrant 1.9.1
vagrant-awsの導入
$ vagrant plugin install vagrant-aws
Installing the 'vagrant-aws' plugin. This can take a few minutes...
Fetching: ipaddress-0.8.3.gem (100%)
Fetching: formatador-0.2.5.gem (100%)
Fetching: excon-0.55.0.gem (100%)
Fetching: fog-core-1.43.0.gem (100%)
Fetching: fog-json-1.0.2.gem (100%)
Fetching: fog-xml-0.1.2.gem (100%)
Fetching: trollop-2.1.2.gem (100%)
Fetching: CFPropertyList-2.3.5.gem (100%)
Fetching: rbvmomi-1.9.4.gem (100%)
Fetching: fission-0.5.0.gem (100%)
Fetching: inflecto-0.0.2.gem (100%)
Fetching: xml-simple-1.1.5.gem (100%)
Fetching: fog-xenserver-0.2.3.gem (100%)
Fetching: fog-vsphere-1.7.1.gem (100%)
Fetching: fog-voxel-0.1.0.gem (100%)
Fetching: fog-vmfusion-0.1.0.gem (100%)
Fetching: fog-terremark-0.1.0.gem (100%)
Fetching: fog-storm_on_demand-0.1.1.gem (100%)
Fetching: fog-softlayer-1.1.4.gem (100%)
Fetching: fog-serverlove-0.1.2.gem (100%)
Fetching: fog-sakuracloud-1.7.5.gem (100%)
Fetching: fog-riakcs-0.1.0.gem (100%)
Fetching: fog-radosgw-0.0.5.gem (100%)
Fetching: fog-rackspace-0.1.4.gem (100%)
Fetching: fog-profitbricks-3.0.0.gem (100%)
Fetching: fog-powerdns-0.1.1.gem (100%)
Fetching: fog-openstack-0.1.20.gem (100%)
Fetching: fog-local-0.3.1.gem (100%)
Fetching: fog-google-0.1.0.gem (100%)
Fetching: fog-ecloud-0.3.0.gem (100%)
Fetching: fog-dynect-0.0.3.gem (100%)
Fetching: fog-cloudatcost-0.1.2.gem (100%)
Fetching: fog-brightbox-0.11.0.gem (100%)
Fetching: fog-aws-1.2.0.gem (100%)
Fetching: fog-atmos-0.1.0.gem (100%)
Fetching: fog-aliyun-0.1.0.gem (100%)
Fetching: iniparse-1.4.2.gem (100%)
Fetching: fog-1.38.0.gem (100%)
Fetching: vagrant-aws-0.7.2.gem (100%)
Installed the plugin 'vagrant-aws (0.7.2)'!
$ vagrant box add dummy https://github.com/mitchellh/vagrant-aws/raw/master/dummy.box
==> box: Box file was not detected as metadata. Adding it directly...
==> box: Adding box 'dummy' (v0) for provider:
box: Downloading: https://github.com/mitchellh/vagrant-aws/raw/master/dummy.box
==> box: Successfully added box 'dummy' (v0) for 'aws'!
アクセスキーの発行
詳細はAWS IAMのドキュメントを参照
今回は手順だけ
- IAMコンソールにアクセス
- ユーザタブにて、AmazonEC2を操作できるユーザを選択
- 認証情報タブからアクセスキーを発行
- CSVファイルをダウンロード(大事に保管すること)
キーペアの設定
詳細はAmazon EC2のドキュメントを参照
今回は手順だけ
- Amazon EC2コンソールにアクセス
- キーペアタブを選択
- キー作成ボタンを選択
- キーペア名を入力し、作成ボタンを選択(今回はdefaultと入力)
- PEMファイルを~/.ssh以下に配置
セキュリティグループの作成
詳細はAmazon EC2のドキュメントを参照
今回は手順だけ
- Amazon EC2コンソールにアクセス
- セキュリティグループを選択
- セキュリティグループの作成ボタンを選択
- セキュリティグループ名を入力(今回はsecurity)
- ルール追加にて、自分のグローバルアドレスを使ってアクセスできるように設定
Vagrantの認証設定
Vagrantfileに認証情報を書きたくないので、今回は認証情報を環境変数に設定するスクリプトを作成
privateKeys.sh
#!/bin/sh
export AWS_ACCESS_KEY_ID='AKIXXXXXXXXXXXXXXXXX'
export AWS_SECRET_ACCESS_KEY='fXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'
Vagrantfileの作成
Vagrantfile
Vagrant.configure("2") do |config|
# Vagrant Box
config.vm.box = "dummy"
# Rsync Directory
config.vm.synced_folder "setup", "/vagrant", type: "rsync"
config.vm.provider :aws do |aws, override|
# AWS Account
aws.access_key_id = ENV['AWS_ACCESS_KEY_ID']
aws.secret_access_key = ENV['AWS_SECRET_ACCESS_KEY']
# Instance Configuration
aws.tags = {
'Name' => 'DevelopEnvironment'
}
aws.instance_type = "t2.micro"
aws.ami = "ami-c68fc7a1"
aws.region = "ap-northeast-1"
aws.availability_zone = "ap-northeast-1c"
aws.security_groups = ['security']
aws.elastic_ip = true
# Login Configuration
aws.keypair_name = "default"
override.ssh.username = "ubuntu"
override.ssh.private_key_path = "~/.ssh/default.pem"
# SSH accessable
aws.user_data = "sed -i -e 's/^\\(Defaults.*requiretty\\)/#\\1/' /etc/sudoers"
end
end
動作確認
$ source privateKeys.sh
$ vagrant up
Bringing machine 'default' up with 'aws' provider...
==> default: Warning! The AWS provider doesn't support any of the Vagrant
==> default: high-level network configurations (`config.vm.network`). They
==> default: will be silently ignored.
==> default: Launching an instance with the following settings...
==> default: -- Type: t2.micro
==> default: -- AMI: ami-c68fc7a1
==> default: -- Region: ap-northeast-1
==> default: -- Availability Zone: ap-northeast-1c
==> default: -- Keypair: default
==> default: -- Elastic IP: true
==> default: -- User Data: yes
==> default: -- Security Groups: ["security"]
==> default: -- User Data: sed -i -e 's/^\(Defaults.*requiretty\)/#\1/' /etc/sudoers
==> default: -- Block Device Mapping: []
==> default: -- Terminate On Shutdown: false
==> default: -- Monitoring: false
==> default: -- EBS optimized: false
==> default: -- Source Destination check:
==> default: -- Assigning a public IP address in a VPC: false
==> default: -- VPC tenancy specification: default
==> default: Waiting for instance to become "ready"...
==> default: Waiting for SSH to become available...
==> default: Machine is booted and ready for use!
==> default: Rsyncing folder: /mnt/c/Users/kazuyoshi/aws-training/setup/ => /vagrant
参考
- vagrant-aws - GitHub
URL: https://github.com/mitchellh/vagrant-aws