vagrant-aws 0.1.2 → 0.1.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/CHANGELOG.md +9 -0
- data/README.md +6 -2
- data/lib/vagrant-aws/action/read_ssh_info.rb +1 -1
- data/lib/vagrant-aws/action/run_instance.rb +3 -1
- data/lib/vagrant-aws/action/sync_folders.rb +10 -0
- data/lib/vagrant-aws/action/terminate_instance.rb +1 -1
- data/lib/vagrant-aws/config.rb +13 -3
- data/lib/vagrant-aws/version.rb +1 -1
- data/spec/vagrant-aws/config_spec.rb +35 -0
- metadata +3 -3
data/CHANGELOG.md
CHANGED
@@ -1,3 +1,12 @@
|
|
1
|
+
# 0.1.3 (April 9, 2013)
|
2
|
+
|
3
|
+
* The `AWS_ACCESS_KEY` and `AWS_SECRET_KEY` will be used if available
|
4
|
+
and no specific keys are set in the Vagrantfile. [GH-33]
|
5
|
+
* Fix issues with SSH on VPCs, the correct IP is used. [GH-30]
|
6
|
+
* Exclude the ".vagrant" directory from rsync.
|
7
|
+
* Implement `:disabled` flag support for shared folders. [GH-29]
|
8
|
+
* `aws.user_data` to specify user data on the instance. [GH-26]
|
9
|
+
|
1
10
|
# 0.1.2 (March 22, 2013)
|
2
11
|
|
3
12
|
* Choose the proper region when connecting to AWS. [GH-9]
|
data/README.md
CHANGED
@@ -72,6 +72,9 @@ Note that normally a lot of this boilerplate is encoded within the box
|
|
72
72
|
file, but the box file used for the quick start, the "dummy" box, has
|
73
73
|
no preconfigured defaults.
|
74
74
|
|
75
|
+
If you have issues with SSH connecting, make sure that the instances
|
76
|
+
are being launched with a security group that allows SSH access.
|
77
|
+
|
75
78
|
## Box Format
|
76
79
|
|
77
80
|
Every provider in Vagrant must introduce a custom box format. This
|
@@ -91,7 +94,8 @@ This provider exposes quite a few provider-specific configuration options:
|
|
91
94
|
* `ami` - The AMI id to boot, such as "ami-12345678"
|
92
95
|
* `availability_zone` - The availability zone within the region to launch
|
93
96
|
the instance. If nil, it will use the default set by Amazon.
|
94
|
-
* `instance_type` - The type of instance, such as "m1.small"
|
97
|
+
* `instance_type` - The type of instance, such as "m1.small". The default
|
98
|
+
value of this if not specified is "m1.small".
|
95
99
|
* `keypair_name` - The name of the keypair to use to bootstrap AMIs
|
96
100
|
which support it.
|
97
101
|
* `private_ip_address` - The private IP address to assign to an instance
|
@@ -134,7 +138,7 @@ Vagrant.configure("2") do |config|
|
|
134
138
|
aws.secret_access_key = "bar"
|
135
139
|
aws.region = "us-east-1"
|
136
140
|
|
137
|
-
#
|
141
|
+
# Simple region config
|
138
142
|
aws.region_config "us-east-1", :ami => "ami-12345678"
|
139
143
|
|
140
144
|
# More comprehensive region config
|
@@ -35,7 +35,7 @@ module VagrantPlugins
|
|
35
35
|
|
36
36
|
# Read the DNS info
|
37
37
|
return {
|
38
|
-
:host => server.dns_name,
|
38
|
+
:host => server.dns_name || server.private_ip_address,
|
39
39
|
:port => config.ssh_port,
|
40
40
|
:private_key_path => config.ssh_private_key_path,
|
41
41
|
:username => config.ssh_username
|
@@ -34,6 +34,7 @@ module VagrantPlugins
|
|
34
34
|
security_groups = region_config.security_groups
|
35
35
|
subnet_id = region_config.subnet_id
|
36
36
|
tags = region_config.tags
|
37
|
+
user_data = region_config.user_data
|
37
38
|
|
38
39
|
# If there is no keypair then warn the user
|
39
40
|
if !keypair
|
@@ -66,7 +67,8 @@ module VagrantPlugins
|
|
66
67
|
:ssh_port => ssh_port,
|
67
68
|
:private_ip_address => private_ip_address,
|
68
69
|
:subnet_id => subnet_id,
|
69
|
-
:tags => tags
|
70
|
+
:tags => tags,
|
71
|
+
:user_data => user_data
|
70
72
|
}
|
71
73
|
|
72
74
|
if !security_groups.empty?
|
@@ -2,12 +2,16 @@ require "log4r"
|
|
2
2
|
|
3
3
|
require "vagrant/util/subprocess"
|
4
4
|
|
5
|
+
require "vagrant/util/scoped_hash_override"
|
6
|
+
|
5
7
|
module VagrantPlugins
|
6
8
|
module AWS
|
7
9
|
module Action
|
8
10
|
# This middleware uses `rsync` to sync the folders over to the
|
9
11
|
# AWS instance.
|
10
12
|
class SyncFolders
|
13
|
+
include Vagrant::Util::ScopedHashOverride
|
14
|
+
|
11
15
|
def initialize(app, env)
|
12
16
|
@app = app
|
13
17
|
@logger = Log4r::Logger.new("vagrant_aws::action::sync_folders")
|
@@ -19,6 +23,11 @@ module VagrantPlugins
|
|
19
23
|
ssh_info = env[:machine].ssh_info
|
20
24
|
|
21
25
|
env[:machine].config.vm.synced_folders.each do |id, data|
|
26
|
+
data = scoped_hash_override(data, :aws)
|
27
|
+
|
28
|
+
# Ignore disabled shared folders
|
29
|
+
next if data[:disabled]
|
30
|
+
|
22
31
|
hostpath = File.expand_path(data[:hostpath], env[:root_path])
|
23
32
|
guestpath = data[:guestpath]
|
24
33
|
|
@@ -38,6 +47,7 @@ module VagrantPlugins
|
|
38
47
|
# Rsync over to the guest path using the SSH info
|
39
48
|
command = [
|
40
49
|
"rsync", "--verbose", "--archive", "-z",
|
50
|
+
"--exclude", ".vagrant/",
|
41
51
|
"-e", "ssh -p #{ssh_info[:port]} -o StrictHostKeyChecking=no -i '#{ssh_info[:private_key_path]}'",
|
42
52
|
hostpath,
|
43
53
|
"#{ssh_info[:username]}@#{ssh_info[:host]}:#{guestpath}"]
|
data/lib/vagrant-aws/config.rb
CHANGED
@@ -87,6 +87,11 @@ module VagrantPlugins
|
|
87
87
|
# @return [Hash<String, String>]
|
88
88
|
attr_accessor :tags
|
89
89
|
|
90
|
+
# The user data string
|
91
|
+
#
|
92
|
+
# @return [String]
|
93
|
+
attr_accessor :user_data
|
94
|
+
|
90
95
|
def initialize(region_specific=false)
|
91
96
|
@access_key_id = UNSET_VALUE
|
92
97
|
@ami = UNSET_VALUE
|
@@ -104,6 +109,7 @@ module VagrantPlugins
|
|
104
109
|
@ssh_username = UNSET_VALUE
|
105
110
|
@subnet_id = UNSET_VALUE
|
106
111
|
@tags = {}
|
112
|
+
@user_data = UNSET_VALUE
|
107
113
|
|
108
114
|
# Internal state (prefix with __ so they aren't automatically
|
109
115
|
# merged)
|
@@ -174,9 +180,10 @@ module VagrantPlugins
|
|
174
180
|
end
|
175
181
|
|
176
182
|
def finalize!
|
177
|
-
#
|
178
|
-
|
179
|
-
@
|
183
|
+
# Try to get access keys from standard AWS environment variables; they
|
184
|
+
# will default to nil if the environment variables are not present.
|
185
|
+
@access_key_id = ENV['AWS_ACCESS_KEY'] if @access_key_id == UNSET_VALUE
|
186
|
+
@secret_access_key = ENV['AWS_SECRET_KEY'] if @secret_access_key == UNSET_VALUE
|
180
187
|
|
181
188
|
# AMI must be nil, since we can't default that
|
182
189
|
@ami = nil if @ami == UNSET_VALUE
|
@@ -210,6 +217,9 @@ module VagrantPlugins
|
|
210
217
|
# Subnet is nil by default otherwise we'd launch into VPC.
|
211
218
|
@subnet_id = nil if @subnet_id == UNSET_VALUE
|
212
219
|
|
220
|
+
# User Data is nil by default
|
221
|
+
@user_data = nil if @user_data == UNSET_VALUE
|
222
|
+
|
213
223
|
# Compile our region specific configurations only within
|
214
224
|
# NON-REGION-SPECIFIC configurations.
|
215
225
|
if !@__region_specific
|
data/lib/vagrant-aws/version.rb
CHANGED
@@ -3,6 +3,11 @@ require "vagrant-aws/config"
|
|
3
3
|
describe VagrantPlugins::AWS::Config do
|
4
4
|
let(:instance) { described_class.new }
|
5
5
|
|
6
|
+
# Ensure tests are not affected by AWS credential environment variables
|
7
|
+
before :each do
|
8
|
+
ENV.stub(:[] => nil)
|
9
|
+
end
|
10
|
+
|
6
11
|
describe "defaults" do
|
7
12
|
subject do
|
8
13
|
instance.tap do |o|
|
@@ -23,6 +28,7 @@ describe VagrantPlugins::AWS::Config do
|
|
23
28
|
its("ssh_username") { should be_nil }
|
24
29
|
its("subnet_id") { should be_nil }
|
25
30
|
its("tags") { should == {} }
|
31
|
+
its("user_data") { should be_nil }
|
26
32
|
end
|
27
33
|
|
28
34
|
describe "overriding defaults" do
|
@@ -43,6 +49,35 @@ describe VagrantPlugins::AWS::Config do
|
|
43
49
|
end
|
44
50
|
end
|
45
51
|
|
52
|
+
describe "getting credentials from environment" do
|
53
|
+
context "without EC2 credential environment variables" do
|
54
|
+
subject do
|
55
|
+
instance.tap do |o|
|
56
|
+
o.finalize!
|
57
|
+
end
|
58
|
+
end
|
59
|
+
|
60
|
+
its("access_key_id") { should be_nil }
|
61
|
+
its("secret_access_key") { should be_nil }
|
62
|
+
end
|
63
|
+
|
64
|
+
context "with EC2 credential environment variables" do
|
65
|
+
before :each do
|
66
|
+
ENV.stub(:[]).with("AWS_ACCESS_KEY").and_return("access_key")
|
67
|
+
ENV.stub(:[]).with("AWS_SECRET_KEY").and_return("secret_key")
|
68
|
+
end
|
69
|
+
|
70
|
+
subject do
|
71
|
+
instance.tap do |o|
|
72
|
+
o.finalize!
|
73
|
+
end
|
74
|
+
end
|
75
|
+
|
76
|
+
its("access_key_id") { should == "access_key" }
|
77
|
+
its("secret_access_key") { should == "secret_key" }
|
78
|
+
end
|
79
|
+
end
|
80
|
+
|
46
81
|
describe "region config" do
|
47
82
|
let(:config_access_key_id) { "foo" }
|
48
83
|
let(:config_ami) { "foo" }
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: vagrant-aws
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.
|
4
|
+
version: 0.1.3
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2013-
|
12
|
+
date: 2013-04-09 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: fog
|
@@ -142,7 +142,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
142
142
|
version: '0'
|
143
143
|
segments:
|
144
144
|
- 0
|
145
|
-
hash:
|
145
|
+
hash: 3553654739612910885
|
146
146
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
147
147
|
none: false
|
148
148
|
requirements:
|