vagrant-aws-winrm 0.0.1 → 0.0.2
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.
- checksums.yaml +4 -4
- data/lib/vagrant-aws-winrm/capability.rb +24 -8
- data/lib/vagrant-aws-winrm/plugin.rb +30 -0
- data/lib/vagrant-aws-winrm/version.rb +1 -1
- metadata +9 -9
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA1:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 733d38beabc57d94aa97a155faea425928836425
|
|
4
|
+
data.tar.gz: aca4b5492132e3559d6d5f5c7a3fb74804bcc656
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 59dc92c07945d9c14600b0ce05b37493f5a332368cef0968a171c93d724176b29ca3274a7cd80b59a8f8c92094e2cd18abdc793e89a96dd56e6cbcd4ff156f58
|
|
7
|
+
data.tar.gz: 8c972189f60eec62f95ef1dd81b4802f6047d78f7efa2c83d35ef56ba865cfddd7c07f84f68575dacb468d6ad725c905cd17eadbf2fe691b5bbc36b7075b4e87
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
require "log4r"
|
|
1
2
|
require "aws-sdk"
|
|
2
3
|
|
|
3
4
|
module VagrantPlugins
|
|
@@ -5,33 +6,48 @@ module VagrantPlugins
|
|
|
5
6
|
module WinRM
|
|
6
7
|
class Capability
|
|
7
8
|
def self.winrm_info(machine)
|
|
9
|
+
logger = Log4r::Logger.new("vagrant_aws_winrm::capability::winrm_info")
|
|
10
|
+
|
|
8
11
|
if machine.config.winrm.password == :aws
|
|
9
|
-
machine.ui.info('Getting WinRM password from AWS')
|
|
12
|
+
machine.ui.info('Getting WinRM password from AWS...')
|
|
10
13
|
|
|
11
14
|
# AWS connection info
|
|
12
15
|
access_key_id = machine.provider_config.access_key_id
|
|
13
16
|
secret_access_key = machine.provider_config.secret_access_key
|
|
14
17
|
credentials = ::Aws::Credentials.new(access_key_id, secret_access_key)
|
|
15
18
|
region = machine.provider_config.region
|
|
19
|
+
region_config = machine.provider_config.get_region_config(region)
|
|
20
|
+
endpoint = region_config.endpoint
|
|
21
|
+
|
|
22
|
+
options = {
|
|
23
|
+
region: region,
|
|
24
|
+
credentials: credentials
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
# Account for custom endpoints (e.g. OpenStack)
|
|
28
|
+
options[:endpoint] = endpoint if endpoint
|
|
16
29
|
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
30
|
+
logger.info("Getting password data from AWS...")
|
|
31
|
+
logger.info(" -- Region: #{region}")
|
|
32
|
+
logger.info(" -- Endpoint: #{endpoint}") if endpoint
|
|
33
|
+
logger.info(" -- Instance ID: #{machine.id}")
|
|
21
34
|
|
|
22
|
-
|
|
23
|
-
ec2 = Aws::EC2::Client.new(region: region, endpoint: endpoint, credentials: credentials)
|
|
35
|
+
ec2 = Aws::EC2::Client.new(options)
|
|
24
36
|
password_data = ec2.get_password_data({ instance_id: machine.id }).password_data
|
|
25
37
|
password_data_bytes = Base64.decode64(password_data)
|
|
26
38
|
|
|
27
39
|
# Try to decrypt the password data using each one of the private key files
|
|
28
40
|
# set by the user until we hit one that decrypts successfully
|
|
29
41
|
machine.config.ssh.private_key_path.each do |private_key_path|
|
|
30
|
-
|
|
42
|
+
private_key_path = File.expand_path private_key_path
|
|
31
43
|
|
|
44
|
+
logger.info("Decrypting password data using #{private_key_path}")
|
|
45
|
+
rsa = OpenSSL::PKey::RSA.new File.read private_key_path
|
|
32
46
|
begin
|
|
33
47
|
machine.config.winrm.password = rsa.private_decrypt password_data_bytes
|
|
48
|
+
logger.info("Successfully decrypted password data using #{private_key_path}")
|
|
34
49
|
rescue OpenSSL::PKey::RSAError
|
|
50
|
+
logger.warn("Failed to decrypt password data using #{private_key_path}")
|
|
35
51
|
next
|
|
36
52
|
end
|
|
37
53
|
|
|
@@ -14,9 +14,39 @@ module VagrantPlugins
|
|
|
14
14
|
DESC
|
|
15
15
|
|
|
16
16
|
provider_capability(:aws, :winrm_info) do
|
|
17
|
+
setup_logging
|
|
18
|
+
|
|
17
19
|
require_relative 'capability'
|
|
18
20
|
VagrantPlugins::AWS::WinRM::Capability
|
|
19
21
|
end
|
|
22
|
+
|
|
23
|
+
def self.setup_logging
|
|
24
|
+
require "log4r"
|
|
25
|
+
|
|
26
|
+
level = nil
|
|
27
|
+
begin
|
|
28
|
+
level = Log4r.const_get(ENV["VAGRANT_LOG"].upcase)
|
|
29
|
+
rescue NameError
|
|
30
|
+
# This means that the logging constant wasn't found,
|
|
31
|
+
# which is fine. We just keep `level` as `nil`. But
|
|
32
|
+
# we tell the user.
|
|
33
|
+
level = nil
|
|
34
|
+
end
|
|
35
|
+
|
|
36
|
+
# Some constants, such as "true" resolve to booleans, so the
|
|
37
|
+
# above error checking doesn't catch it. This will check to make
|
|
38
|
+
# sure that the log level is an integer, as Log4r requires.
|
|
39
|
+
level = nil if !level.is_a?(Integer)
|
|
40
|
+
|
|
41
|
+
# Set the logging level on all "vagrant" namespaced
|
|
42
|
+
# logs as long as we have a valid level.
|
|
43
|
+
if level
|
|
44
|
+
logger = Log4r::Logger.new("vagrant_aws_winrm")
|
|
45
|
+
logger.outputters = Log4r::Outputter.stderr
|
|
46
|
+
logger.level = level
|
|
47
|
+
logger = nil
|
|
48
|
+
end
|
|
49
|
+
end
|
|
20
50
|
end
|
|
21
51
|
end
|
|
22
52
|
end
|
metadata
CHANGED
|
@@ -1,41 +1,41 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: vagrant-aws-winrm
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 0.0.
|
|
4
|
+
version: 0.0.2
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Rafael Goodman
|
|
8
8
|
autorequire:
|
|
9
9
|
bindir: bin
|
|
10
10
|
cert_chain: []
|
|
11
|
-
date: 2015-11-
|
|
11
|
+
date: 2015-11-13 00:00:00.000000000 Z
|
|
12
12
|
dependencies:
|
|
13
13
|
- !ruby/object:Gem::Dependency
|
|
14
14
|
name: aws-sdk
|
|
15
15
|
requirement: !ruby/object:Gem::Requirement
|
|
16
16
|
requirements:
|
|
17
|
-
- -
|
|
17
|
+
- - ~>
|
|
18
18
|
- !ruby/object:Gem::Version
|
|
19
19
|
version: '2'
|
|
20
20
|
type: :runtime
|
|
21
21
|
prerelease: false
|
|
22
22
|
version_requirements: !ruby/object:Gem::Requirement
|
|
23
23
|
requirements:
|
|
24
|
-
- -
|
|
24
|
+
- - ~>
|
|
25
25
|
- !ruby/object:Gem::Version
|
|
26
26
|
version: '2'
|
|
27
27
|
- !ruby/object:Gem::Dependency
|
|
28
28
|
name: rake
|
|
29
29
|
requirement: !ruby/object:Gem::Requirement
|
|
30
30
|
requirements:
|
|
31
|
-
- -
|
|
31
|
+
- - ~>
|
|
32
32
|
- !ruby/object:Gem::Version
|
|
33
33
|
version: '10.0'
|
|
34
34
|
type: :development
|
|
35
35
|
prerelease: false
|
|
36
36
|
version_requirements: !ruby/object:Gem::Requirement
|
|
37
37
|
requirements:
|
|
38
|
-
- -
|
|
38
|
+
- - ~>
|
|
39
39
|
- !ruby/object:Gem::Version
|
|
40
40
|
version: '10.0'
|
|
41
41
|
description: Facilitates using the AWS-EC2-provided Administrator password as the
|
|
@@ -46,7 +46,7 @@ executables: []
|
|
|
46
46
|
extensions: []
|
|
47
47
|
extra_rdoc_files: []
|
|
48
48
|
files:
|
|
49
|
-
-
|
|
49
|
+
- .gitignore
|
|
50
50
|
- Gemfile
|
|
51
51
|
- LICENSE.txt
|
|
52
52
|
- README.md
|
|
@@ -66,12 +66,12 @@ require_paths:
|
|
|
66
66
|
- lib
|
|
67
67
|
required_ruby_version: !ruby/object:Gem::Requirement
|
|
68
68
|
requirements:
|
|
69
|
-
- -
|
|
69
|
+
- - '>='
|
|
70
70
|
- !ruby/object:Gem::Version
|
|
71
71
|
version: '0'
|
|
72
72
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
|
73
73
|
requirements:
|
|
74
|
-
- -
|
|
74
|
+
- - '>='
|
|
75
75
|
- !ruby/object:Gem::Version
|
|
76
76
|
version: '0'
|
|
77
77
|
requirements: []
|