vagrant-aws 0.2.2 → 0.3.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +7 -0
- data/CHANGELOG.md +16 -0
- data/Gemfile +1 -1
- data/README.md +46 -2
- data/lib/vagrant-aws/action.rb +11 -3
- data/lib/vagrant-aws/action/connect_aws.rb +1 -1
- data/lib/vagrant-aws/action/message_will_not_destroy.rb +16 -0
- data/lib/vagrant-aws/action/read_ssh_info.rb +1 -1
- data/lib/vagrant-aws/action/run_instance.rb +70 -13
- data/lib/vagrant-aws/action/sync_folders.rb +11 -0
- data/lib/vagrant-aws/action/terminate_instance.rb +21 -0
- data/lib/vagrant-aws/config.rb +62 -16
- data/lib/vagrant-aws/errors.rb +8 -0
- data/lib/vagrant-aws/plugin.rb +1 -1
- data/lib/vagrant-aws/version.rb +1 -1
- data/locales/en.yml +22 -1
- data/spec/vagrant-aws/config_spec.rb +13 -3
- data/vagrant-aws.sublime-project +9 -0
- data/vagrant-aws.sublime-workspace +305 -0
- metadata +28 -40
checksums.yaml
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
---
|
2
|
+
SHA1:
|
3
|
+
metadata.gz: 4875beff54192a4db1f2764ba37769f408a16c7c
|
4
|
+
data.tar.gz: 8ccf174be6eb9fdc3994021f9ae6e85ce8d0a34c
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: 00cc521c0d0cc6d04c3c13502c232b008fe06998de2847cd29c36db89611c4415e001f300cc99bd9bbac0bbf9d8af03fa13e8e410863e275200c998a14826c91
|
7
|
+
data.tar.gz: 87d486bf65db0820f1d74cf9b1ac0108336a97ff3166d15b1fb156fce80d98eb7473597305fc91f9ad993de2b09d2bc8f7f56a4054ca79f406714f145c0b1ebf
|
data/CHANGELOG.md
CHANGED
@@ -1,3 +1,19 @@
|
|
1
|
+
# 0.3.0 (September 2, 2013)
|
2
|
+
|
3
|
+
* Parallelize multi-machine up on Vagrant 1.2+
|
4
|
+
* Show proper configuration errors if an invalid configuration key
|
5
|
+
is used.
|
6
|
+
* Request confirmation on `vagrant destroy`, like normal VirtualBox + Vagrant.
|
7
|
+
* If user data is configured, output is shown on "vagrant up" that
|
8
|
+
it is being set.
|
9
|
+
* Add EIP support (GH #65)
|
10
|
+
* Add block device mapping support (GH #93)
|
11
|
+
* README improvements (GH #120)
|
12
|
+
* Fix missing locale message (GH #73)
|
13
|
+
* SyncFolders creates hostpath if it doesn't exist and `:create` option is set (GH #17)
|
14
|
+
* Add IAM Instance Profile support (GH #68)
|
15
|
+
* Add shutdown behavior support (GH #125,#131)
|
16
|
+
|
1
17
|
# 0.2.2 (April 18, 2013)
|
2
18
|
|
3
19
|
* Fix crashing bug with incorrect provisioner arguments.
|
data/Gemfile
CHANGED
@@ -6,5 +6,5 @@ group :development do
|
|
6
6
|
# We depend on Vagrant for development, but we don't add it as a
|
7
7
|
# gem dependency because we expect to be installed within the
|
8
8
|
# Vagrant environment itself using `vagrant plugin`.
|
9
|
-
gem "vagrant", :git => "git://github.com/mitchellh/vagrant.git"
|
9
|
+
gem "vagrant", :git => "git://github.com/mitchellh/vagrant.git", :tag => "v1.2.7"
|
10
10
|
end
|
data/README.md
CHANGED
@@ -108,6 +108,10 @@ This provider exposes quite a few provider-specific configuration options:
|
|
108
108
|
* `security_groups` - An array of security groups for the instance. If this
|
109
109
|
instance will be launched in VPC, this must be a list of security group
|
110
110
|
IDs.
|
111
|
+
* `iam_instance_profile_arn` - The Amazon resource name (ARN) of the IAM Instance
|
112
|
+
Profile to associate with the instance
|
113
|
+
* `iam_instance_profile_name` - The name of the IAM Instance Profile to associate
|
114
|
+
with the instance
|
111
115
|
* `subnet_id` - The subnet to boot the instance into, for VPC.
|
112
116
|
* `tags` - A hash of tags to set on the machine.
|
113
117
|
* `use_iam_profile` - If true, will use [IAM profiles](http://docs.aws.amazon.com/IAM/latest/UserGuide/instance-profiles.html)
|
@@ -173,6 +177,43 @@ the remote machine over SSH.
|
|
173
177
|
This is good enough for all built-in Vagrant provisioners (shell,
|
174
178
|
chef, and puppet) to work!
|
175
179
|
|
180
|
+
## Other Examples
|
181
|
+
|
182
|
+
### Tags
|
183
|
+
|
184
|
+
To use tags, simply define a hash of key/value for the tags you want to associate to your instance, like:
|
185
|
+
|
186
|
+
```ruby
|
187
|
+
Vagrant.configure("2") do |config|
|
188
|
+
# ... other stuff
|
189
|
+
|
190
|
+
config.vm.provider "aws" do |aws|
|
191
|
+
aws.tags = {
|
192
|
+
'Name' => 'Some Name',
|
193
|
+
'Some Key' => 'Some Value'
|
194
|
+
}
|
195
|
+
end
|
196
|
+
end
|
197
|
+
```
|
198
|
+
|
199
|
+
### User data
|
200
|
+
|
201
|
+
You can specify user data for the instance being booted.
|
202
|
+
|
203
|
+
```ruby
|
204
|
+
Vagrant.configure("2") do |config|
|
205
|
+
# ... other stuff
|
206
|
+
|
207
|
+
config.vm.provider "aws" do |aws|
|
208
|
+
# Option 1: a single string
|
209
|
+
aws.user_data = "#!/bin/bash\necho 'got user data' > /tmp/user_data.log\necho"
|
210
|
+
|
211
|
+
# Option 2: use a file
|
212
|
+
aws.user_data = File.read("user_data.txt")
|
213
|
+
end
|
214
|
+
end
|
215
|
+
```
|
216
|
+
|
176
217
|
## Development
|
177
218
|
|
178
219
|
To work on the `vagrant-aws` plugin, clone this repository out, and use
|
@@ -191,8 +232,11 @@ $ bundle exec rake
|
|
191
232
|
If those pass, you're ready to start developing the plugin. You can test
|
192
233
|
the plugin without installing it into your Vagrant environment by just
|
193
234
|
creating a `Vagrantfile` in the top level of this directory (it is gitignored)
|
194
|
-
|
195
|
-
|
235
|
+
and add the following line to your `Vagrantfile`
|
236
|
+
```ruby
|
237
|
+
Vagrant.require_plugin "vagrant-aws"
|
238
|
+
```
|
239
|
+
Use bundler to execute Vagrant:
|
196
240
|
```
|
197
241
|
$ bundle exec vagrant up --provider=aws
|
198
242
|
```
|
data/lib/vagrant-aws/action.rb
CHANGED
@@ -11,9 +11,15 @@ module VagrantPlugins
|
|
11
11
|
# This action is called to terminate the remote machine.
|
12
12
|
def self.action_destroy
|
13
13
|
Vagrant::Action::Builder.new.tap do |b|
|
14
|
-
b.use
|
15
|
-
|
16
|
-
|
14
|
+
b.use Call, DestroyConfirm do |env, b2|
|
15
|
+
if env[:result]
|
16
|
+
b2.use ConfigValidate
|
17
|
+
b2.use ConnectAWS
|
18
|
+
b2.use TerminateInstance
|
19
|
+
else
|
20
|
+
b2.use MessageWillNotDestroy
|
21
|
+
end
|
22
|
+
end
|
17
23
|
end
|
18
24
|
end
|
19
25
|
|
@@ -87,6 +93,7 @@ module VagrantPlugins
|
|
87
93
|
# This action is called to bring the box up from nothing.
|
88
94
|
def self.action_up
|
89
95
|
Vagrant::Action::Builder.new.tap do |b|
|
96
|
+
b.use HandleBoxUrl
|
90
97
|
b.use ConfigValidate
|
91
98
|
b.use ConnectAWS
|
92
99
|
b.use Call, IsCreated do |env, b2|
|
@@ -109,6 +116,7 @@ module VagrantPlugins
|
|
109
116
|
autoload :IsCreated, action_root.join("is_created")
|
110
117
|
autoload :MessageAlreadyCreated, action_root.join("message_already_created")
|
111
118
|
autoload :MessageNotCreated, action_root.join("message_not_created")
|
119
|
+
autoload :MessageWillNotDestroy, action_root.join("message_will_not_destroy")
|
112
120
|
autoload :ReadSSHInfo, action_root.join("read_ssh_info")
|
113
121
|
autoload :ReadState, action_root.join("read_state")
|
114
122
|
autoload :RunInstance, action_root.join("run_instance")
|
@@ -26,7 +26,7 @@ module VagrantPlugins
|
|
26
26
|
:region => region
|
27
27
|
}
|
28
28
|
if region_config.use_iam_profile
|
29
|
-
fog_config[:use_iam_profile] =
|
29
|
+
fog_config[:use_iam_profile] = true
|
30
30
|
else
|
31
31
|
fog_config[:aws_access_key_id] = region_config.access_key_id
|
32
32
|
fog_config[:aws_secret_access_key] = region_config.secret_access_key
|
@@ -0,0 +1,16 @@
|
|
1
|
+
module VagrantPlugins
|
2
|
+
module AWS
|
3
|
+
module Action
|
4
|
+
class MessageWillNotDestroy
|
5
|
+
def initialize(app, env)
|
6
|
+
@app = app
|
7
|
+
end
|
8
|
+
|
9
|
+
def call(env)
|
10
|
+
env[:ui].info(I18n.t("vagrant_aws.will_not_destroy", name: env[:machine].name))
|
11
|
+
@app.call(env)
|
12
|
+
end
|
13
|
+
end
|
14
|
+
end
|
15
|
+
end
|
16
|
+
end
|
@@ -1,4 +1,5 @@
|
|
1
1
|
require "log4r"
|
2
|
+
require 'json'
|
2
3
|
|
3
4
|
require 'vagrant/util/retryable'
|
4
5
|
|
@@ -24,16 +25,21 @@ module VagrantPlugins
|
|
24
25
|
region = env[:machine].provider_config.region
|
25
26
|
|
26
27
|
# Get the configs
|
27
|
-
region_config
|
28
|
-
ami
|
29
|
-
availability_zone
|
30
|
-
instance_type
|
31
|
-
keypair
|
32
|
-
private_ip_address
|
33
|
-
security_groups
|
34
|
-
subnet_id
|
35
|
-
tags
|
36
|
-
user_data
|
28
|
+
region_config = env[:machine].provider_config.get_region_config(region)
|
29
|
+
ami = region_config.ami
|
30
|
+
availability_zone = region_config.availability_zone
|
31
|
+
instance_type = region_config.instance_type
|
32
|
+
keypair = region_config.keypair_name
|
33
|
+
private_ip_address = region_config.private_ip_address
|
34
|
+
security_groups = region_config.security_groups
|
35
|
+
subnet_id = region_config.subnet_id
|
36
|
+
tags = region_config.tags
|
37
|
+
user_data = region_config.user_data
|
38
|
+
block_device_mapping = region_config.block_device_mapping
|
39
|
+
elastic_ip = region_config.elastic_ip
|
40
|
+
terminate_on_shutdown = region_config.terminate_on_shutdown
|
41
|
+
iam_instance_profile_arn = region_config.iam_instance_profile_arn
|
42
|
+
iam_instance_profile_name = region_config.iam_instance_profile_name
|
37
43
|
|
38
44
|
# If there is no keypair then warn the user
|
39
45
|
if !keypair
|
@@ -41,7 +47,7 @@ module VagrantPlugins
|
|
41
47
|
end
|
42
48
|
|
43
49
|
# If there is a subnet ID then warn the user
|
44
|
-
if subnet_id
|
50
|
+
if subnet_id && !elastic_ip
|
45
51
|
env[:ui].warn(I18n.t("vagrant_aws.launch_vpc_warning"))
|
46
52
|
end
|
47
53
|
|
@@ -53,8 +59,15 @@ module VagrantPlugins
|
|
53
59
|
env[:ui].info(" -- Availability Zone: #{availability_zone}") if availability_zone
|
54
60
|
env[:ui].info(" -- Keypair: #{keypair}") if keypair
|
55
61
|
env[:ui].info(" -- Subnet ID: #{subnet_id}") if subnet_id
|
62
|
+
env[:ui].info(" -- IAM Instance Profile ARN: #{iam_instance_profile_arn}") if iam_instance_profile_arn
|
63
|
+
env[:ui].info(" -- IAM Instance Profile Name: #{iam_instance_profile_name}") if iam_instance_profile_name
|
56
64
|
env[:ui].info(" -- Private IP: #{private_ip_address}") if private_ip_address
|
65
|
+
env[:ui].info(" -- Elastic IP: #{elastic_ip}") if elastic_ip
|
66
|
+
env[:ui].info(" -- User Data: yes") if user_data
|
57
67
|
env[:ui].info(" -- Security Groups: #{security_groups.inspect}") if !security_groups.empty?
|
68
|
+
env[:ui].info(" -- User Data: #{user_data}") if user_data
|
69
|
+
env[:ui].info(" -- Block Device Mapping: #{block_device_mapping}") if block_device_mapping
|
70
|
+
env[:ui].info(" -- Terminate On Shutdown: #{terminate_on_shutdown}")
|
58
71
|
|
59
72
|
begin
|
60
73
|
options = {
|
@@ -64,10 +77,13 @@ module VagrantPlugins
|
|
64
77
|
:key_name => keypair,
|
65
78
|
:private_ip_address => private_ip_address,
|
66
79
|
:subnet_id => subnet_id,
|
80
|
+
:iam_instance_profile_arn => iam_instance_profile_arn,
|
81
|
+
:iam_instance_profile_name => iam_instance_profile_name,
|
67
82
|
:tags => tags,
|
68
|
-
:user_data => user_data
|
83
|
+
:user_data => user_data,
|
84
|
+
:block_device_mapping => block_device_mapping,
|
85
|
+
:instance_initiated_shutdown_behavior => terminate_on_shutdown == true ? "terminate" : nil
|
69
86
|
}
|
70
|
-
|
71
87
|
if !security_groups.empty?
|
72
88
|
security_group_key = options[:subnet_id].nil? ? :groups : :security_group_ids
|
73
89
|
options[security_group_key] = security_groups
|
@@ -85,6 +101,10 @@ module VagrantPlugins
|
|
85
101
|
raise
|
86
102
|
rescue Fog::Compute::AWS::Error => e
|
87
103
|
raise Errors::FogError, :message => e.message
|
104
|
+
rescue Excon::Errors::HTTPStatusError => e
|
105
|
+
raise Errors::InternalFogError,
|
106
|
+
:error => e.message,
|
107
|
+
:response => e.response.body
|
88
108
|
end
|
89
109
|
|
90
110
|
# Immediately save the ID since it is created at this point.
|
@@ -115,6 +135,12 @@ module VagrantPlugins
|
|
115
135
|
|
116
136
|
@logger.info("Time to instance ready: #{env[:metrics]["instance_ready_time"]}")
|
117
137
|
|
138
|
+
# Allocate and associate an elastic IP if requested
|
139
|
+
if elastic_ip
|
140
|
+
domain = subnet_id ? 'vpc' : 'standard'
|
141
|
+
do_elastic_ip(env, domain, server)
|
142
|
+
end
|
143
|
+
|
118
144
|
if !env[:interrupted]
|
119
145
|
env[:metrics]["instance_ssh_time"] = Util::Timer.time do
|
120
146
|
# Wait for SSH to be ready.
|
@@ -148,6 +174,37 @@ module VagrantPlugins
|
|
148
174
|
end
|
149
175
|
end
|
150
176
|
|
177
|
+
def do_elastic_ip(env, domain, server)
|
178
|
+
allocation = env[:aws_compute].allocate_address(domain)
|
179
|
+
if allocation.body['publicIp'].nil?
|
180
|
+
@logger.debug("Could not allocate Elastic IP.")
|
181
|
+
return nil
|
182
|
+
end
|
183
|
+
@logger.debug("Public IP #{allocation.body['publicIp']}")
|
184
|
+
|
185
|
+
# Associate the address and save the metadata to a hash
|
186
|
+
if domain == 'vpc'
|
187
|
+
# VPC requires an allocation ID to assign an IP
|
188
|
+
association = env[:aws_compute].associate_address(server.id, nil, nil, allocation.body['allocationId'])
|
189
|
+
h = { :allocation_id => allocation.body['allocationId'], :association_id => association.body['associationId'], :public_ip => allocation.body['publicIp'] }
|
190
|
+
else
|
191
|
+
# Standard EC2 instances only need the allocated IP address
|
192
|
+
association = env[:aws_compute].associate_address(server.id, allocation.body['publicIp'])
|
193
|
+
h = { :public_ip => allocation.body['publicIp'] }
|
194
|
+
end
|
195
|
+
|
196
|
+
if !association.body['return']
|
197
|
+
@logger.debug("Could not associate Elastic IP.")
|
198
|
+
return nil
|
199
|
+
end
|
200
|
+
|
201
|
+
# Save this IP to the data dir so it can be released when the instance is destroyed
|
202
|
+
ip_file = env[:machine].data_dir.join('elastic_ip')
|
203
|
+
ip_file.open('w+') do |f|
|
204
|
+
f.write(h.to_json)
|
205
|
+
end
|
206
|
+
end
|
207
|
+
|
151
208
|
def terminate(env)
|
152
209
|
destroy_env = env.dup
|
153
210
|
destroy_env.delete(:interrupted)
|
@@ -39,6 +39,17 @@ module VagrantPlugins
|
|
39
39
|
:hostpath => hostpath,
|
40
40
|
:guestpath => guestpath))
|
41
41
|
|
42
|
+
# Create the host path if it doesn't exist and option flag is set
|
43
|
+
if data[:create]
|
44
|
+
begin
|
45
|
+
FileUtils::mkdir_p(hostpath)
|
46
|
+
rescue => err
|
47
|
+
raise Errors::MkdirError,
|
48
|
+
:hostpath => hostpath,
|
49
|
+
:err => err
|
50
|
+
end
|
51
|
+
end
|
52
|
+
|
42
53
|
# Create the guest path
|
43
54
|
env[:machine].communicate.sudo("mkdir -p '#{guestpath}'")
|
44
55
|
env[:machine].communicate.sudo(
|
@@ -1,4 +1,5 @@
|
|
1
1
|
require "log4r"
|
2
|
+
require "json"
|
2
3
|
|
3
4
|
module VagrantPlugins
|
4
5
|
module AWS
|
@@ -17,9 +18,29 @@ module VagrantPlugins
|
|
17
18
|
env[:ui].info(I18n.t("vagrant_aws.terminating"))
|
18
19
|
server.destroy
|
19
20
|
env[:machine].id = nil
|
21
|
+
|
22
|
+
# Release the elastic IP
|
23
|
+
ip_file = env[:machine].data_dir.join('elastic_ip')
|
24
|
+
if ip_file.file?
|
25
|
+
release_address(env,ip_file.read)
|
26
|
+
ip_file.delete
|
27
|
+
end
|
20
28
|
|
21
29
|
@app.call(env)
|
22
30
|
end
|
31
|
+
|
32
|
+
# Release an elastic IP address
|
33
|
+
def release_address(env,eip)
|
34
|
+
h = JSON.parse(eip)
|
35
|
+
# Use association_id and allocation_id for VPC, use public IP for EC2
|
36
|
+
if h['association_id']
|
37
|
+
env[:aws_compute].disassociate_address(nil,h['association_id'])
|
38
|
+
env[:aws_compute].release_address(h['allocation_id'])
|
39
|
+
else
|
40
|
+
env[:aws_compute].disassociate_address(h['public_ip'])
|
41
|
+
env[:aws_compute].release_address(h['public_ip'])
|
42
|
+
end
|
43
|
+
end
|
23
44
|
end
|
24
45
|
end
|
25
46
|
end
|
data/lib/vagrant-aws/config.rb
CHANGED
@@ -39,6 +39,11 @@ module VagrantPlugins
|
|
39
39
|
# @return [String]
|
40
40
|
attr_accessor :private_ip_address
|
41
41
|
|
42
|
+
# Acquire and attach an elastic IP address (VPC).
|
43
|
+
#
|
44
|
+
# @return [Boolean]
|
45
|
+
attr_accessor :elastic_ip
|
46
|
+
|
42
47
|
# The name of the AWS region in which to create the instance.
|
43
48
|
#
|
44
49
|
# @return [String]
|
@@ -65,6 +70,18 @@ module VagrantPlugins
|
|
65
70
|
# @return [Array<String>]
|
66
71
|
attr_accessor :security_groups
|
67
72
|
|
73
|
+
# The Amazon resource name (ARN) of the IAM Instance Profile
|
74
|
+
# to associate with the instance.
|
75
|
+
#
|
76
|
+
# @return [String]
|
77
|
+
attr_accessor :iam_instance_profile_arn
|
78
|
+
|
79
|
+
# The name of the IAM Instance Profile to associate with
|
80
|
+
# the instance.
|
81
|
+
#
|
82
|
+
# @return [String]
|
83
|
+
attr_accessor :iam_instance_profile_name
|
84
|
+
|
68
85
|
# The subnet ID to launch the machine into (VPC).
|
69
86
|
#
|
70
87
|
# @return [String]
|
@@ -86,23 +103,38 @@ module VagrantPlugins
|
|
86
103
|
# @return [String]
|
87
104
|
attr_accessor :user_data
|
88
105
|
|
106
|
+
# Block device mappings
|
107
|
+
#
|
108
|
+
# @return [Array<Hash>]
|
109
|
+
attr_accessor :block_device_mapping
|
110
|
+
|
111
|
+
# Indicates whether an instance stops or terminates when you initiate shutdown from the instance
|
112
|
+
#
|
113
|
+
# @return [bool]
|
114
|
+
attr_accessor :terminate_on_shutdown
|
115
|
+
|
89
116
|
def initialize(region_specific=false)
|
90
|
-
@access_key_id
|
91
|
-
@ami
|
92
|
-
@availability_zone
|
117
|
+
@access_key_id = UNSET_VALUE
|
118
|
+
@ami = UNSET_VALUE
|
119
|
+
@availability_zone = UNSET_VALUE
|
93
120
|
@instance_ready_timeout = UNSET_VALUE
|
94
|
-
@instance_type
|
95
|
-
@keypair_name
|
96
|
-
@private_ip_address
|
97
|
-
@region
|
98
|
-
@endpoint
|
99
|
-
@version
|
100
|
-
@secret_access_key
|
101
|
-
@security_groups
|
102
|
-
@subnet_id
|
103
|
-
@tags
|
104
|
-
@user_data
|
105
|
-
@use_iam_profile
|
121
|
+
@instance_type = UNSET_VALUE
|
122
|
+
@keypair_name = UNSET_VALUE
|
123
|
+
@private_ip_address = UNSET_VALUE
|
124
|
+
@region = UNSET_VALUE
|
125
|
+
@endpoint = UNSET_VALUE
|
126
|
+
@version = UNSET_VALUE
|
127
|
+
@secret_access_key = UNSET_VALUE
|
128
|
+
@security_groups = UNSET_VALUE
|
129
|
+
@subnet_id = UNSET_VALUE
|
130
|
+
@tags = {}
|
131
|
+
@user_data = UNSET_VALUE
|
132
|
+
@use_iam_profile = UNSET_VALUE
|
133
|
+
@block_device_mapping = []
|
134
|
+
@elastic_ip = UNSET_VALUE
|
135
|
+
@iam_instance_profile_arn = UNSET_VALUE
|
136
|
+
@iam_instance_profile_name = UNSET_VALUE
|
137
|
+
@terminate_on_shutdown = UNSET_VALUE
|
106
138
|
|
107
139
|
# Internal state (prefix with __ so they aren't automatically
|
108
140
|
# merged)
|
@@ -169,6 +201,10 @@ module VagrantPlugins
|
|
169
201
|
# Merge in the tags
|
170
202
|
result.tags.merge!(self.tags)
|
171
203
|
result.tags.merge!(other.tags)
|
204
|
+
|
205
|
+
# Merge block_device_mapping
|
206
|
+
result.block_device_mapping |= self.block_device_mapping
|
207
|
+
result.block_device_mapping |= other.block_device_mapping
|
172
208
|
end
|
173
209
|
end
|
174
210
|
|
@@ -193,6 +229,9 @@ module VagrantPlugins
|
|
193
229
|
# Default the private IP to nil since VPC is not default
|
194
230
|
@private_ip_address = nil if @private_ip_address == UNSET_VALUE
|
195
231
|
|
232
|
+
# Acquire an elastic IP if requested
|
233
|
+
@elastic_ip = nil if @elastic_ip == UNSET_VALUE
|
234
|
+
|
196
235
|
# Default region is us-east-1. This is sensible because AWS
|
197
236
|
# generally defaults to this as well.
|
198
237
|
@region = "us-east-1" if @region == UNSET_VALUE
|
@@ -206,12 +245,19 @@ module VagrantPlugins
|
|
206
245
|
# Subnet is nil by default otherwise we'd launch into VPC.
|
207
246
|
@subnet_id = nil if @subnet_id == UNSET_VALUE
|
208
247
|
|
248
|
+
# IAM Instance profile arn/name is nil by default.
|
249
|
+
@iam_instance_profile_arn = nil if @iam_instance_profile_arn == UNSET_VALUE
|
250
|
+
@iam_instance_profile_name = nil if @iam_instance_profile_name == UNSET_VALUE
|
251
|
+
|
209
252
|
# By default we don't use an IAM profile
|
210
253
|
@use_iam_profile = false if @use_iam_profile == UNSET_VALUE
|
211
254
|
|
212
255
|
# User Data is nil by default
|
213
256
|
@user_data = nil if @user_data == UNSET_VALUE
|
214
257
|
|
258
|
+
# default false
|
259
|
+
@terminate_on_shutdown = false if @terminate_on_shutdown == UNSET_VALUE
|
260
|
+
|
215
261
|
# Compile our region specific configurations only within
|
216
262
|
# NON-REGION-SPECIFIC configurations.
|
217
263
|
if !@__region_specific
|
@@ -238,7 +284,7 @@ module VagrantPlugins
|
|
238
284
|
end
|
239
285
|
|
240
286
|
def validate(machine)
|
241
|
-
errors =
|
287
|
+
errors = _detected_errors
|
242
288
|
|
243
289
|
errors << I18n.t("vagrant_aws.config.region_required") if @region.nil?
|
244
290
|
|
data/lib/vagrant-aws/errors.rb
CHANGED
@@ -11,6 +11,10 @@ module VagrantPlugins
|
|
11
11
|
error_key(:fog_error)
|
12
12
|
end
|
13
13
|
|
14
|
+
class InternalFogError < VagrantAWSError
|
15
|
+
error_key(:internal_fog_error)
|
16
|
+
end
|
17
|
+
|
14
18
|
class InstanceReadyTimeout < VagrantAWSError
|
15
19
|
error_key(:instance_ready_timeout)
|
16
20
|
end
|
@@ -18,6 +22,10 @@ module VagrantPlugins
|
|
18
22
|
class RsyncError < VagrantAWSError
|
19
23
|
error_key(:rsync_error)
|
20
24
|
end
|
25
|
+
|
26
|
+
class MkdirError < VagrantAWSError
|
27
|
+
error_key(:mkdir_error)
|
28
|
+
end
|
21
29
|
end
|
22
30
|
end
|
23
31
|
end
|
data/lib/vagrant-aws/plugin.rb
CHANGED
data/lib/vagrant-aws/version.rb
CHANGED
data/locales/en.yml
CHANGED
@@ -28,6 +28,9 @@ en:
|
|
28
28
|
Warning! The AWS provider doesn't support any of the Vagrant
|
29
29
|
high-level network configurations (`config.vm.network`). They
|
30
30
|
will be silently ignored.
|
31
|
+
will_not_destroy: |-
|
32
|
+
The instance '%{name}' will not be destroyed, since the confirmation
|
33
|
+
was declined.
|
31
34
|
|
32
35
|
config:
|
33
36
|
access_key_id_required: |-
|
@@ -47,18 +50,30 @@ en:
|
|
47
50
|
below:
|
48
51
|
|
49
52
|
%{message}
|
53
|
+
internal_fog_error: |-
|
54
|
+
There was an error talking to AWS. The error message is shown
|
55
|
+
below:
|
56
|
+
|
57
|
+
Error: %{error}
|
58
|
+
Response: %{response}
|
50
59
|
instance_ready_timeout: |-
|
51
60
|
The instance never became "ready" in AWS. The timeout currently
|
52
61
|
set waiting for the instance to become ready is %{timeout} seconds.
|
53
62
|
Please verify that the machine properly boots. If you need more time
|
54
63
|
set the `instance_ready_timeout` configuration on the AWS provider.
|
55
64
|
rsync_error: |-
|
56
|
-
There was an error when
|
65
|
+
There was an error when attempting to rsync a share folder.
|
57
66
|
Please inspect the error message below for more info.
|
58
67
|
|
59
68
|
Host path: %{hostpath}
|
60
69
|
Guest path: %{guestpath}
|
61
70
|
Error: %{stderr}
|
71
|
+
mkdir_error: |-
|
72
|
+
There was an error when attempting to create a shared host folder.
|
73
|
+
Please inspect the error message below for more info.
|
74
|
+
|
75
|
+
Host path: %{hostpath}
|
76
|
+
Error: %{err}
|
62
77
|
|
63
78
|
states:
|
64
79
|
short_not_created: |-
|
@@ -71,3 +86,9 @@ en:
|
|
71
86
|
long_running: |-
|
72
87
|
The EC2 instance is running. To stop this machine, you can run
|
73
88
|
`vagrant halt`. To destroy the machine, you can run `vagrant destroy`.
|
89
|
+
|
90
|
+
short_pending: |-
|
91
|
+
pending
|
92
|
+
long_pending: |-
|
93
|
+
The EC2 instance is still being initialized. To destroy this machine,
|
94
|
+
you can run `vagrant destroy`.
|
@@ -26,9 +26,14 @@ describe VagrantPlugins::AWS::Config do
|
|
26
26
|
its("secret_access_key") { should be_nil }
|
27
27
|
its("security_groups") { should == [] }
|
28
28
|
its("subnet_id") { should be_nil }
|
29
|
+
its("iam_instance_profile_arn") { should be_nil }
|
30
|
+
its("iam_instance_profile_name") { should be_nil }
|
29
31
|
its("tags") { should == {} }
|
30
32
|
its("user_data") { should be_nil }
|
31
33
|
its("use_iam_profile") { should be_false }
|
34
|
+
its("block_device_mapping") {should == [] }
|
35
|
+
its("elastic_ip") { should be_nil }
|
36
|
+
its("terminate_on_shutdown") { should == false }
|
32
37
|
end
|
33
38
|
|
34
39
|
describe "overriding defaults" do
|
@@ -39,8 +44,9 @@ describe VagrantPlugins::AWS::Config do
|
|
39
44
|
[:access_key_id, :ami, :availability_zone, :instance_ready_timeout,
|
40
45
|
:instance_type, :keypair_name,
|
41
46
|
:region, :secret_access_key, :security_groups,
|
42
|
-
:subnet_id, :tags,
|
43
|
-
:
|
47
|
+
:subnet_id, :tags, :elastic_ip, :terminate_on_shutdown,
|
48
|
+
:iam_instance_profile_arn, :iam_instance_profile_name,
|
49
|
+
:use_iam_profile, :user_data, :block_device_mapping].each do |attribute|
|
44
50
|
|
45
51
|
it "should not default #{attribute} if overridden" do
|
46
52
|
instance.send("#{attribute}=".to_sym, "foo")
|
@@ -182,15 +188,19 @@ describe VagrantPlugins::AWS::Config do
|
|
182
188
|
let(:first) { described_class.new }
|
183
189
|
let(:second) { described_class.new }
|
184
190
|
|
185
|
-
it "should merge the tags" do
|
191
|
+
it "should merge the tags and block_device_mappings" do
|
186
192
|
first.tags["one"] = "one"
|
187
193
|
second.tags["two"] = "two"
|
194
|
+
first.block_device_mapping = [{:one => "one"}]
|
195
|
+
second.block_device_mapping = [{:two => "two"}]
|
188
196
|
|
189
197
|
third = first.merge(second)
|
190
198
|
third.tags.should == {
|
191
199
|
"one" => "one",
|
192
200
|
"two" => "two"
|
193
201
|
}
|
202
|
+
third.block_device_mapping.index({:one => "one"}).should_not be_nil
|
203
|
+
third.block_device_mapping.index({:two => "two"}).should_not be_nil
|
194
204
|
end
|
195
205
|
end
|
196
206
|
end
|
@@ -0,0 +1,305 @@
|
|
1
|
+
{
|
2
|
+
"auto_complete":
|
3
|
+
{
|
4
|
+
"selected_items":
|
5
|
+
[
|
6
|
+
]
|
7
|
+
},
|
8
|
+
"buffers":
|
9
|
+
[
|
10
|
+
{
|
11
|
+
"file": "lib/vagrant-aws/action/run_instance.rb",
|
12
|
+
"settings":
|
13
|
+
{
|
14
|
+
"buffer_size": 8942,
|
15
|
+
"line_ending": "Unix"
|
16
|
+
}
|
17
|
+
},
|
18
|
+
{
|
19
|
+
"file": "README.md",
|
20
|
+
"settings":
|
21
|
+
{
|
22
|
+
"buffer_size": 7450,
|
23
|
+
"line_ending": "Unix"
|
24
|
+
}
|
25
|
+
}
|
26
|
+
],
|
27
|
+
"build_system": "",
|
28
|
+
"command_palette":
|
29
|
+
{
|
30
|
+
"height": 92.0,
|
31
|
+
"selected_items":
|
32
|
+
[
|
33
|
+
[
|
34
|
+
"instal",
|
35
|
+
"Package Control: Install Package"
|
36
|
+
],
|
37
|
+
[
|
38
|
+
"pul",
|
39
|
+
"Git: Pull"
|
40
|
+
],
|
41
|
+
[
|
42
|
+
"pull",
|
43
|
+
"Git: Pull"
|
44
|
+
],
|
45
|
+
[
|
46
|
+
"git pull",
|
47
|
+
"Git: Pull"
|
48
|
+
],
|
49
|
+
[
|
50
|
+
"statu",
|
51
|
+
"Git: Status"
|
52
|
+
],
|
53
|
+
[
|
54
|
+
"sssh",
|
55
|
+
"Set Syntax: Shell Script (Bash)"
|
56
|
+
],
|
57
|
+
[
|
58
|
+
"ssruby",
|
59
|
+
"Set Syntax: Ruby"
|
60
|
+
],
|
61
|
+
[
|
62
|
+
"space",
|
63
|
+
"Indentation: Convert to Spaces"
|
64
|
+
],
|
65
|
+
[
|
66
|
+
"install",
|
67
|
+
"Package Control: Install Package"
|
68
|
+
],
|
69
|
+
[
|
70
|
+
"upda",
|
71
|
+
"Package Control: Upgrade Package"
|
72
|
+
],
|
73
|
+
[
|
74
|
+
"insta",
|
75
|
+
"Package Control: Install Package"
|
76
|
+
]
|
77
|
+
],
|
78
|
+
"width": 647.0
|
79
|
+
},
|
80
|
+
"console":
|
81
|
+
{
|
82
|
+
"height": 325.0,
|
83
|
+
"history":
|
84
|
+
[
|
85
|
+
"import urllib.request,os; pf = 'Package Control.sublime-package'; ipp = sublime.installed_packages_path(); urllib.request.install_opener( urllib.request.build_opener( urllib.request.ProxyHandler()) ); open(os.path.join(ipp, pf), 'wb').write(urllib.request.urlopen( 'http://sublime.wbond.net/' + pf.replace(' ','%20')).read()) "
|
86
|
+
]
|
87
|
+
},
|
88
|
+
"distraction_free":
|
89
|
+
{
|
90
|
+
"menu_visible": true,
|
91
|
+
"show_minimap": false,
|
92
|
+
"show_open_files": false,
|
93
|
+
"show_tabs": false,
|
94
|
+
"side_bar_visible": false,
|
95
|
+
"status_bar_visible": false
|
96
|
+
},
|
97
|
+
"file_history":
|
98
|
+
[
|
99
|
+
"/home/tralamazza/.config/sublime-text-3/Packages/GoSublime/CHANGELOG.md",
|
100
|
+
"/home/tralamazza/.config/sublime-text-3/Packages/GoSublime/USAGE.md",
|
101
|
+
"/home/tralamazza/.xinitrc",
|
102
|
+
"/home/tralamazza/projects/vagrant-aws/Vagrantfile",
|
103
|
+
"/home/tralamazza/.bash_profile",
|
104
|
+
"/home/tralamazza/.Xresources",
|
105
|
+
"/home/tralamazza/projects/vagrant-aws/README.md",
|
106
|
+
"/home/tralamazza/.zshrc",
|
107
|
+
"/home/tralamazza/.xmonad/xmonad.hs",
|
108
|
+
"/home/tralamazza/projects/vagrant-aws/Gemfile",
|
109
|
+
"/home/tralamazza/projects/vagrant-aws/lib/vagrant-aws/config.rb",
|
110
|
+
"/home/tralamazza/.zprofile",
|
111
|
+
"/home/tralamazza/projects/vagrant-aws/Rakefile",
|
112
|
+
"/home/tralamazza/.xmobarrc",
|
113
|
+
"/home/tralamazza/.vimrc",
|
114
|
+
"/home/tralamazza/projects/vagrant-aws/CHANGELOG.md",
|
115
|
+
"/home/tralamazza/projects/vagrant-aws/vagrant-aws.gemspec",
|
116
|
+
"/home/tralamazza/projects/vagrant-aws/.gitignore"
|
117
|
+
],
|
118
|
+
"find":
|
119
|
+
{
|
120
|
+
"height": 34.0
|
121
|
+
},
|
122
|
+
"find_in_files":
|
123
|
+
{
|
124
|
+
"height": 90.0,
|
125
|
+
"where_history":
|
126
|
+
[
|
127
|
+
""
|
128
|
+
]
|
129
|
+
},
|
130
|
+
"find_state":
|
131
|
+
{
|
132
|
+
"case_sensitive": false,
|
133
|
+
"find_history":
|
134
|
+
[
|
135
|
+
"instance_ready_timeout",
|
136
|
+
"backgroun",
|
137
|
+
"back",
|
138
|
+
"backgroun"
|
139
|
+
],
|
140
|
+
"highlight": true,
|
141
|
+
"in_selection": false,
|
142
|
+
"preserve_case": false,
|
143
|
+
"regex": false,
|
144
|
+
"replace_history":
|
145
|
+
[
|
146
|
+
],
|
147
|
+
"reverse": false,
|
148
|
+
"show_context": true,
|
149
|
+
"use_buffer2": true,
|
150
|
+
"whole_word": false,
|
151
|
+
"wrap": true
|
152
|
+
},
|
153
|
+
"groups":
|
154
|
+
[
|
155
|
+
{
|
156
|
+
"selected": 0,
|
157
|
+
"sheets":
|
158
|
+
[
|
159
|
+
{
|
160
|
+
"buffer": 0,
|
161
|
+
"file": "lib/vagrant-aws/action/run_instance.rb",
|
162
|
+
"semi_transient": false,
|
163
|
+
"settings":
|
164
|
+
{
|
165
|
+
"buffer_size": 8942,
|
166
|
+
"regions":
|
167
|
+
{
|
168
|
+
},
|
169
|
+
"selection":
|
170
|
+
[
|
171
|
+
[
|
172
|
+
1633,
|
173
|
+
1633
|
174
|
+
]
|
175
|
+
],
|
176
|
+
"settings":
|
177
|
+
{
|
178
|
+
"syntax": "Packages/Ruby/Ruby.tmLanguage",
|
179
|
+
"tab_size": 2,
|
180
|
+
"translate_tabs_to_spaces": true
|
181
|
+
},
|
182
|
+
"translation.x": 0.0,
|
183
|
+
"translation.y": 0.0,
|
184
|
+
"zoom_level": 1.0
|
185
|
+
},
|
186
|
+
"type": "text"
|
187
|
+
},
|
188
|
+
{
|
189
|
+
"buffer": 1,
|
190
|
+
"file": "README.md",
|
191
|
+
"semi_transient": false,
|
192
|
+
"settings":
|
193
|
+
{
|
194
|
+
"buffer_size": 7450,
|
195
|
+
"regions":
|
196
|
+
{
|
197
|
+
},
|
198
|
+
"selection":
|
199
|
+
[
|
200
|
+
[
|
201
|
+
888,
|
202
|
+
888
|
203
|
+
]
|
204
|
+
],
|
205
|
+
"settings":
|
206
|
+
{
|
207
|
+
"syntax": "Packages/Markdown/Markdown.tmLanguage",
|
208
|
+
"tab_size": 2,
|
209
|
+
"translate_tabs_to_spaces": true
|
210
|
+
},
|
211
|
+
"translation.x": 0.0,
|
212
|
+
"translation.y": 0.0,
|
213
|
+
"zoom_level": 1.0
|
214
|
+
},
|
215
|
+
"type": "text"
|
216
|
+
}
|
217
|
+
]
|
218
|
+
}
|
219
|
+
],
|
220
|
+
"incremental_find":
|
221
|
+
{
|
222
|
+
"height": 23.0
|
223
|
+
},
|
224
|
+
"input":
|
225
|
+
{
|
226
|
+
"height": 0.0
|
227
|
+
},
|
228
|
+
"layout":
|
229
|
+
{
|
230
|
+
"cells":
|
231
|
+
[
|
232
|
+
[
|
233
|
+
0,
|
234
|
+
0,
|
235
|
+
1,
|
236
|
+
1
|
237
|
+
]
|
238
|
+
],
|
239
|
+
"cols":
|
240
|
+
[
|
241
|
+
0.0,
|
242
|
+
1.0
|
243
|
+
],
|
244
|
+
"rows":
|
245
|
+
[
|
246
|
+
0.0,
|
247
|
+
1.0
|
248
|
+
]
|
249
|
+
},
|
250
|
+
"menu_visible": true,
|
251
|
+
"output.GoSublime-output":
|
252
|
+
{
|
253
|
+
"height": 100.0
|
254
|
+
},
|
255
|
+
"output.MarGo-output":
|
256
|
+
{
|
257
|
+
"height": 100.0
|
258
|
+
},
|
259
|
+
"output.git":
|
260
|
+
{
|
261
|
+
"height": 185.0
|
262
|
+
},
|
263
|
+
"project": "vagrant-aws.sublime-project",
|
264
|
+
"replace":
|
265
|
+
{
|
266
|
+
"height": 42.0
|
267
|
+
},
|
268
|
+
"save_all_on_build": true,
|
269
|
+
"select_file":
|
270
|
+
{
|
271
|
+
"height": 0.0,
|
272
|
+
"selected_items":
|
273
|
+
[
|
274
|
+
],
|
275
|
+
"width": 0.0
|
276
|
+
},
|
277
|
+
"select_project":
|
278
|
+
{
|
279
|
+
"height": 0.0,
|
280
|
+
"selected_items":
|
281
|
+
[
|
282
|
+
],
|
283
|
+
"width": 0.0
|
284
|
+
},
|
285
|
+
"select_symbol":
|
286
|
+
{
|
287
|
+
"height": 0.0,
|
288
|
+
"selected_items":
|
289
|
+
[
|
290
|
+
],
|
291
|
+
"width": 0.0
|
292
|
+
},
|
293
|
+
"settings":
|
294
|
+
{
|
295
|
+
},
|
296
|
+
"show_minimap": false,
|
297
|
+
"show_open_files": false,
|
298
|
+
"show_tabs": true,
|
299
|
+
"side_bar_visible": true,
|
300
|
+
"side_bar_width": 172.0,
|
301
|
+
"status_bar_visible": true,
|
302
|
+
"template_settings":
|
303
|
+
{
|
304
|
+
}
|
305
|
+
}
|
metadata
CHANGED
@@ -1,20 +1,18 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: vagrant-aws
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
5
|
-
prerelease:
|
4
|
+
version: 0.3.0
|
6
5
|
platform: ruby
|
7
6
|
authors:
|
8
7
|
- Mitchell Hashimoto
|
9
8
|
autorequire:
|
10
9
|
bindir: bin
|
11
10
|
cert_chain: []
|
12
|
-
date: 2013-
|
11
|
+
date: 2013-09-02 00:00:00.000000000 Z
|
13
12
|
dependencies:
|
14
13
|
- !ruby/object:Gem::Dependency
|
15
14
|
name: fog
|
16
15
|
requirement: !ruby/object:Gem::Requirement
|
17
|
-
none: false
|
18
16
|
requirements:
|
19
17
|
- - ~>
|
20
18
|
- !ruby/object:Gem::Version
|
@@ -22,7 +20,6 @@ dependencies:
|
|
22
20
|
type: :runtime
|
23
21
|
prerelease: false
|
24
22
|
version_requirements: !ruby/object:Gem::Requirement
|
25
|
-
none: false
|
26
23
|
requirements:
|
27
24
|
- - ~>
|
28
25
|
- !ruby/object:Gem::Version
|
@@ -30,23 +27,20 @@ dependencies:
|
|
30
27
|
- !ruby/object:Gem::Dependency
|
31
28
|
name: rake
|
32
29
|
requirement: !ruby/object:Gem::Requirement
|
33
|
-
none: false
|
34
30
|
requirements:
|
35
|
-
- -
|
31
|
+
- - '>='
|
36
32
|
- !ruby/object:Gem::Version
|
37
33
|
version: '0'
|
38
34
|
type: :development
|
39
35
|
prerelease: false
|
40
36
|
version_requirements: !ruby/object:Gem::Requirement
|
41
|
-
none: false
|
42
37
|
requirements:
|
43
|
-
- -
|
38
|
+
- - '>='
|
44
39
|
- !ruby/object:Gem::Version
|
45
40
|
version: '0'
|
46
41
|
- !ruby/object:Gem::Dependency
|
47
42
|
name: rspec-core
|
48
43
|
requirement: !ruby/object:Gem::Requirement
|
49
|
-
none: false
|
50
44
|
requirements:
|
51
45
|
- - ~>
|
52
46
|
- !ruby/object:Gem::Version
|
@@ -54,7 +48,6 @@ dependencies:
|
|
54
48
|
type: :development
|
55
49
|
prerelease: false
|
56
50
|
version_requirements: !ruby/object:Gem::Requirement
|
57
|
-
none: false
|
58
51
|
requirements:
|
59
52
|
- - ~>
|
60
53
|
- !ruby/object:Gem::Version
|
@@ -62,7 +55,6 @@ dependencies:
|
|
62
55
|
- !ruby/object:Gem::Dependency
|
63
56
|
name: rspec-expectations
|
64
57
|
requirement: !ruby/object:Gem::Requirement
|
65
|
-
none: false
|
66
58
|
requirements:
|
67
59
|
- - ~>
|
68
60
|
- !ruby/object:Gem::Version
|
@@ -70,7 +62,6 @@ dependencies:
|
|
70
62
|
type: :development
|
71
63
|
prerelease: false
|
72
64
|
version_requirements: !ruby/object:Gem::Requirement
|
73
|
-
none: false
|
74
65
|
requirements:
|
75
66
|
- - ~>
|
76
67
|
- !ruby/object:Gem::Version
|
@@ -78,7 +69,6 @@ dependencies:
|
|
78
69
|
- !ruby/object:Gem::Dependency
|
79
70
|
name: rspec-mocks
|
80
71
|
requirement: !ruby/object:Gem::Requirement
|
81
|
-
none: false
|
82
72
|
requirements:
|
83
73
|
- - ~>
|
84
74
|
- !ruby/object:Gem::Version
|
@@ -86,7 +76,6 @@ dependencies:
|
|
86
76
|
type: :development
|
87
77
|
prerelease: false
|
88
78
|
version_requirements: !ruby/object:Gem::Requirement
|
89
|
-
none: false
|
90
79
|
requirements:
|
91
80
|
- - ~>
|
92
81
|
- !ruby/object:Gem::Version
|
@@ -97,62 +86,61 @@ executables: []
|
|
97
86
|
extensions: []
|
98
87
|
extra_rdoc_files: []
|
99
88
|
files:
|
100
|
-
-
|
89
|
+
- vagrant-aws.sublime-project
|
90
|
+
- LICENSE
|
101
91
|
- dummy.box
|
102
|
-
-
|
103
|
-
-
|
104
|
-
-
|
105
|
-
- lib/vagrant-aws/action/
|
92
|
+
- lib/vagrant-aws/action.rb
|
93
|
+
- lib/vagrant-aws/plugin.rb
|
94
|
+
- lib/vagrant-aws/util/timer.rb
|
95
|
+
- lib/vagrant-aws/action/run_instance.rb
|
106
96
|
- lib/vagrant-aws/action/is_created.rb
|
107
|
-
- lib/vagrant-aws/action/
|
108
|
-
- lib/vagrant-aws/action/
|
97
|
+
- lib/vagrant-aws/action/message_will_not_destroy.rb
|
98
|
+
- lib/vagrant-aws/action/terminate_instance.rb
|
109
99
|
- lib/vagrant-aws/action/read_ssh_info.rb
|
110
100
|
- lib/vagrant-aws/action/read_state.rb
|
111
|
-
- lib/vagrant-aws/action/
|
101
|
+
- lib/vagrant-aws/action/connect_aws.rb
|
112
102
|
- lib/vagrant-aws/action/sync_folders.rb
|
113
|
-
- lib/vagrant-aws/action/
|
103
|
+
- lib/vagrant-aws/action/message_not_created.rb
|
104
|
+
- lib/vagrant-aws/action/message_already_created.rb
|
114
105
|
- lib/vagrant-aws/action/timed_provision.rb
|
115
106
|
- lib/vagrant-aws/action/warn_networks.rb
|
116
|
-
- lib/vagrant-aws/
|
107
|
+
- lib/vagrant-aws/provider.rb
|
117
108
|
- lib/vagrant-aws/config.rb
|
118
109
|
- lib/vagrant-aws/errors.rb
|
119
|
-
- lib/vagrant-aws/plugin.rb
|
120
|
-
- lib/vagrant-aws/provider.rb
|
121
|
-
- lib/vagrant-aws/util/timer.rb
|
122
110
|
- lib/vagrant-aws/version.rb
|
123
111
|
- lib/vagrant-aws.rb
|
124
|
-
-
|
112
|
+
- Gemfile
|
113
|
+
- CHANGELOG.md
|
114
|
+
- spec/vagrant-aws/config_spec.rb
|
125
115
|
- locales/en.yml
|
126
|
-
- Rakefile
|
127
116
|
- README.md
|
128
|
-
-
|
117
|
+
- Rakefile
|
118
|
+
- example_box/metadata.json
|
119
|
+
- example_box/README.md
|
129
120
|
- vagrant-aws.gemspec
|
121
|
+
- vagrant-aws.sublime-workspace
|
130
122
|
- .gitignore
|
131
123
|
homepage: http://www.vagrantup.com
|
132
124
|
licenses: []
|
125
|
+
metadata: {}
|
133
126
|
post_install_message:
|
134
127
|
rdoc_options: []
|
135
128
|
require_paths:
|
136
129
|
- lib
|
137
130
|
required_ruby_version: !ruby/object:Gem::Requirement
|
138
|
-
none: false
|
139
131
|
requirements:
|
140
|
-
- -
|
132
|
+
- - '>='
|
141
133
|
- !ruby/object:Gem::Version
|
142
134
|
version: '0'
|
143
|
-
segments:
|
144
|
-
- 0
|
145
|
-
hash: 2792684952682932996
|
146
135
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
147
|
-
none: false
|
148
136
|
requirements:
|
149
|
-
- -
|
137
|
+
- - '>='
|
150
138
|
- !ruby/object:Gem::Version
|
151
139
|
version: 1.3.6
|
152
140
|
requirements: []
|
153
141
|
rubyforge_project: vagrant-aws
|
154
|
-
rubygems_version:
|
142
|
+
rubygems_version: 2.0.7
|
155
143
|
signing_key:
|
156
|
-
specification_version:
|
144
|
+
specification_version: 4
|
157
145
|
summary: Enables Vagrant to manage machines in EC2 and VPC.
|
158
146
|
test_files: []
|