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:
         
     |